【问题标题】:Starting with live555 and integrating with LIBMAD decoder从 live555 开始并与 LIBMAD 解码器集成
【发布时间】:2014-02-25 13:10:03
【问题描述】:
我对 MP3 流媒体和使用 live555 库开始一个项目完全陌生。我已经能够使用 VS 2010 编译库并试用了示例 testMP3Streamer。我可以使用 VLC 收听流,并且可以使用其他测试程序 testMP3Receiver 接收它。
我现在正在尝试在 live555 MP3 接收器(最终是音频播放器)中加入解码器,但不知道从哪里开始。我下载了 libmad 解码器,但不知道如何将其合并到 live555 中。
我正在寻找有关如何执行此操作的提示或示例
任何帮助将不胜感激。
【问题讨论】:
标签:
c++
streaming
mp3
decoder
live555
【解决方案1】:
今年我一直在广泛使用live555,从零开始。
我真的认为,为几种类型的流(视频、音频)和几个编码器阅读一些工作代码的最佳位置之一是在测试程序文件夹中,您可以找到 here
那么当你开始理解这个库是如何工作的时候就真的很容易了。
通常,如果您想插入解码器,您就在客户端上。
您必须知道收到的所有数据(实际数据,而不是 RTSP 命令)最终都在“接收器”中
然后你可以子类这个接收器(我给你的链接中有几个例子)并在这里实现你的解码器。
例如,看一下 testRTSPClient 中的视频解码器示例,我知道它是用于视频的,但它是一些自我解释的代码,你应该有一个很好的起点。
【解决方案2】:
一个起点可以是用 testRTSPClient.cpp 中的 DummySink 替换 testMP3Receiver.cpp 的 FileSink。
这样做,您将获得实现该方法的数据
void DummySink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes,
struct timeval presentationTime, unsigned durationInMicroseconds);