问题标签 [mpeg-2]

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 回答
1164 浏览

c++ - 如何从位图文件创建 .sub (vobsub sutitle sub/idx) 文件

我有一些位图文件(jpeg,png,...),我想编写一个 C++ 程序,将这些位图文件连接到 pes 流(mpeg-2 格式),然后创建一个子文件(.sub/.idx:vobsub字幕文件)。

你能给我一些提示吗?

谢谢

0 投票
1 回答
968 浏览

frame - 寻求MPEG-2,从哪里开始?

我希望能够寻找 MPEG-2 文件中的任意帧(来自 DVD,我猜它被称为 MPEG-2 程序流)。到目前为止,我一直在使用 OpenCV 2.1 来访问这些帧,但这只能在逐帧的基础上工作(仅向前搜索)。后来,当我安装 OpenCV 2.3.1 时,这种可能性就消失了,即仅限于 AVI。无论如何,我想在没有 OpenCV 的情况下做到这一点。我设法寻找关键帧(我想)或每一个帧(例如每 12 帧)。现在,看VirtualDub 的帧精确寻找是可能的。它说:''解析交错的 MPEG-2 文件''。这到底是什么意思,我必须从哪里开始做同样的事情?它甚至合法吗,我记得在某处读过一些关于它的东西,但我真的不记得了。我正在使用directshow在C++中编程。据我所知,directshow 不会这样做。然后我在研究 CBaseFilter、streamtime 方法等,但在我深入那个复杂的话题之前,我想知道这是否是正确的方法。期待您的解答,谢谢!

@Geraint:过滤图的代码片段:

然后我使用 IMediaSeeking 来寻找视频。我也尝试过帧步进(因此上面的参考资料)。

0 投票
1 回答
4498 浏览

ffmpeg - 使用 FFMPEG 将 VOB 转换为 MPEG-2 时丢失音频

我正在使用 FFMPEG 将 VOB 文件转换为 MPEG2 ffmpeg -i file.vob -c copy out.mpg

它可以很好地转换视频,但音频不会在生成的文件上播放。我明白了

错误,但设置-analyzeduration为 9999999 或更高并不能消除错误。

我认为它正在正确读取流:

这是我的安装信息

0 投票
1 回答
848 浏览

matlab - 使用 fread 在 matlab 中查找 mpeg 2 包

我对 .ts 文件使用 ts 分析器和 mpeg-2 编解码器,我发现它分成 7311 个数据包。我试图通过matlab通过使用fopen以二进制打开ts文件并fread来读取文件来找到这个,但我得到的只是一个包含大量数字集合的列(远高于数据包的数量)。有谁知道我如何确定这些数据中的哪些是数据包?或者,如果有人知道另一种查找数据包的方法会对我有很大帮助。先感谢您

0 投票
2 回答
907 浏览

mp3 - 可以在 MPEG-1/MPEG-2 帧的有效负载中找到错误的同步字吗?

我知道我可以在 SO 上找到有关此问题的其他答案,但我想从真正了解 MPEG-1/MPEG-2(或 MP3,显然)的人那里得到澄清。

MPEG-1/2 帧的开始是从字节边界开始的 12 个设置位,因此 bytes ff f*,其中*是任何半字节。这 12 位称为同步字。这是在任何 MPEG-1/2 流中查找帧开始的有用特性。

我的第一个问题是:形式上,是否可以在 MPEG-1/2 帧的有效负载中,在其标头之外找到错误的同步字?

如果是这样,这是我的第二个问题:为什么同步词机制甚至存在呢?如果在读取时不能确定是否找到了新帧fff,那么这个同步字的目的是什么?

请不要在您的回答中考虑 ID3;我已经知道可以在 ID3v2 有效负载中找到的同步词,但这是有据可查的。

0 投票
1 回答
1414 浏览

audio - 将 mp2 转换为 mpeg 传输流

此应用程序用于 HTTP Live Streaming。(仅限音频)

我有两个连续的 10 秒 mp2 文件(它们一个接一个地编码,但如果拼接在一起,则作为一个无缝文件播放)。我想从这些文件中创建两个 mpeg-2 传输流。不幸的是,当我执行以下操作时:

输出成功,但我得到以下信息:

另外,如果我使用 0.ts 和 1.ts 创建 m3u8 清单文件,则两者之间有一个空格。

因为我正在动态创建播放列表,所以我无法同时访问这两个文件,否则我会简单地连接然后在转换后对文件进行分段。

我在这里想念什么?我应该以不同的方式对 mp2 进行编码吗?我正在使用twolame,一次做10秒。

0 投票
2 回答
5186 浏览

video-streaming - MPEG TS 中的 PCR 准确度误差

什么是 PCR 准确度误差?

我正在开发从 TS 中提取特定程序、对它们进行多路复用、制作流 CBR 并传输它们的应用程序。

为了制作流 CBR,我在输出 TS 中插入了 NULL 数据包。

但是在分析仪上,我得到了 PCR-Accuracy_error 之类的错误。什么可能导致此错误。

我认为我的逻辑添加 NULL 以使 CBR 是完美的。您可以在附图中看到这一点。

在此处输入图像描述 请帮助我。

0 投票
2 回答
6379 浏览

raspberry-pi - 在 Raspberry Pi 上使用 Gstreamer-1.0 播放 mpeg2ts

程序员朋友们好,我正在尝试直接在 RPi 上使用 gstreamer 播放 .ts 文件。Gstreamer-1.0 和 gst-omx 已成功安装,此示例管道运行起来很迷人: gst-launch-1.0 -v filesrc location=h264_720p_hp_5.1_6mbps_ac3_planet.mp4 ! qtdemux ! h264parse ! omxh264dec ! autovideosink

它实际上甚至可以使用gst-launch-1.0 playbin uri=file:/root/h264_720p_hp_5.1_6mbps_ac3_planet.mp4

但是,如果我尝试使用 playbin 播放 .ts 文件,它实际上会运行它,但帧速率非常低,这使得这种方法无法使用。

如果我尝试构建类似于上面显示的自定义管道,我会遇到“tsparse”显然与“omxmpeg2videodec”不兼容的问题。

这就是我运行的:

输出此错误:

有谁知道如何让 gstreamer 流畅地播放 mpeg2-ts 文件?

我的目标是在同一个 RPi 上播放 mumudvb 提供的 http 单播 mpeg2-ts 流。

感谢您的帮助,将不胜感激!

编辑:omxplayer 播放 .ts 文件非常流畅,所以我认为我的问题与硬件或文件无关。

0 投票
1 回答
627 浏览

c++ - 未定义符号 (CLSID_CMPEG2EncoderVideoDS)

我无法编译使用 MPEG2 DirectShow 视频编码器的项目。我已经包含了 Wmcodecdsp.h,但是当我编译项目时,Visual C++ 在 CLSID_CMPEG2EncoderVideoDS 上给出了未定义的符号错误。我试图添加到项目 msmpeg2enc.dll,但链接器无法链接它没有导出表。

我得到的错误是关于这个:

CaptureGraph.obj:错误 LNK2001:未定义的外部符号“CLSID_CMPEG2EncoderVideoDS

0 投票
1 回答
7331 浏览

h.264 - Mpeg2 PES 解复用器:如何使用 H.264 视频流提取 PES 数据包?

我在 PES 解复用器中检测到新的 PES 数据包,搜索 packet_start_code_prefix (0x000001)。当它发生时,我可以读取 PES_packet_length,因此我可以从字节流中提取当前的 PES 数据包。但如果是 H.264 视频流,则 PES_packet_length=0。

在这种情况下如何提取PES数据包?0x000001 也可能出现在 H.264 最终单元字节流中,因此我不能使用此前缀来查找下一个 PES 数据包。

我注意到,在每个 H.264 PES 数据包中,PES 数据包中的最后一个最终单元是一个填充数据(nal_unit_type=12)。我是否需要使用这个事实来检测当前 PES 数据包的结束?