将H.264附件B转换为MPEG-TS

时间:2014-06-03 22:20:18

标签: ffmpeg javafx h.264 http-live-streaming mpeg2-ts

SO ......

我在本地文件中通过RTSP捕获了RAW H.264视频数据,我正在尝试在Java FX应用程序中播放视频。为了做到这一点,我需要使用Http Live Streaming。

我已经成功构建了一个Java FX架构的原型,该架构可以通过HLS与本地服务器一起使用包含.m3u8(HLS索引)文件和.ts(MPEG-TS)文件集合的本地文件夹播放视频。最后一部分是用.264 / .h264文件替换.ts文件,在本地服务器中,将H.264附件B数据转换/包装到MPEG-TS中。

我无法确定将H.264附件B纳入MPEG-TS所需的内容。我找到了以下信息......

  

“附件B通常用于实时和流媒体格式,例如   运输流......“

     

szatmary.org/blog/25

     

“文件的附件B指定了一种包装NAL的格式   单位格式类似于传统的MPEG视频基本格式   流,因此使其适用于像MPEG这样的容器   PS / TS无法提供所需的框架......“

     

wiki.multimedia.cx/?title=H.264

     

“Java FX支持多种不同的媒体类型。媒体类型是   被认为是容器格式与一个或多个的组合   编码。在某些情况下,容器格式可能只是一个   包含编码数据的基本流。“

     

docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html

     

“使用EXT-X-STREAM-INF标签的CODECS属性。当这个   属性存在,它必须包括所需的所有编解码器和配置文件   回放流......“

     

developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html

似乎我在Elementary和Transport Streams周围缺少一些简单的东西。我使用ffmpeg将我的H.264文件转换为TS文件并尝试理解其中的差异。我对大致的格式差异有所了解,但我仍然缺乏细节。有没有人有链接展示这个或知道如何通过MPEG-TS提供H.264附件B数据?

我不打算使用工具,我需要在本地使用自定义文件格式,我会解析H.264附件B数据并在运行中执行内存格式更改。我知道一种使用ffmpeg管道来实现这一目标的方法,但我不希望有任何依赖关系,性能很重要。

1 个答案:

答案 0 :(得分:3)

它不是格式更改。这是一个容器。无需解析附件b以将其写入TS文件。 TS包装了一个包含附件b流的PES。 mpegts格式非常复杂,特别是没有第三方库。我在工作中编写和使用的ts代码大约是1000行C ++。

要编写TS代码,首先尝试使用十六进制编辑器读取TS文件,然后引用维基百科文档。这本书视频揭秘也有相当好的文档。