FFplay源码分析-avformat_open_input

《FFmpeg原理》的社群来了,想加入社群的朋友请购买 VIP 版,VIP 版有更高级的内容与答疑服务。


本系列 以 ffmpeg4.4 源码为准,主要讲解 ffplay 的 RTMP 协议解析,播放。本文使用的命令如下:

ffplay -i rtmp://192.168.0.122/live/livestream

前两篇文章 《FFplay源码分析-rtmp入口》 《FFplay源码分析-rtmp_open》 其实已经讲解了 avformat_open_input() 函数内部的一部分的逻辑,就是已经知道 RTMP 链接建立,然后读取到第一个 音视频包的逻辑。但是还有一部分逻辑没讲,就是探测 av_probe_input_buffer2() 函数,如下图:

av_probe_input_buffer2() 主要是读一部分 RTMP 数据,判断出来 AVInputFormat 是 flv 。

至此, init_input() 函数的逻辑就讲完了。avformat_open_input() 函数后续的代码没有太多的需要分析的地方,比较简单。

结合之前两篇文章,画一个 avformat_open_input() 函数整体的流程图:

本文重点:

ffplay 播放 RTMP 流的时候,解复用器使用的是 flv 的解复用器。这个其实 跟 ffplay 播放本地 flv 文件非常相似,只是 ffplay 会把 RTMP 音视频包转成 flv 的tag 模式的包,然后再丢给 flv 解复用器。


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Loken2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值