日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg 使用ffplay 进行 hls 拉流 分析 1

發(fā)布時(shí)間:2023/12/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg 使用ffplay 进行 hls 拉流 分析 1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ffmpeg 使用 ffplay 進(jìn)行 hls 拉流 分析 1
從使用ffplay 調(diào)用 http://192.168.1.100:8080/live/livestream.m3u8 開始,進(jìn)入到ffmpeg 的分析使用的協(xié)議選擇相應(yīng)的解復(fù)用器的步驟。
其他協(xié)議或者文件方式的使用ffplay也是這個(gè)步驟流程的。

目錄:

  • 一、流程圖:
  • 二、代碼分析:
    • 1、ffplay.c調(diào)用avformat_open_input()進(jìn)行打開文件
    • 2、進(jìn)入utils.c的avformat_open_input()前面這些是一些初始化操作 分配AVFormatContext、保存參數(shù)到AVDictionary、設(shè)置參數(shù)
    • 3、utils.c的avformat_open_input()中調(diào)用init_input()進(jìn)行打開文件和探測協(xié)議格式
    • 4、utils.c的init_input()中調(diào)用av_probe_input_format2()會(huì)根據(jù)后綴名探測格式
    • 5、format.c中av_probe_input_format2()調(diào)用av_probe_input_format3()
    • 6、format.c中av_probe_input_format3()
    • 7、遍歷時(shí)查找到hls時(shí)調(diào)用hls_probe()返回0。這次探測格式就失敗了
    • 8、utils.c中init_input()中調(diào)用io_open()默認(rèn)打開操作
    • 9、io_open是在option.c中的avformat_get_context_defaults()綁定io_open_default()
    • 10、option.c中的io_open_default()中調(diào)用ffio_open_whitelist()
    • 11、aviobuf.c中ffio_open_whitelist()中調(diào)用ffurl_open_whitelist()
    • 12、avio.c中ffurl_open_whitelist()調(diào)用ffurl_alloc()創(chuàng)建url上下文
    • 13、avio.c中ffurl_alloc()調(diào)用url_find_protocol()查找協(xié)議
    • 14、avio.c中url_find_protocol根據(jù)url(文件名)查找協(xié)議
    • 15、avio.c中ffurl_alloc()調(diào)用url_alloc_for_protocol()根據(jù)協(xié)議創(chuàng)建上下文
    • 16、avio.c中url_alloc_for_protocol()創(chuàng)建協(xié)議上下文,進(jìn)行一系列初始化操作
    • 17、avio.c中的ffurl_open_whitelist()創(chuàng)建url上下文后,調(diào)用ffurl_connect()進(jìn)行連接
    • 18、avio.c中的ffurl_connect()根據(jù)不同的協(xié)議進(jìn)行打開url操作
    • 19、 得到連接上的URLContext,返回到ffio_open_whitelist() 再調(diào)用ffio_fdopen()創(chuàng)建ffio_fdopen(),創(chuàng)建AVIOContext
    • 20、 ffio_fdopen()調(diào)用avio_alloc_context()創(chuàng)建AVIOContext,和一些初始化操作
    • 21、 avio_alloc_context()再調(diào)用ffio_init_context()初始化
    • 22、ffio_init_context()初始化,io_read_packet(),io_write_packet這些函數(shù)就是封裝了調(diào)用URLProtocol的url_read(),url_write()。
    • 23、經(jīng)過獲取HTTP 協(xié)議上下文再創(chuàng)建AVIOContext后,返回到utils.c的init_input() 調(diào)用av_probe_input_buffer2()來讀取數(shù)據(jù)
    • 24、 init_input()中調(diào)用avio_read()讀取數(shù)據(jù)。 avio_read()中又封裝了幾層
    • 25、 avio_read()返回后就得到m3u8文件數(shù)據(jù)再調(diào)用av_probe_input_format2()就可以得到是使用ff_hls_demuxer解復(fù)用器
    • 26、 從init_input()返回到avformat_open_input()調(diào)用解復(fù)用器的read_header()
    • 27、 hls_read_header()中第一次調(diào)用parse_playlist()解析m3u8中的播放列表
    • 28、 parse_playlist()判斷兩次不同的調(diào)用時(shí)處理
    • 29、parse_playlist()接著讀取一行判斷m3u8標(biāo)志和保存之前分片
    • 30、 parse_playlist()接著循環(huán)一行行讀取處理
    • 31、 parse_playlist() 中判斷是否嵌套m3u8做不同處理
    • 32、 parse_playlist()最后處理之前的分片
    • 33、返回hls_read_header()判斷是否執(zhí)行第二次parse_playlist()
    • 34、 hls_read_header()中選擇開始的分片
    • 35、 hls_read_header()最后開啟每個(gè)播放列表的解復(fù)用器
  • 三、關(guān)于使用參數(shù)指定輸入格式時(shí)的分析:
    • 1、ffplay.c中
    • opt_format()處理指定格式參數(shù)
    • 2、format.c 中av_find_input_format()根據(jù)指定格式查找解復(fù)用器
    • 3、allformat.c中av_demuxe_iterate遍歷所有解復(fù)用器

一、流程圖:

二、代碼分析:

1、ffplay.c調(diào)用avformat_open_input()進(jìn)行打開文件

2、進(jìn)入utils.c的avformat_open_input()前面這些是一些初始化操作 分配AVFormatContext、保存參數(shù)到AVDictionary、設(shè)置參數(shù)

3、utils.c的avformat_open_input()中調(diào)用init_input()進(jìn)行打開文件和探測協(xié)議格式

4、utils.c的init_input()中調(diào)用av_probe_input_format2()會(huì)根據(jù)后綴名探測格式

5、format.c中av_probe_input_format2()調(diào)用av_probe_input_format3()

6、format.c中av_probe_input_format3()


7、遍歷時(shí)查找到hls時(shí)調(diào)用hls_probe()返回0。這次探測格式就失敗了


8、utils.c中init_input()中調(diào)用io_open()默認(rèn)打開操作

9、io_open是在option.c中的avformat_get_context_defaults()綁定io_open_default()

10、option.c中的io_open_default()中調(diào)用ffio_open_whitelist()

11、aviobuf.c中ffio_open_whitelist()中調(diào)用ffurl_open_whitelist()

12、avio.c中ffurl_open_whitelist()調(diào)用ffurl_alloc()創(chuàng)建url上下文

13、avio.c中ffurl_alloc()調(diào)用url_find_protocol()查找協(xié)議

14、avio.c中url_find_protocol根據(jù)url(文件名)查找協(xié)議


得到的是ff_http_protocol

15、avio.c中ffurl_alloc()調(diào)用url_alloc_for_protocol()根據(jù)協(xié)議創(chuàng)建上下文

16、avio.c中url_alloc_for_protocol()創(chuàng)建協(xié)議上下文,進(jìn)行一系列初始化操作

17、avio.c中的ffurl_open_whitelist()創(chuàng)建url上下文后,調(diào)用ffurl_connect()進(jìn)行連接

18、avio.c中的ffurl_connect()根據(jù)不同的協(xié)議進(jìn)行打開url操作

19、 得到連接上的URLContext,返回到ffio_open_whitelist() 再調(diào)用ffio_fdopen()創(chuàng)建ffio_fdopen(),創(chuàng)建AVIOContext

20、 ffio_fdopen()調(diào)用avio_alloc_context()創(chuàng)建AVIOContext,和一些初始化操作

21、 avio_alloc_context()再調(diào)用ffio_init_context()初始化

22、ffio_init_context()初始化,io_read_packet(),io_write_packet這些函數(shù)就是封裝了調(diào)用URLProtocol的url_read(),url_write()。

23、經(jīng)過獲取HTTP 協(xié)議上下文再創(chuàng)建AVIOContext后,返回到utils.c的init_input() 調(diào)用av_probe_input_buffer2()來讀取數(shù)據(jù)

24、 init_input()中調(diào)用avio_read()讀取數(shù)據(jù)。 avio_read()中又封裝了幾層

25、 avio_read()返回后就得到m3u8文件數(shù)據(jù)再調(diào)用av_probe_input_format2()就可以得到是使用ff_hls_demuxer解復(fù)用器

26、 從init_input()返回到avformat_open_input()調(diào)用解復(fù)用器的read_header()

27、 hls_read_header()中第一次調(diào)用parse_playlist()解析m3u8中的播放列表

28、 parse_playlist()判斷兩次不同的調(diào)用時(shí)處理

29、parse_playlist()接著讀取一行判斷m3u8標(biāo)志和保存之前分片

30、 parse_playlist()接著循環(huán)一行行讀取處理



31、 parse_playlist() 中判斷是否嵌套m3u8做不同處理


32、 parse_playlist()最后處理之前的分片

33、返回hls_read_header()判斷是否執(zhí)行第二次parse_playlist()

34、 hls_read_header()中選擇開始的分片

35、 hls_read_header()最后開啟每個(gè)播放列表的解復(fù)用器



三、關(guān)于使用參數(shù)指定輸入格式時(shí)的分析:

1、ffplay.c中

opt_format()處理指定格式參數(shù)

2、format.c 中av_find_input_format()根據(jù)指定格式查找解復(fù)用器

3、allformat.c中av_demuxe_iterate遍歷所有解復(fù)用器

總結(jié)

以上是生活随笔為你收集整理的ffmpeg 使用ffplay 进行 hls 拉流 分析 1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚州av综合色区无码一区 | 亚洲 欧美 激情 小说 另类 | 99热影院 | 尤物av在线 | 老湿机69福利区午夜x片 | 奇米影视盒 | 污黄视频在线观看 | 久久精彩视频 | 亚洲欧美自拍偷拍 | 国产一区色 | 精品人妻一区二区三区四区不卡 | 99热在线免费观看 | 久久九九免费视频 | 欧美插插视频 | 四虎国产精品成人免费入口 | 欧美精品国产动漫 | 玩偶姐姐在线观看免费 | 一级特黄妇女高潮2 | 欧美18av| 91在线无精精品一区二区 | 黄色正能量网站 | 亚洲伦理一区二区 | 99爱爱视频 | a免费在线观看 | 蜜桃精品在线观看 | 亚洲88av | 成人在线视频免费观看 | 亚洲精品国产一区二区 | 国产精品不卡一区二区三区 | 久久与婷婷 | 日本一区二区三区在线视频 | 一区二区视频免费观看 | 国产精品视频福利 | 欧美亚洲激情视频 | www.av在线.com| 综合激情网 | 五月深爱网 | av五十路 | 日本黄色一级视频 | 久久午夜视频 | 精品视频一区二区三区 | 影音先锋婷婷 | 日韩在线观看不卡 | 综合伊人av | 久久精品高清视频 | 亚洲少妇中文字幕 | 日日操天天| 中文字幕一区二区三区在线视频 | 狠狠鲁影院 | av资源共享| 国产jk精品白丝av在线观看 | 欧美动态视频 | 黄色网页免费观看 | 国产白拍| 国内毛片视频 | 自拍色图 | 欧美国产免费 | 国产精品美女一区二区三区 | 法国少妇愉情理伦片 | 日韩欧美亚洲国产精品字幕久久久 | 午夜精品成人毛片非洲 | 有码视频在线观看 | 日韩精品一区二区不卡 | 欧美日韩精品在线播放 | 欧美一区二区视频在线 | 欧美片免费网站 | 91老师国产黑色丝袜在线 | 色热热 | 人妻体内射精一区二区三区 | 成人三级在线视频 | 成人视屏在线 | 国产麻豆乱码精品一区二区三区 | 91国产视频在线播放 | 美女张开腿让男人操 | 日本精品视频一区二区三区 | 国产精品高潮呻吟久久久久久 | av天堂一区二区三区 | 久久精品黄aa片一区二区三区 | 国产第一页第二页 | 超碰夫妻 | 欧美在线一二三四区 | 高清乱码毛片 | 少妇一级淫片免费放播放 | 欧美日韩免费一区二区三区 | 日本大尺度吃奶做爰视频 | 国产一区91精品张津瑜 | 四虎国产精品永久在线国在线 | 国产普通话bbwbbwbbw | 午夜视频免费看 | 成年人国产精品 | 99成人在线视频 | 亚洲成人免费网站 | 污视频网站免费在线观看 | 日韩欧美综合视频 | 日韩在线观看第一页 | 爱蜜臀av| 国产一区二区三区免费在线观看 | 成人羞羞国产免费游戏 | 都市激情校园春色 |