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

问题描述 投票:4回答:1

SO ...

我具有通过RTSP捕获的RAW H.264视频数据在本地文件中,并且我试图在Java FX应用程序中回放视频。为此,我需要使用Http Live Streaming。

我已经成功地原型化了Java FX体系结构,该体系结构可以使用包含.m3u8(HLS索引)文件和.ts(MPEG-TS)文件集合的本地文件夹,通过HLS在本地服务器上播放视频。对我来说,最后一步是将.ts文件替换为.264 / .h264文件,然后在本地服务器中,将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

似乎我在基本流和传输流中缺少一些简单的东西。我已使用ffmpeg将我的H.264文件转换为TS文件,并尝试了解它们之间的区别。我对大概的格式差异有所了解,但是我仍然缺少细节。是否有人有显示此链接的链接,或者对如何通过MPEG-TS提供H.264附件B数据有一些简单的了解?

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

ffmpeg javafx h.264 http-live-streaming mpeg2-ts
1个回答
3
投票

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

要编写TS代码,请先尝试使用十六进制编辑器读取TS文件,然后参考Wikipedia文档。本书Video Demystified也有相当不错的文档。

© www.soinside.com 2019 - 2024. All rights reserved.