gpt4 book ai didi

java - 如何以正确的时机将音频数据发送到 Icecast?

转载 作者:行者123 更新时间:2023-12-01 12:53:05 26 4
gpt4 key购买 nike

我正在编写一个 Icecast 源代码。源目前处理 MP3。应用程序可以解析 MP3 文件以检索各个帧和其他元数据。应用程序正确地将元数据发送到Icecast服务器。

当应用程序尝试将 MP3 发送到 Icecast 时,就会出现此问题。它发送的速度太快,导致当我通过媒体客户端 (VLC) 收听时音频跳跃

我读到 Icecast 不处理音频流的时间,这是源的工作。我可以确定音频文件的持续时间以及有关每一帧的所有信息。

如何执行正确的计时?我应该在发送单个帧、批量帧之间等待吗?时间实际上由什么组成?

我尝试过的一种方法是让应用程序在发送批处理帧之间等待,但这并没有解决计时问题。

最佳答案

您必须以流的采样率发送音频数据。您必须使用的计时是播放速率的计时。如果您希望源流为 44.1kHz,则必须以 44.1kHz 发送该数据。

MP3 帧大小固定为 1,152 个样本。这意味着,如果您以 44.1kHz 发送流,则必须每秒向 Icecast 发送 38.28125 帧。我建议在源端设置一个大缓冲区,以便您可以以任何合理的速率进行解码,并使用另一个线程来保持发送数据时的计时。

关于java - 如何以正确的时机将音频数据发送到 Icecast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com