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>
posted @ 2020-04-26 15:21  Siberia怒风  阅读(808)  评论(0)    收藏  举报