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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

音视频常见播放器框架分析

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音视频常见播放器框架分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

音視頻面試必問:如何設(shè)計(jì)一個播放器

1.常見播放器框架分析
2.如何解決播放端延遲的問題
3.音視頻如何做同步
4.快進(jìn)、快退、逐幀播放如何實(shí)現(xiàn)

音視頻開發(fā)技術(shù)精講《常見播放器框架分析》

播放器框架

SDL2播放音頻

使用SDL播放解碼后的音頻數(shù)據(jù),SDL播放音頻數(shù)據(jù)的流程
如下:

播放器-播放做了哪一些事情?

打開媒體文件
分析媒體流成分
查找相應(yīng)的解碼器
數(shù)據(jù)讀取線程-讀取數(shù)據(jù)包并放入包緩存隊(duì)列 av_read_frame

解碼線程-解碼數(shù)據(jù)包得到數(shù)據(jù)幀并放入幀緩存隊(duì)列
audio_ thread 音頻解碼線程
video_ thread視頻解碼

音頻回調(diào)接口-讀取音頻數(shù)據(jù)幀
sdl_audio_callback

視頻刷新線程-以音頻為基準(zhǔn)做同步顯示圖像
video_refresh

播放器-靜音和音量控制的本質(zhì)

音量控制的本質(zhì):控制采樣點(diǎn)的幅值
靜音,將采樣點(diǎn)數(shù)值置為0
音量+,提升采樣點(diǎn)的幅值
音量-,降低采樣點(diǎn)的幅值

播放器-靜音和音量控制的本質(zhì)

ffplay控制音量的方式

最大音量:輸出解碼后的原始數(shù)據(jù)
靜音:即是輸出數(shù)值為0的數(shù)據(jù) toggle_ mute( )
改變音量:通過SDL_ MixAudio改變解碼后數(shù)據(jù)的幅值update_ volume()
比如下圖所示(sdI audio_ callback函數(shù)內(nèi)) :

以下是ffplay的方式供參考

播放器-快進(jìn)快退

快進(jìn)和快退的本質(zhì)是seek到某個點(diǎn)重新開始播放。

  • 跳轉(zhuǎn)到指定的數(shù)據(jù)位置avformat_ seek_ file
  • 清空packet隊(duì)列
  • 清空frame隊(duì)列(在ffplay里面是通過serial去控制)
  • 清空解碼器

seek/快進(jìn)/快退: stream_ seek()/ avformat_ seek_ file()

seek播放流程

  • 左右箭頭產(chǎn)生seek事件;
  • 將文件seek到指定時間點(diǎn),清空packet隊(duì)列,刷新解碼器.
  • 切換時鐘序列(ffplay)

注意:不同的容器(比如MP4和FLV) seek的機(jī)制是不一樣的。有些容器
seek的時間會快些,有些則相對耗時。這個和容器的存儲結(jié)構(gòu)有關(guān)系。

FFmpeg/WebRTC/RTMP/RTSP/HLS/RTP播放器-音視頻流媒體高級開發(fā) 學(xué)習(xí)資料、視頻教程

總結(jié)

以上是生活随笔為你收集整理的音视频常见播放器框架分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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