我正在写作,因为我在以前的主题中找不到答案。我正在使用live555来传输实时视频(h264)和音频(g723),这些都是由网络摄像头录制的。视频部分已经完成并且工作正常,但我对音频任务一无所知。
只要我读过,我就必须创建一个ServerMediaSession,我应该添加两个子会话:一个用于视频,一个用于音频。对于视频部分,我创建了OnDemandServerMediaSubsession的子类,FramedSource的子类和Encoder类,但是对于音频方面,我不知道应该以哪些类为基础实现。
网络摄像头以与视频分开的g723格式记录和传送音频帧。我会说音频是原始的,因为当我尝试在VLC中播放时,它说它无法找到任何起始码;所以我想这是网络摄像头录制的原始音频流。
我想知道是否有人可以给我一个暗示。
答案 0 :(得分:2)
对于音频流,重写OnDemandServerMediaSubsession :: createNewRTPSink应该创建一个SimpleRTPSink。
类似的东西:
RTPSink* YourAudioMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource* inputSource)
{
return SimpleRTPSink::createNew(envir(), rtpGroupsock,
4,
frequency,
"audio",
"G723",
channels );
}
频道和频道数应来自inputSource。