欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

init output stream初始化輸出流源碼分析

 更新時間:2022年10月31日 08:58:51   作者:Loken1  
這篇文章主要為大家介紹了init output stream初始化輸出流源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

init_output_stream() 是一個公共的函數,無論是音頻,還是視頻的輸出流的初始化,都是通過它來完成的。

init_output_stream() 上面還會套一個 wrapper ,主要是做一些簡單的封裝,例如已經初始化了,就直接返回,代碼如下:

音頻 OutputStream初始化

音頻 OutputStream 的初始化主要有兩個地方。

1, 如果是 stream copy,不進行編解碼,就是在 transcode_init() 里面如下:

從上圖可以看到,如果不進行編解碼,音頻,視頻的輸出流,都是在 transcode_init() 里面初始化的。

2, 濾鏡模式,進行了編解碼,就是在 reap_filter() 里 初始化音頻的輸出流的,如下:

音頻的輸出流可以在未從濾鏡讀取到 AVFrame 的時候就開始初始化,而視頻的輸出流的初始化,需要從濾鏡拿到 AVFrame 之后才能初始化,視頻的初始化是在 封裝在do_video_out() 函數里面的。

至于為什么音頻輸出流需要提前初始化,可以看一下他的注釋,我沒細看。

init_output_stream() 函數其實沒有太多的重點,主要就是設置編碼器參數,然后打開編碼器,再設置一下 OutputStream 的一些字段,就初始化完成了。

不過 OutputStream 有一個字段特別重要,就是 initialized ,如下:

這個 initialized 特別重要,只有輸出文件里面的所有輸出流,包括音頻跟視頻流,他們的 initialized 都是 1,才能調 avformat_write_header() 函數寫入頭部信息,

因為 init_output_stream() 會對 AVStream 設置一些信息,例如編碼信息等等。

必須設置完這些信息,initialized 全部都是 1,才能調 avformat_write_header()。

因此,如果音頻輸出流沒初始化完成,那視頻流的 AVPacket 就不能寫入文件,必須先寫到隊列緩存下來,如下:

init_output_stream() 函數流程圖

以上就是init output stream初始化輸出流源碼分析的詳細內容,更多關于init output stream初始化輸出流的資料請關注腳本之家其它相關文章!

相關文章

  • flutter升級3.7.3報錯Unable?to?find?bundled?Java?version解決

    flutter升級3.7.3報錯Unable?to?find?bundled?Java?version解決

    這篇文章主要介紹了flutter升級3.7.3報錯Unable?to?find?bundled?Java?version解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加
    2023-02-02
  • Android實現自定義帶文字和圖片Button的方法

    Android實現自定義帶文字和圖片Button的方法

    這篇文章主要介紹了Android實現自定義帶文字和圖片Button的方法,涉及Android針對Button按鈕的布局與設計技巧,需要的朋友可以參考下
    2015-05-05
  • 詳解Android ScrollView嵌套EditText出現的滑動問題

    詳解Android ScrollView嵌套EditText出現的滑動問題

    本篇文章主要介紹了詳解ScrollView嵌套EditText出現的滑動問題,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android實現伸縮彈力分布菜單效果的示例

    Android實現伸縮彈力分布菜單效果的示例

    本文介紹下在Android中實現伸縮彈力分布菜單效果。這種效果比較炫酷,有需要的朋友可以參考一下。
    2016-10-10
  • Android編程之ActionBar Tabs用法實例分析

    Android編程之ActionBar Tabs用法實例分析

    這篇文章主要介紹了Android編程之ActionBar Tabs用法,結合實例形式分析了ActionBar Tabs的功能及Tab切換不同的Fragment的相關實現技巧,需要的朋友可以參考下
    2017-03-03
  • Android Root設備中的su權限獲取和使用詳解

    Android Root設備中的su權限獲取和使用詳解

    本篇文章主要介紹了Android Root設備中的su權限獲取和使用詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Flutter List數組避免插入重復數據的實現

    Flutter List數組避免插入重復數據的實現

    這篇文章主要介紹了Flutter List數組避免插入重復數據的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Windows實現Flutter環(huán)境搭建及配置這一篇就夠了

    Windows實現Flutter環(huán)境搭建及配置這一篇就夠了

    這篇文章主要介紹了Windows實現Flutter環(huán)境搭建及配置這一篇就夠了,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Android ApiDemo示例工程的創(chuàng)建

    Android ApiDemo示例工程的創(chuàng)建

    本文主要介紹Android ApiDemo示例工程的創(chuàng)建,這里SDK中的示例工程做了大致介紹,并說明如何創(chuàng)建ApiDemo 示例工程,有需要看自帶代碼的朋友可以參考下
    2016-09-09
  • Android入門之Fragment的使用教程

    Android入門之Fragment的使用教程

    Fragment是Android3.0后引入的一個新的API,他出現的初衷是為了適應大屏幕的平板電腦。本文主要來和大家講講Fragment的使用,感興趣的小伙伴可以了解一下
    2022-12-12

最新評論