IOS_音視頻不同步問題

音視頻不同步

1、問題現象:iOS版本在網絡環境差的情況下,會比較容易出現音視頻不同步的問題

2、問題分析:

          經多次測試發現,觀看時間越長,音頻延遲的越嚴重;

          然後查看Log,發現音頻接收緩存隊列中並沒有堆積buffer;

        2017-12-20 11:22:14.072473+0800 Kalay[465:106760] channel.audioQueue.count:[0] channel.avChannel:[0]
        2017-12-20 11:22:14.077151+0800 Kalay[465:106760] channel.audioQueue.count:[0] channel.avChannel:[0]

   這說明接收到的buffer就是延遲的,
    猜測可能是某些原因阻塞了音頻接收線程,從而導致了音頻延遲;   

3、問題解決:

      發現在網絡環境比較差的情況下,avRecvAudioData會經常返回-20012的錯誤碼,

    else if (readSize ==AV_ER_DATA_NOREADY) { 

    //      usleep(2*1000);

                usleep(100);

     }

    得到-20012後,接收線程會執行usleep,看來接收線程就是被這兒給阻塞住了,

    sleep 2000ms時間太長,但拿掉usleep會使cpu達到100%的使用率,於是就改成sleep 100ms;

    另外,在SDK 3.1.5.19之後的版本中也有加入音視頻同步機制,保證接收到的音頻和視頻數據時間戳上有同步。

    目前客戶測試下來,沒有再反饋此問題;


發佈了35 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章