音視頻不同步
1、問題現象:iOS版本在網絡環境差的情況下,會比較容易出現音視頻不同步的問題
2、問題分析:
經多次測試發現,觀看時間越長,音頻延遲的越嚴重;
然後查看Log,發現音頻接收緩存隊列中並沒有堆積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之後的版本中也有加入音視頻同步機制,保證接收到的音頻和視頻數據時間戳上有同步。
目前客戶測試下來,沒有再反饋此問題;