最新消息:

几个 FFmpeg 常用视频处理命令一览

其他 积木 79浏览 0评论

无损压缩MP4视频文件

压缩后的mp4文件支持telegram直接观看。

ffmpeg -i input.mp4 -vcodec h264 -acodec aac output.mp4
//压缩到更小文件
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4
//保留更好的质量
ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4

crf参数设置视频质量,影响文件大小。crf数值越低视频质量越高,常见的值为18-28,默认的值为23。 以 -vcodec libx265 -crf 28 命名压制的mp4视频所占空间明显变小且肉眼可见清晰度基本没有差别,如一个5G左右大小的视频可以压制到1G比左右。

降低视频分辨率

降低分辨率后同样支持telegram内置播放器直接观看。

ffmpeg -i input.mp4 -vf scale=-2:720 -c:v libx264 -crf 20 -preset slow -c:a copy output.mp4

假如原视频的分辨率为 1920×1080,降低文件大小最简单的办法是将其压缩成一个分辨率较低的版本,即 1280×720,使用 scale 视频滤镜来缩放视频。-vf scale=-2:720 会自动计算对应的横向分辨率(需为 2 的倍数,因此为 -2 ),源文件音频编码保持不变,因此设为 copy 即可。

降低分辨率后即使在移动端观看视觉效果也差很多,不推荐降低分辨率的方式。Telegram 目前支持1920×1080分辨率,上传时无需降低分辨率。

切割合并视频文件

//截取从头开始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i output.mp4 -vcodec copy -acodec copy split1.mp4
//截取从30s开始的30s
ffmpeg -ss 00:00:30 -t 00:00:30 -i output.mp4 -vcodec copy -acodec copy split2.mp4
//进行视频的合并
ffmpeg -f concat -i list.txt -c copy concat.mp4

合并视频文件时,在需要合并的视频同级目录下创建 list.txt,并写好需要合并的视频文件目录。
file ‘split1.mp4’
file ‘split2.mp4’

截取视频部分导出为GIF动图

//从视频中第二秒开始,截取时长为3秒的片段转化为 gif
ffmpeg -t 3 -ss 00:00:02 -i small.webm small-clip.gif
//压缩gif文件大小
ffmpeg -i small-clip.gif -vf scale=500:-1 -t 10 -r 10 image.gif

ffmpeg 直接导出的gif文件一般都比较大,微信这些社交软件通常都无法发送这个大的gif文件,Telegram 中大型GIF也只能以文件形式预览,无法在会话中直接查看,所以在移动端使用GIF还需进一步压缩。

iOS 可以使用 GIF Toaster 压缩GIF,安卓系统可以使用 GIF Maker

为MP4 视频添加字幕

添加字幕后也支持Telegram直接观看。

ffmpeg将mkv直接转换为mp4时会丢失字幕,可以选择手动添加字幕。

命令

ffmpeg -i input.mp4 -vf ass = subtitles.ass output.mp4

如果字幕格式为srt,需先转换为ass

ffmpeg -i subtitles.srt subtitles.ass

 

将mkv转为mp4 不丢失字幕

软字幕
在文件中作为单独流包含的字幕。 播放器可以打开/关闭它们,并且不需要对视频流进行重新编码。

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

播放器对MP4中的定时文本软字幕的支持可能很差。

Telegram 自带播放器中无法正常显示字幕,Windows PotPlayer则可以正常显示字幕。

硬字幕
硬字幕被“刻录”到视频中,因此必须对视频进行重新编码。

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

若该MKV 包含多个字幕流,从该文件选择第二字幕流

ffmpeg -i input.mkv -vf subtitles=input.mkv:si=2 output2.mp4

FFmpeg 官方Wiki页面:https://trac.ffmpeg.org/wiki

macOS 下 FFmpeg 视频转码入门及进阶使用心得:https://www.v2ex.com/t/432359

相关链接:

https://unix.stackexchange.com/questions/28803/how-can-i-reduce-a-videos-size-with-ffmpeg

https://superuser.com/questions/933264/getting-the-smallest-video-with-same-quality-how-to-with-ffmpeg

http://siwei.me/blog/posts/ffmpeg-useful-commands

http://note.rpsh.net/posts/2015/04/21/mac-osx-ffmpeg-mp4-gif-convert/

https://www.bluraycopys.com/zh-CN/resource/ffmpeg-convert-mkv-to-mp4.html

https://superuser.com/questions/932730/ffmpeg-mkv-to-mp4-conversion-loses-subtitles
https://ffmpeg.org/ffmpeg-filters.html#subtitles-1

转载请注明:积木别倒 » 几个 FFmpeg 常用视频处理命令一览

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址