成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

播放器技術(shù)分享(3):音畫同步-創(chuàng)新互聯(lián)

搞音視頻開發(fā)好些年,分享過許多博客文章,比如:前幾年發(fā)布的《FFmpeg Tips》系列,《Android 音頻開發(fā)》系列,《直播疑難雜癥排查》系列等等。最近想把多年來開發(fā)和優(yōu)化播放器的經(jīng)驗也分享出來,希望能幫助到音視頻領(lǐng)域的初學者。第一期文章要推出的內(nèi)容主要涉及到播放器比較核心的幾個技術(shù)點,大概的目錄如下:

按需規(guī)劃網(wǎng)站可以根據(jù)自己的需求進行定制,成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)的運用實際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實際意義

1. 播放器技術(shù)分享(1):架構(gòu)設(shè)計

2. 播放器技術(shù)分享(2):緩沖區(qū)管理

3. 播放器技術(shù)分享(3):音畫同步

4. 播放器技術(shù)分享(4):首開時間

5. 播放器技術(shù)分享(5):延時優(yōu)化

本篇是系列文章的第三篇,主要聊一聊播放器的音畫同步。

1 概述

首先,我們給出音畫同步的定義:

音畫同步是指播放器正在渲染的每一幀畫面和正在播放的每一段聲音都是嚴格對應(yīng)起來的,不存在人耳和肉眼可以分辨出來的偏差。

2 時間戳

機器沒有眼睛也沒有耳朵,那它是如何去感知視頻文件中的某一幀視頻數(shù)據(jù)跟某一幀音頻數(shù)據(jù)是屬于 同一時間 的呢 ?

現(xiàn)實生活中,判斷兩件事情是否同一時刻發(fā)生的方法就是記錄并且比較事件發(fā)生的日期時間,同樣,我們可以在音頻和視頻數(shù)據(jù)“生產(chǎn)”出來的時候,為數(shù)據(jù)標記上一個“時間戳”,代表著它的出生時間。由此,播放器就知道如何判斷了。

播放器技術(shù)分享(3):音畫同步

如圖所示,音視頻在采集(生產(chǎn))的時候,就給每一幀都打上 “時間戳”(注意,音視頻的時間戳需要使用一個共同的時間戳基準),假設(shè)以音頻開始采集時刻的系統(tǒng)絕對時間點作為時間戳 0 點,假設(shè)音頻 20ms 采樣一幀,視頻幀率 30fps -> 即 33ms 產(chǎn)生一幀,那么,視頻幀和音頻幀的時間戳大致的遞增規(guī)律為:

視頻幀:10,43,76,109,142,……

音頻幀:0,20,40,60,80,120,……

注:實際上數(shù)據(jù)采集不會這么 “均勻”,會有略微的浮動。

如此一來,播放器就可以通過附加在音頻和視頻幀上的時間戳信息,感知到音頻幀和視頻幀的 “相對關(guān)系”,實現(xiàn)音畫同步就輕而易舉了,判斷方法如下;

音畫同步的方法:判斷視頻與音頻幀的時間戳差值,是不是在一定的 “閾值” 范圍內(nèi),如果是,則可以渲染/播放,否則就 “等” 到合適的時間。

3 音畫同步的 “閾值”

由于音視頻是分開采集的,所以它們的時間戳不可能完全對應(yīng)得上,因此,只要在一個合理的 “閾值” 范圍內(nèi)即可認為是同步的。那么,這個 “閾值” 是怎么定義的呢 ?

播放器技術(shù)分享(3):音畫同步

如圖所示,這個 “閾值” 有一個國際標準定義了它,叫做:RFC-1359,它是這么定義的:

1. 無法察覺:音頻和視頻的時間戳差值在:-100ms ~ +25ms 之間

2. 能夠察覺:音頻滯后了 100ms 以上,或者超前了 25ms 以上

3. 無法接受:音頻滯后了 185ms 以上,或者超前了 90ms 以上

有了這個國際標準和經(jīng)驗值,我們做音畫同步取的閾值就不用瞎猜了~~

4 音畫同步的實現(xiàn)

音畫同步的實現(xiàn)策略一般有 3 種:

1. 視頻同步到音頻

2. 音頻同步到視頻

3. 音視頻同步到外部時鐘

比較常用的策略是:視頻同步到音頻。

因為音頻是流式的,按照規(guī)律的勻速的速率去播放,才能顯得更加 “平滑”,而視頻的播放其實是一張一張圖片進行刷新顯示,它的刷新時間的調(diào)整相對而言更容易一些,用戶肉眼的敏感度也更弱一些。

下面就講講使用 “視頻同步到音頻” 的方式,如何實現(xiàn)播放器的音畫同步:

播放器技術(shù)分享(3):音畫同步

如圖所示,A 代表音頻幀,P 代表視頻幀,音頻幀持續(xù)送入揚聲器以既定的速率播放,每播放一幀音頻數(shù)據(jù),則把該音頻幀的時間戳更新到 Master Clock,作為主時鐘,視頻幀則參考 Master Clock 來決定自己是否渲染、何時渲染或者丟棄,算法如下:

1. 假設(shè) min 為音畫同步閾值(如:25ms),則當前視頻時間戳如果與 master clock 的絕對差值在 25ms 閾值范圍內(nèi)則都可以送入渲染

2. 如果 diff > 0,即 pts > m-clock,則代表視頻幀提前準備好了。這種情況下,是可以通過 sleep 來等待主時鐘的,但是為了防止異常時間戳導致 sleep 時間過長,可以設(shè)置一個 max 異常閾值(如:1000ms),如果 diff 超過這個 max 可以認為是異常幀,丟棄掉

3. 如果 diff < 0,即 pts < m-clock,則代表視頻幀滯后了。這種情況下,如果滯后超出約定閾值(如:25ms)的視頻幀就應(yīng)該被丟棄

音畫同步最核心的思想就在這里了,看起來好像也并不是有多復雜,對吧~

6 總結(jié)

播放器的音畫同步,就分享到這里了,如有疑問的小伙伴歡迎來信 lujun.hust@gmail.com 交流。另外,也歡迎大家關(guān)注我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。

播放器技術(shù)分享(3):音畫同步

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章名稱:播放器技術(shù)分享(3):音畫同步-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://jinyejixie.com/article48/djsjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站營銷、電子商務(wù)網(wǎng)站建設(shè)定制開發(fā)、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
兴安盟| 婺源县| 绥江县| 武汉市| 沭阳县| 乌恰县| 华坪县| 南投县| 宁蒗| 盐池县| 阿图什市| 通化市| 台北市| 南丹县| 宁河县| 沾化县| 临城县| 滕州市| 三原县| 蓬莱市| 黄冈市| 泾源县| 定西市| 晋城| 广州市| 河北省| 浦城县| 文昌市| 福海县| 禄劝| 浮梁县| 凤冈县| 新津县| 百色市| 县级市| 宕昌县| 重庆市| 西华县| 金寨县| 寻甸| 宝兴县|