每次我运行这个脚本它都不起作用。我得到输出 bash: command not found
我运行 bash -x 来查看问题所在,但我不明白错误
bash -x mp3towav.sh
+ for f in '*.mp3'
+ ffmpeg -i '' -acodec pcm_s16le -ac 1 -ar .wav
ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Trailing options were found on the commandline.
: No such file or directory
脚本是这个
1 #!/bin/bash
2 for f in *.mp3; do ffmpeg -i "$file" -acodec pcm_s16le -ac 1 -ar "${file%.mp3}".wav;done
在运行更正后的代码时,我仍然会收到以下错误:
ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Trailing options were found on the commandline.
Input #0, mp3, from 'hiraeth [ep].mp3':
Duration: 00:23:39.36, start: 0.025057, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
Metadata:
encoder : LAME3.99r
Side data:
replaygain: track gain - -4.100000, track peak - unknown, album gain - unknown, album peak - unknown,
At least one output file must be specified
最佳答案
解决方案当然在 codeforester 的评论中:
#!/bin/bash
for file in *.mp3; do
ffmpeg -i "$file" -acodec pcm_s16le -ac 1 -ar 44100 "${file%.mp3}".wav
done
(每条评论加 44100 LordNeckbeard)
一些提示:
1) 如果您将脚本拆分为多行,则更容易发现此类错误。
2) 运行
bash -x
时不要过分关注错误;它在输出上给出命令。那是为了什么。在这种情况下:+ ffmpeg -i '' -acodec pcm_s16le -ac 1 -ar .wav
从这一行得出的结论是 ffmpeg 使用
''
运行。作为输入文件和.wav
作为输出。
关于bash - 如何使用 ffmpeg 工作获取 bash 脚本以将 mp3 转换为 wav?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433995/