【发布时间】:2017-08-17 19:58:19
【问题描述】:
我目前正在开发一个流式传输应用程序,以在我的家庭网络上流式传输我的本地(24/96、16/48)wav 文件。
我使用循环连续发送一段音频并模拟播放,但我无法让播放在发送方和接收方之间正确同步。
这是循环:
-- 使用 192 帧的块大小 int bufsz = 192 * bytes_per_frame; 字符 buf [ bufsz ]; int bytesread = buffer_callback (buf, bufsz); int bytes_per_second = bytes_per_frame * 采样率; 睡眠时间 = bytesread * 1000 / bytes_per_second * 1000; -- 这样做是为了避免空白 睡眠时间 = 睡眠时间 - 200; 睡眠(睡眠时间);问题: 延迟会随着时间的推移而累积。当在服务器端停止时,音频会在接收端播放一段时间。如何正确同步播放?我是否使用了正确的缓冲区大小?睡眠时间计算正确吗?我猜是从睡眠时间中减去 200 累积起来的?
提前致谢!
【问题讨论】:
-
什么延迟?你为什么睡觉?
-
那声音是不是断断续续的?
-
我睡觉是为了模拟播放。延迟是当我在服务器前端点击停止时,播放不会立即在客户端停止。希望我很清楚。
-
不,音频不断断续续,只有我不从睡眠时间中减去 200 时,才会断断续续。
-
我也在睡觉,让前端的进度指示器与播放同步。如果我不这样做,我就会失去对客户端正在播放的内容的控制,并且当我向前搜索时,客户端可能无法及时响应。
标签: c audio-streaming