首页 > 编程知识 正文

ffmpeg获取视频流

时间:2023-05-04 01:09:01 阅读:278307 作者:763

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

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

ffprobe -v quiet -show_frames transcoded123.mp4 | grep "pict_type=B" | wc -l

控制台输出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,I帧和B帧之间插入3个B帧,并且设置切换场景不插入关键帧

*** 参数释意 ***

bframes :设定I帧与P帧之间的最大B帧数量,范围0~16b-adapt : B帧自适应方法,默认为1
0: Disabled
1: Fast
2: Optimal (slow with high --bframes)-sc_threshold :转场时插入B帧-g 设置GOP,每50帧插入一个关键帧

接下来继续看一下插入关键帧后的视频有多少个B帧

注意:这里虽然插入了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分别表示只查看音频、视频、字幕

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。