FFmpeg之ffprobe查看流信息

今天遇到一个问题,用短视频sdk转码后视频变模糊了,自身知识点受限,得到大神提示后,立马去查看了一番,原来转码后视频B-frame丢失了

  • profile=baseline的视频不包含B帧
  • 同等码率的视频B帧越多,清晰度越高,但是编码与解码的复杂度也是越高,所以需要合理的设置B帧,尤其是衡量清晰度与码率的时候

统计视频I、B、P帧

ffprobe -v quiet -show_frames transcoded123.mp4 | grep "pict_type=B" | wc -l
alt
控制台输出0,表示这个视频没有B帧,如果要查看I帧和P帧,修改pict_type=I或者P即可
如果需要看关键帧,grep “key_frame=1”

插入B帧

ffmpeg -i transcoded123.mp4 -c:v libx264 -x264opts "bframes=3:b-adapt=0" -g 50 -sc_threshold 0 insertBframe.mp4
在transcoded123.mp4视频中,设置gop长度为50,每两个P帧中插入一个B帧,并且设置切换场景不插入关键帧
接下来继续看一下插入关键帧后的视频有多少个B帧
alt
注意:这里虽然插入了B帧,仍然不能改善原视频transcode123.mp4的画质,基础建设决定上层建筑

json格式查看视频的详细信息

ffprobe -v quiet -show_format -show_streams -print_format json hotoktest.mp4
会以json格式输出"streams"音视频编码信息,还有“format”音视频封包信息

ffprobe其他常用options解析

  • -show_packets:[PACKET]标签的多媒体信息
  • -show_data: packets多媒体数据
  • -show_format:多媒体封装格式
  • -show_frames: 视频帧信息
  • -print_format: 信息输出格式,支持xml、csv、json、flat、ini
  • -select_streams: 参数可以是a、v、s分别表示只查看音频、视频、字幕

你可能感兴趣的:(音视频)