问题标签 [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 投票
1 回答
1248 浏览

ffmpeg - 如何在不编码的情况下更改 MPEG2-ts?

我有很多用于苹果流媒体的 ts 文件(MPEG2-TS 格式)。我可以使用 ffmpeg 更改此文件的 PTS/PCR 参数吗?

0 投票
1 回答
1186 浏览

ios - 是否可以在 ios 中播放 h264-mpegts 格式?

服务器将视频转码到h264/aac,同时将视频数据发送给客户端。为了同时播放和保存视频数据,我使用mpegts作为容器格式,但问题是ios MediaPlayer无法播放mpegts文件。

谷歌说我可以使用 ffmpeg 的 ios-build 来完成任务,但这似乎有点过头了。有没有其他方法可以仅使用 iOS SDK 在 iphone 中播放 mpegts?

0 投票
1 回答
912 浏览

ios5 - MPEG2TS 容器中的 H.264 视频

我有一个硬件编解码器,它以 H.264(基线配置文件,级别 3)编码视频,我将其打包到 MPEG2 传输流中,以便将其流式传输到 iDevices(HTTP 实时流)。

我遇到的问题是视频只能在较新的 iDevices(iPhone 4S/iPhone 5、iPad 2/3)上播放,而不是在较旧的 iPhone 或 iPad 1 上播放(屏幕上有活动,但没有任何东西接近实际视频)。

此外,当它工作时,视频以帧速率的 1/2 播放(30 fps 播放为 15 fps)。

Mac Mini 或 Macbook Pro 上的 Safari 没有任何问题。VLC & mplayer 对 TS 文件也没有任何问题。

当我将相同的视频打包到 MP4 容器中时,所有设备都可以正常播放视频。

  1. 有关如何调试此问题的任何建议?

  2. 有什么方法可以从 iPhone 或 iPad 获取调试信息来帮助我弄清楚发生了什么?

0 投票
1 回答
1005 浏览

libav - LibAV Mpeg_TS 流似乎不包含 I 帧

我正在尝试获取 YUV 420 流,将其转换为 MPEG2 并通过 UDP 作为传输流发送。

转换似乎工作正常,通过保存输出我可以创建一个可播放的 MPEG。在wireshark 中查看传输的数据包时,我可以看到程序关联和程序映射表(它们看起来是正确的)以及b 帧和p 帧。我看不到任何 I 帧,但可以看到 MPEG 序列标头数据包。

使用 VLC 我无法查看流(UDP://239.192.1.114:6677)

下面是一段代码,展示了视频包的转换和传输。

任何关于为什么我看不到 I 帧的想法将不胜感激。

0 投票
2 回答
21846 浏览

c++ - MPEG2 演示时间戳 (PTS) 计算

我有一个 MPEG2 TS 文件,现在我有兴趣从每个图片帧中提取 PTS 信息。我知道 PTS 用 33 位描述,包括 3 个标记位。但我不知道如何将这个位域转换为更易于理解的形式(秒、毫秒)。有人可以帮我吗

0 投票
1 回答
2523 浏览

rtp - 当 MPEG2 流通过 RTP 进入 MPEG-TS 容器时,如何找到帧结束?

我正在通过 RTP 接收 MPEG2-TS 流。但我无法找到特定帧的结尾。当只有 MPEG2 流通过 RTP 时,当任何帧结束时,RTP 标头中的标记位设置为 1,但在这种情况下,标记位始终为 0。谁能帮助我,我怎样才能找到帧结尾以防万一MPEG2-TS?

0 投票
1 回答
1243 浏览

video - 我想做一个 mpeg-2 解码器

最近,我对 mpeg-2 标准产生了兴趣。我突然想到我想做一个 mpeg-2 解码器。我已经在研究 mpeg 系统部分,它涵盖了流打包机制,如传输流或程序流。但我也想知道视频和音频基本流的结构。我实际上是想告诉你,我真的很想制作自己的 mpeg-2 解码器。

尽管有很多关于 mpeg-2 系统部分的好书,但我找不到任何有用的书来介绍基本流的结构以及如何正确处理它们。我发现的只是一本解释视频如何编码以及各种编码技术的书。

你们会建议我一本有用的书,当我处理 mpeg-2 文件时我可以参考它吗?希望你们愿意去做。

0 投票
1 回答
1271 浏览

udp - 使用 .NET 缓冲和处理实时多播数据

我正在尝试解析通过多播接收的 MPEG2-TS 数据。问题是接收方法有时会跳过数据包 - 我相信这在很大程度上取决于连续 Receive() 方法之间进行的额外处理[根据我所做的研究,如果 CPU 不在 Receive() 方法上,数据包将丢失,因此缓冲将是不立即处理的最快选择,并将其留给另一个线程完成......我对吗?]。

我目前正在使用队列来保存接收到的数据报,以便以后使用 dequeue 方法从另一个线程处理。我还切换到使用在新线程上初始化的阻塞多播接收器,而不是异步接收器,以确保没有延迟从一个线程委派到另一个线程[例如,当使用 OnReceiveFrom() 方法时]。

组播接收器的代码如下:

即使从字面上将所有收到的数据报转储到一个 .ts 文件中,在 VLC 中播放时,人们可能会注意到像素化和音频跳过。实际上,由于wireshark将数据包全部按顺序显示,因此网卡成功接收数据包,并且在VLC中可以毫无问题地播放流(直接打开流时)。

你会建议什么来改善结果?

0 投票
1 回答
3359 浏览

c++ - “即时”将多个视频文件合并为一个 mpeg-ts 文件

首先,对不起我糟糕的英语。我正在用 C++ 编写视频流服务器。我有多个 mpeg2-ts 文件(电影和广告),我需要通过 HTTP 将它们作为一个 TS-FILE 流式传输。问题是每个 mpeg-ts 文件都有自己的时间戳(PCR、PTS、DTS)。而且,据我了解,要进行连续的流式传输,每个新的 PCR(PTS,DTS)值都应该从上一个 PCR(PTS,DTS)值继续。

这是一张图片,可以更好地理解我所说的:http: //i.stack.imgur.com/vL1m6.png(我不能直接在消息中包含我的图片。抱歉)

我需要用新的时间戳替换 pcr`1、pcr`2、pcr`3 时间戳。例如,我发送了包含 pcr3 时间戳的 ts-packet,在再发送几个 ts 数据包(不包含任何 PCR 值)之后,我想插入我的广告。我的问题是:如何计算 pcr`1、pcr`2、pcr`3 等的新值?

计算当前视频的比特率,然后用这个比特率除以自最后一个 PCR 时间戳(在我们的例子中是 pcr3)以来程序发送的比特量是否正确?我的意思是:(新时间戳)=(前一个时间戳)+(比特数)/(比特率)。还是有更有效的方法来做到这一点?

至于 PTS 和 DTS 时间戳,我在这里读到这些时间戳可以是非线性的。相对于我收到的最后一个原始 PCR 计算它是否正确?我是说:

我的程序可以在 mpeg-ts 流中读取和编辑这些时间戳。幸运的是,有很多关于如何做到这一点的文献。但是如何计算这些时间戳的新值呢?

刚开始学习mpeg2-ts的规范,如有错误请指正。提前致谢。希望你能理解我。

0 投票
0 回答
650 浏览

streaming - 除了 OS X 和 iOS,HLS H264/AAC 流功能完美吗?

我们正在开发一个开源流媒体服务器,但在实现 HLS 时遇到了一些麻烦。

我们已经能够成功地将任何我们想要的流转换为 TS 并分段为 HLS 分段,并且它可以在大多数播放器上完美播放……除了 Apple 播放器(iPad、iPhone、Safari、Quicktime)。在这些方面,需要非常小心地选择 H264 编码设置,即使坚持使用 Baseline/3.0,也可以看到一些明显的故障。

AAC 音频,无论我们如何编码(ffmpeg 的 aac 和 libfkd_aac 编码器都在几乎所有可能的配置中进行了尝试)听起来也很不稳定。(同样,所有这些版本都可以在非 Apple 播放器上正常播放。)有时更改编码设置确实会产生更好的结果,但我们无法找到适用于我们测试过的每个视频的任何组合.

这使我们得出结论,也许基于 Apple 的播放器需要 TS 流本身中的某些我们没有正确执行的内容。有什么可能导致这种行为吗?作为参考,我们的打包器/分段器输出的 HLS 测试流可以在这里找到:链接

我们感谢任何反馈!