我正在写这篇文章,因为我在之前的主题中找不到答案。我正在使用 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/