FFMPEG 笔记

截取视频

ffmpeg -i abc.mp4 -ss 3:13 -to 2:41:13 -c copy output.mp4
  • -i 输入文件
  • -ss 开始时间
  • -to 结束时间
  • -c copy 直接截取

这样的截取方式,如果源视频的关键帧间隙很大,可能出现因缺失第一个关键帧导致的黑屏。此时,可以考虑用 -c:v libx264 之类的参数重新编码。

合并

ffmpeg -f concat -safe 0 -i files.txt -c copy -y output.wav

其中,files.txt 是所有待合并的文件,以以下的形式记录:

file /path/to/wav/1.wav
file /path/to/wav/2.wav
....

转换格式

转换格式很简单,有输入有输出,ffmpeg 会根据它们的扩展名自动选择合适的编码器,生成通用性最好的目标文件。比如 wav 2 mp3:

ffmpeg -i a.wav a.mp3

如果需要截取或者使用特定的编码器,那么就按照一般的用法添加参数即可,比如 flv 2 mp4:

ffmpeg -i 1.flv -c:v libx264 -crf 19 -strict experimental 1.mp4

其中,-c:v 是“视频编码器”的意思,音频编码器就是 -c:acrf 是质量,最小越好,取值范围是 18 -28。类似的,rm 2 MP4:

ffmpeg -i ss.rm -c:v libx264 -c:a aac -b:a 32k -strict experimental ss.avi

在 Ubuntu 下不能使用 libfaac,只能使用 aac。还要调整级别,-strict -2 不行,必须是 -strict experimental

转换 iPad 支持的视频

ffmpeg -i input.mkv -c:v libx264 -profile:v main -level 3.1 -preset medium -crf 23 -x264-params ref=4 -c:a copy -movflags +faststart output.mp4

不知道为啥,直接 .mp4 或者 -c:v libx264 都不行,必须用上面这个。

缩放

ffmpeg -i input.mp4 -vf scale=320:-1 -strict -2 output.mp4

好吧,这次 -strict -2 好使了。如果报错,可以试着把 -1 改成 -2

裁剪画面

ffmpeg -i input.mp4 -filter:v "crop=500:1080:1420:0" output.mp4

crop 的参数为:宽、高、x、y。

调整声音

有些视频声音太小,需要调整一下:

ffmpeg -i input.mp4 -filter:a "volume=N" output.mp4

其中,N 可以是百分比,比如 1.0(一倍,不变),2.0(两倍);或者是加减的分贝,比如 10dB(增加10分贝),-20dB(减少20分贝)。不过根据我实地测试,调整后的视频的平均音量并不完全是调整的分贝。

获取平均音量:

ffmpeg -i input.mp4 -filter:a volumedetect -f null /dev/null 

提取声音

# 不转码,只提取声音,很快
ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
# 转码,便于四处播放
ffmpeg -i sample.avi -q:a 0 -map a sample.mp3

如果您觉得文章内容对您有用,不妨支持我创作更多有价值的分享:


已发布

分类

来自

标签:

评论

《“FFMPEG 笔记”》 有 1 条评论

  1. […] 其它 FFMPEG 操作笔记在:FFMPEG 笔记。 […]

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据