ffplay分析(從啟動到讀取數據線程插入到字幕、音頻、視頻解碼前的隊列操作)

《ffplay的數據結構分析》
《ffplay分析(視頻解碼線程的操作)》
《ffplay分析(音頻解碼線程的操作)》
《ffplay 分析(音頻從Frame(解碼后)隊列取數據到SDL輸出)》
《ffplay分析 (視頻從Frame(解碼后)隊列取數據到SDL輸出)》
《ffplay分析 (音視頻同步:主時鐘為音頻)》
《ffplay分析 (暫停 / 播放處理)》
《ffplay分析 (seek操作處理)》

ffplay從啟動到讀取線程的操作分析(版本:ffmpeg-4.2.1)

  • 一、分析:
    • 1、main():初始化ffmpeg
    • 2、main():ffplay 命令行參數的解析處理
    • 3、main():SDL初始化
    • 4、main():解碼器的沖刷Packet初始化
    • 5、main():SDL創建窗口
    • 6、main():打開各種流并且啟動讀取數據線程
    • 7、stream_open():分配VideoState保存文件名
    • 8、stream_open():初始化Frame隊列(解碼后)/Packet隊列(解碼前),初始化用于控制讀取線程休眠的條件變量
    • 9、stream_open():初始化時鐘、初始化音量
    • 10:stream_open():啟動讀取數據線程
    • 11:read_thread():初始化各個流的默認索引值、初始化ffmpeg讀取中斷回調函數
    • 12、read_thread():打開文件操作(avformat_open_input()、avformat_find_stream_info())
    • 13、read_thread():處理是否指定播放的起始時間和是否是實時流數據
    • 14、read_thread():設置各個流的流索引
    • 15、read_thread():設置顯示窗口寬高
    • 16、read_thread():打開各個流操作
    • 17、read_thread():實時流判斷設置緩沖區不限制
    • 18、read_thread():循環讀取數據(判斷是否請求退出、是否暫停網絡流操作)
    • 19、read_thread():循環讀取數據(判斷是否有seek操作)
    • 20、read_thread():循環讀取數據(判斷video是不是attachments_pic)
    • 21、read_thread():循環讀取數據(判斷隊列是否已經有足夠的數據)
    • 22、read_thread():循環讀取數據(判斷是否已經播放完畢)
    • 23、read_thread():循環讀取數據(執行av_read_frame()讀取幀數據)
    • 24、read_thread():循環讀取數據(判斷幀是否在播放范圍內,插入到相應的Packet(解碼前)隊列)
    • 25、read_thread():循環讀取數據(線程退出處理)

一、分析:

1、main():初始化ffmpeg

在這里插入圖片描述

2、main():ffplay 命令行參數的解析處理

在這里插入圖片描述

3、main():SDL初始化

在這里插入圖片描述

4、main():解碼器的沖刷Packet初始化

在這里插入圖片描述

5、main():SDL創建窗口

在這里插入圖片描述

6、main():打開各種流并且啟動讀取數據線程

在這里插入圖片描述

7、stream_open():分配VideoState保存文件名

在這里插入圖片描述

8、stream_open():初始化Frame隊列(解碼后)/Packet隊列(解碼前),初始化用于控制讀取線程休眠的條件變量

在這里插入圖片描述

9、stream_open():初始化時鐘、初始化音量

在這里插入圖片描述

10:stream_open():啟動讀取數據線程

在這里插入圖片描述

11:read_thread():初始化各個流的默認索引值、初始化ffmpeg讀取中斷回調函數

在這里插入圖片描述

12、read_thread():打開文件操作(avformat_open_input()、avformat_find_stream_info())

在這里插入圖片描述
在這里插入圖片描述

13、read_thread():處理是否指定播放的起始時間和是否是實時流數據

在這里插入圖片描述

14、read_thread():設置各個流的流索引

在這里插入圖片描述

15、read_thread():設置顯示窗口寬高

在這里插入圖片描述

16、read_thread():打開各個流操作

在這里插入圖片描述

17、read_thread():實時流判斷設置緩沖區不限制

在這里插入圖片描述

18、read_thread():循環讀取數據(判斷是否請求退出、是否暫停網絡流操作)

在這里插入圖片描述

19、read_thread():循環讀取數據(判斷是否有seek操作)

在這里插入圖片描述

20、read_thread():循環讀取數據(判斷video是不是attachments_pic)

在這里插入圖片描述

21、read_thread():循環讀取數據(判斷隊列是否已經有足夠的數據)

在這里插入圖片描述

22、read_thread():循環讀取數據(判斷是否已經播放完畢)

在這里插入圖片描述

23、read_thread():循環讀取數據(執行av_read_frame()讀取幀數據)

在這里插入圖片描述

24、read_thread():循環讀取數據(判斷幀是否在播放范圍內,插入到相應的Packet(解碼前)隊列)

在這里插入圖片描述

25、read_thread():循環讀取數據(線程退出處理)

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python3和python2 優勢_python3和python2的區別

1.性能Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字符串和整形操作上可以取得很好的優化結果。Py3.1性能比Py2.5慢15%,還有很大的提升空間。2.編碼Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼…

并發進程同步

P是荷蘭語Proberen(測試)的首字母。為阻塞原語,負責把當前進程由運行狀態轉換為阻塞狀態,直到另外一個進程喚醒它。也就是不好的一方面。 V是荷蘭語Verhogen(增加)的首字母。為喚醒原語,負責把一…

寄存器和pin_16x2 LCD的PIN圖和寄存器

寄存器和pinIn these years the LCD is finding widespread use. It has replaced the LEDs or other multi-segment LEDs.This is due to the following reasons: 近年來, LCD正在廣泛使用。 它已替換LED或其他多段LED,原因如下: The decli…

【Java IO知識】讀取中文亂碼問題解決

讀取文件主要是要設置讀取的輸入流如InputStreamReader時要設置讀取的解碼格式,要和文件本身的編碼格式相同,這樣讀取出來的才不會亂碼。 InputStreamReader reader new InputStreamInputReader(input, "編碼格式"); ANSI是"gbk" 注:必須是在讀取的時候就…

ffplay分析(視頻解碼線程的操作)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到SDL輸出)》 《ffplay分析 (視頻從Fram…

【轉】.NET深入學習筆記(4):深拷貝與淺拷貝(Deep Copy and Shallow Copy)

今天繼續利用準備WSE安全開發文章的空閑時間,完善《.NET深入學習筆記》系列(基本都是.Net重要的知識點,我都做了詳細的總結,是什么、為什么、和怎么實現)。想必很多人也接觸過這兩個概念。做過C的人對深淺拷貝的概念一…

c語言數組-1_C數組-智能問題與解答

c語言數組-1C programming Arrays (One-D Array, Two-D Array) Aptitude Questions and Answers : In this section you will find C Aptitude Questions and Answers on One Dimensional (1D) and Two Dimensional (2D) array. C編程數組(一維數組,二維數組)能力問…

abap 添加alv上的工具欄的按鈕_Excel里的置頂功能——快速訪問工具欄

100萬職場人都在看后臺回復禮包領199元職場干貨大家好,我是小可~今天跟大家分享一個提高Excel操作效率的小技巧自定義你的快速訪問工具欄設置后的效果▼▼▼也就是把你最經常用到的兩三個功能放到快速訪問工具欄可以一眼就找到這些功能不需要靠快捷鍵或者功能選項卡…

用遞歸法求12+22+...+n2的值

思路分析: 談到遞歸,我個人會聯想到數學里面的通式。因為遞歸調用的函數的對應法則是相同的。例如這道題:f(x)=x。這個就是函數通式,只不過把每個求得的結果進行累加求和即可。用戶輸入5的時候,會出現f(5)=5,之后再進行x減一操作,執行f(4)=4,最后將每個進行累加即可。…

機器學習資料推薦

機器學習資料推薦 機器學習的資料 1:斯坦福大學視頻(作為入門教程,網易有中文字幕,而且講義也有翻譯版本)20集200左右講義 2:機器學習 Tom M.Mitchell(雖然出版10多年,但是通俗易懂的內容,讓讀者對機器學習…

ffplay源碼(版本:ffmpeg-4.2.1)

ffplay源碼(版本:ffmpeg-4.2.1) /** Copyright (c) 2003 Fabrice Bellard** This file is part of FFmpeg.** FFmpeg is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* Lic…

stringwriter_Java StringWriter toString()方法與示例

stringwriterStringWriter類的toString()方法 (StringWriter Class toString() method) toString() method is available in java.io package. toString()方法在java.io包中可用。 toString() method is used to represent the buffer current value in terms of string. toStr…

編寫一個函數,計算下式當n=10和n=100的值。

思路分析: 首先,我個人看法:當我拿到這道題的時候,我會把它當成一道數學題對待。分子是動的,恒為一,分母是進行依次增加的。且奇數項為正,偶數項為負。因為設計運算出現的是分數,故,設計選取存儲類型為double。 找出問題: ①正負號問題、②分母問題、③累計求和問題…

POJ 1001 大數的乘法

對這道題的理解 大數的乘法 關鍵是 實型的 那么首先就是數出來小數點有幾位這個相信很簡單 從后面往前數剛開始0 不算接著就是遇到小數點結束如果沒有小數點 那么置為0 接著就是輸出地時候首先算出小數點的位置然后輸出 你想怎么樣都行 從后往前數這個時候輸出 那么就是你也…

鈴木uy125摩托車機油_濟南鈴木安徽發布國四新車—6480元瑞夢125、9380元UY125

安徽合肥,這個具有兩千多年歷史的古城,以“三國故地、包拯家鄉”而聞名海內外,2019年4月22日濟南鈴木為這座城市帶來一份驚喜,今年正值國四執行,濟南鈴木旗下兩款國四新車瑞夢125與UY125正式在合肥與大家相見。濟南鈴木…

Andrej Karpathy最新大模型入門視頻講解

最近這兩天,特斯拉前AI總監 現在在OpenAI的安德烈卡帕西(Andrej Karpathy)的新教程火了 這次 他專門面向普通大眾做了一個關于大語言模型的科普視頻 時長1個小時,全部為“非技術介紹”, 涵蓋了模型推理、訓練、微…

Jquery 尋找父、子、兄弟節點

JQUERY的父,子,兄弟節點查找方法 jQuery.parent(expr) 找父親節點,可以傳入expr進行過濾,比如$("span").parent()或者$("span").parent(".class") jQuery.parents(expr),類似于jQuery.parents(exp…

編寫一個程序,計算用戶輸入的起始時間到終止時間之間相隔的天數。

思路分析: 閏年:閏年又分為普通閏年和世紀閏年 普通閏年:能被4整除且不能被100整除的為閏年(2004為閏年,1999不是閏年) 世紀閏年:能被400整除的是閏年(2020年是閏年,1900年不是閏年) 閏年共有366天&#x…

longvalue_Java Short類longValue()方法及示例

longvalue短類longValue()方法 (Short class longValue() method) longValue() method is available in java.lang package. longValue()方法在java.lang包中可用。 longValue() method is used to return the value denoted by this Short object converted to type long (by …

mvc的Controller返回值類型ActionResult詳解

一、簡介 ActionResult 操作方法通過執行工作并返回操作結果來響應用戶輸入。 操作結果表示框架將代表操作方法執行的命令。 ActionResult 類是操作結果的基類。 以下類型從 ActionResult 派生: ContentResult EmptyResult FileResult HttpUnauthorizedResult …