1

请指导我在我的程序中实现以下结果(用 C 编写):我有一个流源作为 HTTP MPEG TS 流(编解码器 h264 和 aac),它有 1 个视频和 1 个音频子流。我需要获取 MPEG ES 帧(相同的编解码器),通过 RTP 将它们发送到 RTSP 客户端。如果 libavformat 提供带有 RTP 标头的帧,那将是最好的。需要 MPEG ES,因为据我所知,黑莓手机上的媒体播放器不播放 TS(我试过了)。虽然,如果有人给我指出另一种格式,我很感激,在这种情况下更容易获得,可以容纳 h264 和 aac,并且在黑莓和其他手机上播放良好。

我已经成功完成了打开流和重新混合到 FLV 容器的其他任务。

试图用“rtp”格式打开两个输出格式上下文,也得到了帧。发送给客户。没有成功。

我还尝试将帧写入“m4v”AVFormatContext,得到帧,通过 NAL 剪切它们,在每个帧之前添加 RTP 标头,然后发送给客户端。客户端每 10 秒或更长时间显示第一帧并挂起,或播放一秒钟的视频+音频(比需要的更快)。在 VLC 播放器日志中我有这个: http: //pastebin.com/NQ3htvFi

为了简单起见,我已经缩放了时间戳以使它们以 0 开头。我将它与 VLC(或 Wowza,对不起,我不记得)将音频 TS 增加了 1024,而不是 1920 进行了比较,所以我做了额外的线性缩放以类似于其他流媒体。bigbuckbunny_450.mp4播放的包转储在这里:ftp: //rtb.org.ua/tmp/output_my_bbb_450.log

顺便说一句,在这两种情况下,我几乎都没有从 Wowza 或 VLC 复制 SDP。

得到我需要的东西的正确方法是什么?如果有一些类似于 libavformat 的库,我也很感兴趣?甚至可能处于胚胎状态。

4

0 回答 0