我目前正在使用流式傳輸應用程序在本地網絡上傳輸本地(24/96,16/48)wav文件。如何通過網絡發送/同步音頻流
我使用一個循環連續發送一大塊音頻並模擬播放,但是我有問題讓播放在發送者和接收者之間正確同步。
這是循環:
-- using a block size of 192 frames int bufsz = 192 * bytes_per_frame; char buf [ bufsz ]; int bytesread = buffer_callback (buf, bufsz); int bytes_per_second = bytes_per_frame * samplerate; sleeptime = bytesread * 1000/bytes_per_second * 1000; -- doing this to avoid gaps sleeptime = sleeptime - 200; usleep (sleeptime);
問題: 有其隨時間累積的延遲。在服務器端停止時,音頻會在接收端持續播放一段時間。如何正確同步播放?我使用正確的緩衝區大小嗎?睡眠時間計算是否正確?我想這是從睡眠時間減少200積累?
在此先感謝!
什麼延遲?你爲什麼要睡覺? –
然後是音頻波濤洶涌? –
我睡覺以模擬播放。延遲是當我在服務器前端停止播放時,播放不會立即停止在客戶端。希望我清楚。 – mdlfdbck