视频
提取ES流
ffmpeg -i 1.ts -vcodec copy -an -f rawvideo es.raw
若输入文件为MP4 + H264,需要加-vbsf h264_mp4toannexb选项(H265为 -vbsf hevc_mp4toannexb ),将AVCC(HVCC)格式转为Annex B
ffmpeg -i 1.mp4 -vcodec copy -an -f rawvideo -vbsf h264_mp4toannexb es.raw
添加封面
不指定封面格式默认为png
ffmpeg -i in.mp3 -i picPath -map 0 -map 1 -c:a copy -id3v2_version 3 -disposition:v:1 attached_pic out.mp3
截取一段时间
ffmpeg -i input_file -c copy -ss 00:00:00 -to 00:00:15 output_file
-ss 为开始时间 -to为结束时间 -c copy 表示不重新编,这样会快一点
注意:建议不改变文件后缀,如果更改后缀后无法播放,去掉 -c copy选项重新编码,特别是在MP4/mov和其他格式间转换时,主要是因为MP4/MOV采用的是AVCC(HVCC)格式ES流,而其它的封装格式一般是使用Annex B格式ES流
播放YUV,RGB数据
ffplay -pixel_format argb -video_size 3840*2160 -x 1280 -y 720
ffplay -pixel_format yuv420p -video_size 3840*2160 -x 1280 -y 720
-pixel_format 指定像素格式, -video_size指定数据源宽高,-x,-y指定显示窗口大小,默认与数据源像素大小一致,太大时会超出屏幕,不方便观察,可以用这两个参数缩放
ffmpeg -pix_fmts | findstr rgb 可以查看支持的rgb像素格式,yuv类似
指定帧率使用 -framerate ,例如 -framerate 30,即显示帧率为30
音频
添加音轨
ffmpeg -i in.mp4 -i in.mp3 -map 0 -map 1:0 -c copy out.mp4
字幕
增加字幕流
ffmpeg -i video.avi -i sub.ass -map 0:0 -map 0:1 -map 1 -c copy video.mkv
提取字幕流
提取字幕文本(不含时间戳信息)
-f rawvideo 表示提取原始数据
ffmpeg -i output.mkv -map 0:s:0 -an -vn -c:s copy -f rawvideo -map 0:s sub2.txt
提取为ass字幕
若需转换为其他格式,直接更改后缀即可,例如out.srt
ffmpeg -i output.mkv -map 0:s:0 -an -vn -c:s copy out.ass