问题标签 [mpeg2-ts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2591 浏览

c++ - 从 SCTE 35 消息中的 pts 时间计算拼接事件的时间

正如我在文档中看到的,pts_time字段通常从网络程序开始就携带相关的 PTS。(dd/mm/yyyy hh:mm:ss.ms)但是我不知道如何根据这个值来计算正常时钟时间内拼接事件的时间pts_time

例如:一条 SCTE 35 提示消息,其pts_time值为 58855 Mhz。如何计算拼接事件发生的实际时间?

0 投票
1 回答
185 浏览

mpeg2-ts - Mpeg2 文件如何与 H.264 解析器一起播放?

我的 STB 上记录了 MPEG-2 TS 文件。剪辑的 VLC 媒体信息是类型:视频编解码器:Mpeg-1/2 视频(mpgv)类型:音频编解码器:MPEG AAC 音频(mp4a)我目前没有 Mpeg2 视频解析器,因此剪辑根本无法播放。但出于好奇,我为上述剪辑重用了现有的 H.264 视频解析器,并且该剪辑开始播放。我对此感到非常困惑。为什么会这样?有没有机会 H.264 和 Mpeg2 相关?它与编解码器和容器格式有关吗?请各位大侠详细解释一下......

0 投票
1 回答
3025 浏览

ffmpeg - Java library for converting MP4 to MPEG-2 TS in memory?

SO...

I have a Java FX application that runs an embedded HTTP Live Streaming server for video playback using the Media class (NOT live streaming, video on demand). The video playback consists of multiple files that are actually storing a collection of RTP packets. When my HttpHandler is called to handle the get request for the files (entries in the .m3u8 index file), I plan on...

  • Loading the file into memory
  • Creating a byte array of the RAW H264 packets
  • Convert (wrap?) the RAW H264 to a MPEG-2 TS (ffmpeg -i video.h264 video.ts)
  • Write the MPEG-2 TS contents to the response body so that it can be played

...one of my requirements is that I am not able to create local files, even temp ones. So I cannot create a .h264 file, use ffmpeg to create a .ts file, read the ts file and then write the contents to the response body.

As far as I can tell, Xuggler does not work with streams and JCodec is slow. I am fairly confident that I can dig into and understand the MPEG-2 TS format and simply convert the RAW H264 into the appropriate format, but this seems like a lot of needless work that should have been done before.

Anyone know of a simple way to convert RAW H264 to MPEG-2 TS? Or MP4 to MPEG-2 TS? I can use MP4Parser to create the MP4 data in memory quickly, I just need a java library that can generate MPEG-2 TS data, thanks!

0 投票
1 回答
4356 浏览

video - 如何将多节目传输流 (MPTS) 文件重新复用为单个 TS?

我有从卫星接收器记录的多个 MPTS 文件,我需要从每个文件中挑选程序/服务/PIDS,将它们重新多路复用到一个 MPTS 文件中。可选地,我可能能够从每个文件中获取所有服务并将它们添加到最终的 MPTS 中(以防有人知道一个不允许我挑选程序的多路复用器)

有人知道如何在 windows 或 linux 下使用开源或免费软件(例如 VLC 或 ffmpeg)来做到这一点吗?

0 投票
1 回答
4360 浏览

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

所以...

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

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

我无法弄清楚将 H.264 Annex B 转换为 MPEG-TS 需要什么。我找到了以下信息...

“附件 B 常用于直播和流媒体格式,例如传输流……”

szatmary.org/blog/25

“该文件的附件 B 指定了一种这样的格式,它以类似于传统 MPEG 视频基本流的格式包装 NAL 单元,从而使其适用于无法提供所需帧的容器,如 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 Annex B 数据的简单信息?

我不想使用工具,我需要在本地有一个自定义文件格式,我可以在其中解析 H.264 附件 B 数据并在内存中动态执行格式更改。我知道一种使用带有管道的 ffmpeg 来完成此任务的方法,但我不想有任何依赖关系,性能很重要。

0 投票
1 回答
153 浏览

mpeg2-ts - 断言 pos >= 188 mpeg ts

mpegts.c ( libavformathandle_packet() ) 的函数中,我得到了一个小于 188 的正值位置。这会导致断言失败。能否请您告诉这个问题的原因,并提出解决方案。

0 投票
2 回答
548 浏览

frame - 传输流标准

我想知道传输流的正确标准,我的一些疑问是:

  1. 如果 PES 数据包的大小 > 65536 那么pes_packet_length归档应该为零?
  2. 如果 PES 数据包大小超过 65536,那么我们是否需要 PES 标头用于溢出数据包?
0 投票
1 回答
708 浏览

android - mpeg2 ts android ffmpeg openmax

设置如下:

  1. 多播服务器 1000Mbs、UDP、Mpeg2-TS 第 1 部分 (H.222) 流式传输直播电视频道。
  2. 四核 1.5Ghz Android 4.2.2 GLES 2.0 渲染器。
  3. FFMpeg 库。
  4. 在 Windows 8.1 上运行的 Eclipse Kepler、Android SDK/NDK 等。
  5. 输出屏幕 1920 x 1080,我使用 2048 x 1024 的纹理,每秒帧数在 35 到 45 帧之间。

应用程序:

  1. 当媒体图像准备好时,渲染器线程连续运行并通过将片段上传到 gpu 来更新单个纹理。
  2. 媒体处理程序线程,从服务器/或本地存储下载和处理媒体。
  3. 视频线程,一个用于缓冲 UDP 数据包,另一个用于将数据包解码为帧。

我将 ffmpeg 连接到 UDP 流就好了,数据包正在被缓冲并且看起来解码得很好。数据包缓冲区很多,没有下/溢出。我面临的问题是它似乎正在分割帧(即每这么多帧中只播放 1 帧)。我知道我需要区分 I/P/B 帧,但目前,举起手来,我不知道。我什至尝试了一种黑客来检测 I 帧无济于事。另外,我只将帧渲染到不到屏幕的四分之一。所以我没有使用全屏解码。

解码后的帧也存储在单独的缓冲区中以消除页面撕裂。我也改变了缓冲区的数量,从 1 到 10 没有运气。

根据我对 OpenMax IL 的发现,它是否仅处理 MPeg2-TS 第 3 部分(H.264 和 AAC),但您可以使用自己的解码器。我知道您可以向其中添加自己的解码组件。值得我尝试这条路线还是应该继续使用ffmpeg?

帧解码器(只有渲染器会在准备好后转换和缩放帧) /* * 此函数将运行数据包并继续解码 * 直到帧首先准备好,或者没有数据包 */

数据包阅读器(作为 pthread 生成) void *mainPacketReader(void *voidptr) { int res;

渲染器只是简单地这样做 // 在调用这个函数之前已经绑定了纹理

过去,libvlc 也有音频同步问题,所以我决定使用 ffmpeg 并从头开始做所有的驴工作。

如果有人对如何停止视频播放的断断续续有任何指示(在 VLC 播放器中效果很好)或可能有另一条路线,我们将不胜感激。

编辑我删除了 I-frame 的 hack(完全没用)。将 sws_scale 函数从渲染器移至数据包解码器。我独自离开了 udp 数据包读取器线程。

与此同时,我还将数据包读取器线程和数据包解码器线程的优先级更改为实时。既然这样做了,我就不会丢弃大量丢弃的数据包。

0 投票
2 回答
2515 浏览

video - ffmpeg 与 live555 的区别

有谁知道live555和之间的主要区别是什么ffmpeg。似乎两者都能够进行视频流传输。是在传输流live555中执行RTSP,而ffmpegmpeg-2传输流中执行吗?谢谢,冉

0 投票
1 回答
6795 浏览

video - 手动编码为 MPEG-TS

所以...

我正在尝试获取 H264 Annex B 字节流视频并将其编码为纯 Java 中的 MPEG-TS。我的目标是创建一个最小的 MPEG-TS、单一节目、有效流并且不包含任何时间信息信息(PCR、PTS、DTS)。

我目前可以将生成的文件传递给 ffmpeg (ffmpeg -i myVideo.ts) 和 ffmpeg 报告...

...似乎这个开始时间的警告没什么大不了的...而且 ffmpeg 无法确定视频的长度。如果我从我的视频文件(ffmpeg -i myVideo.ts -vcodec copy validVideo.ts)创建另一个 mpeg-ts 文件并运行 ffmpeg -i validVideo.ts 我得到......

...所以你可以看到时间信息和比特率,元数据也是如此。

我的 H264 视频仅包含 I 和 P 帧(当然,SPS 和 PPS 在 I 帧之前),我创建 MPEG-TS 流的方式是......

  1. 在文件开头写一个 PAT
  2. 在文件开头写一个 PMT
  3. 从 SPS、PPS 和 I 帧创建 TS 和 PES 数据包(AUD NAL,如果需要的话?)
  4. 从 P 帧创建 TS 和 PES 数据包(同样,如果需要,也可以使用 AUD NAL)
  5. 对于 I 帧或 P 帧的最后一个有效载荷,将填充字节添加到适配字段以确保它适合完整的 TS 数据包
  6. 对整个文件重复 3-5

...我的 PAT 看起来像这样...

...我的 PMT 看起来像这样...

...注意在 c100 00 之后,“ff ff”,f0... 表示我们没有使用 PCR... 另请注意,我已更新我的 CRC 以反映 PMT 的此更改。我的第一个 I Frame 数据包看起来像......

...您会注意到 01e0 0000, 8000 00 是 PES 标头扩展名,我没有指定 PTS / DTS 并且剩余长度为零。我的第一个 P 帧数据包看起来像......

...并且每当 I 帧或 P 帧结束时,我都有一个带有适应字段的 TS 数据包...

...其中第一个 b0 字节是适配字段填充字节,其余字节是 I 或 P 帧的最后字节。所以你可以告诉我,我可以使用 ffmpeg 并将我的文件传递给它,以创建任何格式的有效电影。但是,我需要我创建的文件格式正确,我无法弄清楚我缺少的最后一块是什么。有任何想法吗?