积木别倒

  • 首页
  • 科学上网
  • 机场推荐
  • 网站搭建
  • 网站分享
  • 其他
记录、分享
小白折腾之路
  1. 首页
  2. 其他
  3. 正文

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

16 11 月, 2020 2281点热度 0人点赞 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 目前支持1920x1080分辨率,上传时无需降低分辨率。

切割合并视频文件

//截取从头开始的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'

创建list.txt 需要使用Atom之类的文本编辑器,微软的自带的TXT文本编辑器会报错。

截取视频部分导出为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

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: FFmpeg
最后更新:23 3 月, 2022

Jimu

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Telegram
📢 频道:积木别倒
🏄 群组:翻墙交流群
便捷工具
🚀 Speedtest
💨 Ping 测速
🧱 IP 被墙检测
🧱 域名被墙检测
归档
  • 2025 年 1 月
  • 2024 年 9 月
  • 2024 年 4 月
  • 2023 年 3 月
  • 2022 年 8 月
  • 2022 年 7 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 10 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 1 月
  • 2020 年 11 月
  • 2020 年 10 月
  • 2020 年 8 月
  • 2020 年 7 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2020 年 4 月
  • 2020 年 3 月
  • 2019 年 9 月
  • 2019 年 8 月
  • 2019 年 4 月
  • 2019 年 3 月

COPYRIGHT © 2025 jimubiedao.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang