用 ts 包装 h264 流(传输流)

Posted

技术标签:

【中文标题】用 ts 包装 h264 流(传输流)【英文标题】:Wrapping an h264 stream with ts (transport stream) 【发布时间】:2018-08-20 15:09:07 【问题描述】:

假设我有一个包装在 RTP 中的 H264 数据传入流。剥离 RTP 标头后,如何将其重新包装成 TS 标头(传输流)以在 Web 浏览器上播放?我知道 Ffmpeg 可以做到,但不在 Windows 或 linux 平台上。所以我需要手动完成。我需要一个简单的 c 或 c++ 库。

【问题讨论】:

【参考方案1】:

我会试试http://www.live555.com/liveMedia/。有许多与您的需求相似的示例应用程序。 查看 testH264VideoToTransportStream。

注意:它可能不仅仅是交换标题。有时 SPS/PPS(元数据)不会在 H.264 流中重复。所以你已经通过 RTSP 收获了 SPS/PPS,然后将 SPS/SPS 注入到 MPEG-2 传输流中。

Live555 构建在多种平台上,但如果您是裸机,则可能需要进行一些代码调整。

【讨论】:

谢谢。关于元数据——如果我只关心视频本身呢?我不在乎相机什么的。 SPS/PPS 是元数据,但它是解码流的重要组成部分。它包含解码器需要的分辨率、帧速率、色彩空间和其他信息。有时 SPS/PPS 在 RTP 流中重复 - 如果不是 - 这是一般情况,而不是您必须通过 RTSP 获得 SPS/PPS。

以上是关于用 ts 包装 h264 流(传输流)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序中将传输流转换(重新包装)为 MPEG-4 容器?

如何使用ffmpeg实现h264流传输+H264实现RTP传输数据

使用 .ts 流 url 在网络上实时流式传输

如何在 iOS 本地播放 .ts(传输流)文件

数字广播TS流简介

ES流PES流PS流和TS流介绍