so ...

我有通过RTSP在本地文件中捕获的RAW H.264视频数据,我试图在Java FX应用程序中播放视频。为此,我需要使用HTTP直播。

我已成功修改了一个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标签的编解码器属性。什么时候 属性存在,必须包含所需的所有编解码器和配置文件 播放流...“

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

似乎我缺少小学和传输流围绕的东西。我使用FFMPEG将我的H.264文件转换为TS文件并尝试了解差异。我知道近似格式差异,但我仍然缺乏细节来做。有没有人有一个链接展示这一点或知道如何在MPEG-TS上使用H.264附件B数据的简单符合MPEG-TS?

我不希望使用工具,我需要在本地拥有自定义文件格式,在那里我解析了H.264附件B数据并在飞行中执行内存中的格式变化。我知道一种使用FFMPEG与管道实现此方法的方法,但我不想有任何依赖性和性能很重要。

有帮助吗?

解决方案

它不是格式的变化。这是一个容器。无需解析附件B将其写入TS文件。TS包装包裹附件B流的PES。MPEGTS格式非常复杂,尤其是没有第三方库。我在工作中编写和使用的TS代码约为1000行C ++。

写入TS代码,首先尝试使用十六进制编辑器读取TS文件,并引用维基百科文档。这本书视频脱尾也有很好的文档。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top