基于ffmpeg的播放器起播延迟优化

本文探讨了基于ffmpeg的播放器在起播延迟方面的优化问题,重点关注了av_read_frame()和avcodec_decode_video2()等函数的优化可能性。目前,probesize的设置成为了一个可调整的参数,允许在初始化播放器时由外部进行设定,以减少延迟。
一个视频的播放,播放器的执行步骤大致如下:读取原始数据、解复用、解码、显示。对于vlc和ijk播放器的编解码部分都是使用ffmpeg,在这里以开源项目ijkplayer为例分析播放器在读取原始数据后的解码执行步骤:
1. avformat_open_input()该函数用于打开多媒体数据并且获得一些相关的信息,声明位置libavformat\avformat.h,函数执行成功的话,其返回值大于等于0。该函数调用成功之后会对结构体AVFormatContext进行一些处理。
   int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)
    ps:函数调用成功之后处理过的AVFormatContext结构体。
    file:打开的视音频流的URL。
    fmt:强制指定AVFormatContext中AVInputFormat的。这个参数一般情况下可以设置为NULL,这样FFmpeg可以自动检测AVInputFormat。
    dictionay:附加的一些选项,一般情况下可以设置为NULL。

2. avformat_find_stream_info()函数可以读取一部分视音频数据并且获得一些相关的信息。函数正常执行后返回值大于等于0。
   int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
   ic:输入的AVFormatContext。
   options:额外的选项,目前没有深入研究过。
   该函数上下文部分是调节起播延迟效果最明显的地方。函数分析流的时间主要由传入的AVFormatContext的probesize 和 max_analy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值