无损压缩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
文章评论