當前位置:編程學習大全網 - 源碼下載 - 如何在Android用FFmpeg+SDL2.0解碼聲音

如何在Android用FFmpeg+SDL2.0解碼聲音

壹、創建壹個VideoPicture結構體用來保存解碼出來的圖像。

二、添加數據隊列的初始化、添加以及讀取的函數。

三、audio_decode_frame():解碼音頻

四、audio_callback(): 回調函數,向SDL緩沖區填充數據

五、創建視頻刷新相關的函數:

schedule_refresh():它主要的作用是告訴系統指定的毫秒數後推FF_REFRESH_EVENT。當我們看到它在事件隊列時,將依次調用視頻刷新功能。

六、添加視頻顯示函數:

因為我們的屏幕可以是任意大小(我們設定我們為640×480,並有壹些方法來設置它,所以它是由用戶調整大小),我們需要動態地計算出我們有多大的矩形。因此,首先我們需要弄清楚我們的電影的顯示比例,這僅僅是寬度除以身高。某些編解碼器將有壹個奇怪的樣本縱橫比,這就是壹個像素,或樣品的寬度/高度。因為在我們的編解碼器的上下文中的高度和寬度值以像素為單位測量,實際的寬高比等於寬高比數倍的樣品長寬比。壹些編解碼器將顯示0-5的寬高比,這表示每個像素僅僅是大小1x1的。然後,我們擴展了電影,以適應在我們的屏幕上。

七、分配顯示輸出內存空間:

使用隊列中,我們有兩個指針 - 寫入索引和閱讀索引。我們還跟蹤實際的照片有多少是在緩沖區中。要寫入隊列中,我們將首先等待我們的緩沖清除,所以我們足夠的空間來存儲我們VideoPicture。然後我們檢查,看看是否已經分配了覆蓋在我們的寫作索引。如果沒有,我們就必須分配壹定的空間。如果窗口的大小發生了變化, 我們也要重新分配緩沖區。

八、解碼線程,將解碼器,建立音頻線,保存重要信息到數據結構中。

九、編寫Main函數用來調用解碼線程。

  • 上一篇:密盞和疏盞燕窩的區別
  • 下一篇:共享和接收源代碼
  • copyright 2024編程學習大全網