FFmpeg常用指令总结
1. 简单的视频流和音频流串流
ffmpeg -i <video> -i <audio> output.mp4
示例:
ffmpeg -i input.mp4 -i input.m4a output.mp4
2. 对数字信号传输得到的1080i视频进行反交错处理(针对ts文件)
ffmpeg -i <video> -s <WxH> -deinterlace output.mp4
在做反交错处理前,最好先确认当前输入的视频帧大小与想要的帧大小是否一致,如若不一致,则需要添加调整帧大小的-s参数,以及目标帧大小
否则,只是反交错处理得到的视频帧大小仍不是我们想要的:

这里我需要将 1440x1080i的视频 反交错转换为1920x1080p的视频,可以使用下方的命令:
ffmpeg -i input.ts -vcodec h264 -s 1920x1080 -deinterlace -acodec copy output.mp4
3. 对视频进行转码
Q. 为什么我用IDM插件后油管上下载到的是MKV格式文件?
A: youtube的话使用的视频编码格式是VP90,音频编码格式是OPUS,而支持这两种编码的封装容器一般会用到更加灵活的MKV格式,MP4的话是无法支持的
ffmpeg -i <video> -vcodec h264 -crf 22 -acodec aac output.mp4
4. 视频剪切
用下方的FFmpeg命令进行视频剪切,输出视频的视频流与音频流是同步的
ffmpeg -ss <start_time> -i <video> -to <end_time> -c copy output.mp4
可能是aegisub的原因,如果是基于视频进行打轴的话,得出的文本时间戳是正确的
而基于音频进行打轴的话,视频流会快于音频流
也就是说,如果想要打K轴的话,视频的切分需要通过其它软件才可以了
已解决 从github主页上拉取最新分支的Aegisub,不要用Vmoe汉化的Aegisub官网或者Aegisub官网上给的stable版本
5. 合并多个视频
按顺序将需要合并的文件以下述的格式写入list.txt中
file '1.mp4'
file '2.mp4'
示例:
file '42-51.mp4'
file '32-41.mp4'
file '22-31.mp4'
file '12-21.mp4'
file '4-11.mp4'
file '1-3.mp4'
然后在命令行中再敲入下述命令:
ffmpeg -f concat -i list.txt -c copy output.mp4
6. 添加字幕
ffmpeg -i <video> -vf subtitles='<ass_file>' -vcodec h264 -crf 22 -acodec copy output.mp4
-vf 用来给视频(video)添加一个滤镜(filter),字幕也是一种滤镜哦
7. 添加字幕的同时添加水印图片
ffmpeg -i <video> -i <LOGO> -filter_complex 'overlay=x=0:y=0,subtitles=<ass_file>' output.mp4
有关overlay中图片放置的位置参数,可以参考下图:

W代表整张画幅的宽,H代表整张画幅的高,w代表水印图片的宽,h代表水印图片的高
8. 视频流推送
如果是推送到RTMP地址的话,最后只能封装进FLV容器内
ffmpeg -i <.m3u8文件> -c copy -acodec copy -f flv "rtmp://<rtmp地址>"
9. 解封装
ffmpeg -i <path\to\mp4> -vcodec copy -bsf h264_mp4toannexb -f h264 <path\to\h264>
为了不忘记生活,我会时常记笔记的

浙公网安备 33010602011771号