vps交流

[经验] ffmpeg批量转格式为mp3


小小的记录一下

文件名有空格时,需要把IFS改一下,不然ffmpeg会用空格分割,当成多个文件

  1. SAVEIFS=$IFS
  2. IFS=$(echo -en "nb")

复制代码

ffmpeg转mp3的命令,-i audio.wav中的audio.wav是输入文件,audio.mp3是输出的文件

  1. ffmpeg -i audio.wav -acodec libmp3lame audio.mp3

复制代码

假设在当前目录下有多个WAV文件
例如1dd.wav 2ff.wav 3gg.wav

遍历它们,并且获得它们的文件名,但不包含.wav,用作输出的文件名

basename命令

  1. [email protected]:~# basename -s .wav 1dd.wav
  2. 1dd
  3. [email protected]:~# basename -s .wav 2ff.wav
  4. 2ff

复制代码

组合一下这些命令

  1. SAVEIFS=$IFS
  2. IFS=$(echo -en "nb")
  3. for file in ./*;do
  4.         filetype=".wav"
  5.         mp3name="`basename -s $filetype $file`.mp3"
  6.         ffmpeg -i "${file}" -acodec libmp3lame ${mp3name}
  7. done

复制代码

完成之后,1dd.wav 2ff.wav 3gg.wav转完输出1dd.mp3 2ff.mp3 3gg.mp3

也可以输出在新的目录下,像这样

  1. outputdir=./output
  2. mkdir -p outputdir
  3. SAVEIFS=$IFS
  4. IFS=$(echo -en "nb")
  5. for file in ./*;do
  6.         filetype=".wav"
  7.         mp3name="`basename -s $filetype $file`.mp3"
  8.         ffmpeg -i "${file}" -acodec libmp3lame ${outputdir}/${mp3name}
  9. done

复制代码

完成之后,1dd.wav 2ff.wav 3gg.wav转完输出./output/1dd.mp3 ./output/2ff.mp3 ./output/3gg.mp3

记一下,免得忘了又要去搜

奇怪,我用python的话,空格没问题,但是英文的半括号会出错,只能把括号转成中文的
技术贴顶一下