ffplay分析(从启动到读取数据线程插入到字幕、音频、视频解码前的队列操作)
生活随笔
收集整理的這篇文章主要介紹了
ffplay分析(从启动到读取数据线程插入到字幕、音频、视频解码前的队列操作)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
《ffplay的數(shù)據(jù)結(jié)構(gòu)分析》
《ffplay分析(視頻解碼線程的操作)》
《ffplay分析(音頻解碼線程的操作)》
《ffplay 分析(音頻從Frame(解碼后)隊(duì)列取數(shù)據(jù)到SDL輸出)》
《ffplay分析 (視頻從Frame(解碼后)隊(duì)列取數(shù)據(jù)到SDL輸出)》
《ffplay分析 (音視頻同步:主時(shí)鐘為音頻)》
《ffplay分析 (暫停 / 播放處理)》
《ffplay分析 (seek操作處理)》
ffplay從啟動(dòng)到讀取線程的操作分析(版本:ffmpeg-4.2.1)
- 一、分析:
- 1、main():初始化ffmpeg
- 2、main():ffplay 命令行參數(shù)的解析處理
- 3、main():SDL初始化
- 4、main():解碼器的沖刷Packet初始化
- 5、main():SDL創(chuàng)建窗口
- 6、main():打開各種流并且啟動(dòng)讀取數(shù)據(jù)線程
- 7、stream_open():分配VideoState保存文件名
- 8、stream_open():初始化Frame隊(duì)列(解碼后)/Packet隊(duì)列(解碼前),初始化用于控制讀取線程休眠的條件變量
- 9、stream_open():初始化時(shí)鐘、初始化音量
- 10:stream_open():啟動(dòng)讀取數(shù)據(jù)線程
- 11:read_thread():初始化各個(gè)流的默認(rèn)索引值、初始化ffmpeg讀取中斷回調(diào)函數(shù)
- 12、read_thread():打開文件操作(avformat_open_input()、avformat_find_stream_info())
- 13、read_thread():處理是否指定播放的起始時(shí)間和是否是實(shí)時(shí)流數(shù)據(jù)
- 14、read_thread():設(shè)置各個(gè)流的流索引
- 15、read_thread():設(shè)置顯示窗口寬高
- 16、read_thread():打開各個(gè)流操作
- 17、read_thread():實(shí)時(shí)流判斷設(shè)置緩沖區(qū)不限制
- 18、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否請求退出、是否暫停網(wǎng)絡(luò)流操作)
- 19、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否有seek操作)
- 20、read_thread():循環(huán)讀取數(shù)據(jù)(判斷video是不是attachments_pic)
- 21、read_thread():循環(huán)讀取數(shù)據(jù)(判斷隊(duì)列是否已經(jīng)有足夠的數(shù)據(jù))
- 22、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否已經(jīng)播放完畢)
- 23、read_thread():循環(huán)讀取數(shù)據(jù)(執(zhí)行av_read_frame()讀取幀數(shù)據(jù))
- 24、read_thread():循環(huán)讀取數(shù)據(jù)(判斷幀是否在播放范圍內(nèi),插入到相應(yīng)的Packet(解碼前)隊(duì)列)
- 25、read_thread():循環(huán)讀取數(shù)據(jù)(線程退出處理)
一、分析:
1、main():初始化ffmpeg
2、main():ffplay 命令行參數(shù)的解析處理
3、main():SDL初始化
4、main():解碼器的沖刷Packet初始化
5、main():SDL創(chuàng)建窗口
6、main():打開各種流并且啟動(dòng)讀取數(shù)據(jù)線程
7、stream_open():分配VideoState保存文件名
8、stream_open():初始化Frame隊(duì)列(解碼后)/Packet隊(duì)列(解碼前),初始化用于控制讀取線程休眠的條件變量
9、stream_open():初始化時(shí)鐘、初始化音量
10:stream_open():啟動(dòng)讀取數(shù)據(jù)線程
11:read_thread():初始化各個(gè)流的默認(rèn)索引值、初始化ffmpeg讀取中斷回調(diào)函數(shù)
12、read_thread():打開文件操作(avformat_open_input()、avformat_find_stream_info())
13、read_thread():處理是否指定播放的起始時(shí)間和是否是實(shí)時(shí)流數(shù)據(jù)
14、read_thread():設(shè)置各個(gè)流的流索引
15、read_thread():設(shè)置顯示窗口寬高
16、read_thread():打開各個(gè)流操作
17、read_thread():實(shí)時(shí)流判斷設(shè)置緩沖區(qū)不限制
18、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否請求退出、是否暫停網(wǎng)絡(luò)流操作)
19、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否有seek操作)
20、read_thread():循環(huán)讀取數(shù)據(jù)(判斷video是不是attachments_pic)
21、read_thread():循環(huán)讀取數(shù)據(jù)(判斷隊(duì)列是否已經(jīng)有足夠的數(shù)據(jù))
22、read_thread():循環(huán)讀取數(shù)據(jù)(判斷是否已經(jīng)播放完畢)
23、read_thread():循環(huán)讀取數(shù)據(jù)(執(zhí)行av_read_frame()讀取幀數(shù)據(jù))
24、read_thread():循環(huán)讀取數(shù)據(jù)(判斷幀是否在播放范圍內(nèi),插入到相應(yīng)的Packet(解碼前)隊(duì)列)
25、read_thread():循環(huán)讀取數(shù)據(jù)(線程退出處理)
總結(jié)
以上是生活随笔為你收集整理的ffplay分析(从启动到读取数据线程插入到字幕、音频、视频解码前的队列操作)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: duel剧情介绍
- 下一篇: ffplay分析(视频解码线程的操作)