工作中经常需要使用FFMpeg的一些命令作为分析问题的辅助,FFMpeg的参数太多,在这里记录以作备忘。
1、获取视频的video es数据
ffmpeg -i in.mp4 -an -vcodec copy out.h264
2、获取视频的yuv数据
ffmpeg -i in.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv
3、播放yuv数据(必须声明video_size)
ffplay -f rawvideo -video_size 1920x1080 -pixel_format yuv420p in.yuv
4、分析每一个pkt
ffprobe -select_streams v -show_packets -print_format xml in.mp4 > video_pkt.xml
5、分析每一个frame
ffprobe -select_streams v -show_frames -print_format xml in.mp4 > video_frame.xml
6、h264 profile level转换
ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4
7、播放pcm数据
ffplay -f s16le -ar 44100 -ac 2 raw.pcm
8、将mp4的moov box从尾部移到头部
ffmpeg -i input.mp4 -movflags faststart output.mp4
9、截取视频片段
ffmpeg -i input.mp4 -ss 00:05 -t 10 output.mp4
10、解码视频帧保存为图片
ffmpeg -i input.mp4 -f image2 -ss 00:00:01 -vframes 1 output.jpg
11、修改分辨率和码率
ffmpeg -i input.mp4 -b:v 1000k -s 1920x1080 output.mp4
12、获取视频VMAF
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -