c++ - 流式传输现场音频 live555

标签 c++ audio rtsp live live555

我正在写这篇文章,因为我在之前的主题中找不到答案。我正在使用 live555 来流式传输实时视频(h264)和音频(g723),这些视频是由网络摄像头录制的。视频部分已经完成并且运行完美,但我对音频任务一无所知。

只要我读过,我就必须创建一个 ServerMediaSession,我应该在其中添加两个子 session :一个用于视频,一个用于音频。对于视频部分,我创建了 OnDemandServerMediaSubsession 的子类、FramedSource 和 Encoder 类的子类,但对于音频方面,我不知道应该基于哪些类来实现。

网络摄像头以 g723 格式记录和传输与视频分开的音频帧。我想说音频是原始的,因为当我尝试在 VLC 中播放它时,它说找不到任何起始码;所以我认为这是网络摄像头记录的原始音频流。

我想知道是否有人可以给我提示。

最佳答案

对于音频流,您重写 OnDemandServerMediaSubsession::createNewRTPSink 应创建一个 SimpleRTPSink。

类似于:

RTPSink* YourAudioMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource* inputSource) 
{
   return SimpleRTPSink::createNew(envir(), rtpGroupsock,
                                       4,
                                       frequency,
                                       "audio", 
                                       "G723",
                                       channels );
} 

频率和 channel 数应来自 inputSource。

关于c++ - 流式传输现场音频 live555,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819485/

相关文章:

c++ - 获取指向 vector 元素的指针

c++ - 如何将删除器传递给 shared_ptr 持有的同一类中的方法

audio - 如何将 5.1 .flac 音轨添加到已经有 3 个音轨的 .ts 文件中?

objective-c - 如何在 OS X 中以编程方式创建多输出设备?

api - new.livestream.com API获取RTSP

android - 如何在Android中播放RTSP视频?

c++ - 为 OpenGL Gouraud 着色提供带有三角带和扇形的法线

c++ - 无法替换两跳之外的全局变量

python - 如何通过 Python 在 Mac 上播放 WAV 或 MP3 音频文件来触发?

android - 使用 HTML5 视频的 RTSP 流式传输导致 Android 上的服务器死机错误 (100,0)