ffmpeg 是一款使用方便的音视频编辑软件,我们可以用它来裁切、拼接、转码输出到其他类型的音视频文件。本文列举一些常用的操作命令。
Mac/Linux 下批量转换
Mac/Linux 系统下,可以使用 Shell 脚本完成批量任务。
例子:下面的 shell 脚本可以批量转换 m4a 格式到 mp3:
# convert.sh
for i in *.m4a ; do
ffmpeg -i "$i" -acodec libmp3lame "${i%.*}.mp3"
done
脚本执行后,当前目录下所有以 .m4a
结尾的文件都被转化为同名的 .mp3
。其中 acodec
参数是 “指定音频编解码器” 的意思,这里使用 lame 插件压缩 mp3
Windows 下批量转换
Window 系统下,可以使用批处理文件(batch file)完成批量任务。
例子:下面的批处理文件用于批量转换 DSD 格式文件到 mp3,并使用 lame 的 0 级 压缩质量 :
REM convert.bat
@echo off
for /r %%f in (*.dsd) do ffmpeg -i "%%f" -acodec libmp3lame -aq 0 "%%~nf.mp3"
如果要转换 *.daf
格式,只要把上面文件中的 (*.dsd)
改为 (*.daf)
ffmpeg 使用的时间格式
在 ffmpeg 的命令行中,接受 两种时间格式:
- 时分秒,比如: 00:01:05
- 秒,比如:-5
去掉开头
去掉文件的开头部分,可以使用 -ss
或者 -sseof
参数开关。
以开头为参考点
使用 -ss
参数置于输出文件路径之前,参数值表示新的起点位置,用于改变输出文件的相对输入文件的开始位置:
$ ffmpeg -i infile -acodec copy -ss 00:00:05 outfile
上面这个命令将 infile
转换格式到 outfile
,同时将开始位置移动到第5秒钟位置,等于裁掉 infile
前面的5秒钟。
以结尾为参考点
还可以用 -sseof
参数相对文件末尾指定开始时间,用负值时间表示向前移动。
$ ffmpeg -i infile -acodec copy -sseof -25 outfile
上面这个命令将 infile
转换格式到 outfile
,同时将开始位置移动到结束前的25秒钟,等于只保留最后25秒钟。
上面例子中的 -acodec copy
表示仅复制,不进行编解码。
去掉末尾
指定末尾的定位
使用 -to
参数置于输出文件路径之前,用于改变输出文件的结束位置:
$ ffmpeg -i infile -acodec copy -to 00:20:00 outfile
上面这个例子将 infile
转换格式到 outfile
,同时将 outfile
的结束位置设定为 infile
的20秒位置。
指定输出时长
使用 -t
参数置于输出文件路径之前,用于指定输出文件的总长度:
$ ffmpeg -i infile -acodec copy -t 00:19:55 outfile
上面这个例子将 infile
转换格式到 outfile
,同时将 outfile
的总长度设定为19分55秒。
ffmpeg 的特点
ffmpeg 在 自己的网站 上将自己的特点总结为:
我把它大致翻译为:
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/ffmpeg/ ,且不得用于商业用途。