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

video - 如何使用 MPEG-2 编码 .yuv 视频

我正在尝试使用从 MPEG 下载的 mpeg 2 编码器(1.1 版)对 akiyo_cif.yuv 视频文件(分辨率 352 x 288)(从http://trace.eas.asu.edu/yuv/akiyo/akiyo_cif.7z下载)进行编码官方网站(http://www.mpeg.org/pub_ftp/mpeg/mss...c_v1.1a.tar.gz)。

参数文件内容如下

但我无法获得所需的输出。它仅显示整个持续时间的第一帧视频。

你能建议.yuv文件、参数文件或其他什么问题吗?

0 投票
0 回答
577 浏览

udp - gstreamer-1.0 UDP 接收器测试管道

我想用 gstreamer 接收 UDP 视频流。好吧,最终目标是将其播放到 QML 页面中,该页面又使用 gstreamer 作为后端。

因此,首先我想在低级别进行测试。

用 VLC 打开流显示:

MPEG-1/2 视频 (mpgv) 720x576 50 fps 平面 4:2:0 YUV

因为我正在运行一个定制的 Linux 系统,所以我不确定我是否拥有我需要的所有 gstreamer 插件。

我有:

我可以用来接收这个 UDP 流的最小管道是多少?

0 投票
1 回答
398 浏览

pascal - 读取 MPEG-2 时间码

我正在使用多年前的一些旧代码来计算 MPEG-2 视频的持续时间。似乎有些事情发生了变化,因为我的 49 秒视频需要 1 小时 49 秒。

在文件中找到最后一个 GOP Header,提取 4 字节 TimeCode 为“040E2AC0”。在 32 位 LongWord 中,这在 little endian 中读取为 3223981572。

然后使用汇编函数 bswap eax 交换字节序。结果是 68037312。然后一些 Pascal 代码像这样提取持续时间......

小时是 1 但应该是 0。分钟是正确的 0。秒是正确的 49。

我不擅长使用位操作来调试问题。这有什么问题吗?如果有帮助,我可以安排一个视频链接。

非常感谢,罗斯。

0 投票
0 回答
415 浏览

mpeg2-ts - 如何从程序流文件中正确解复用此 PES 数据包?

我正在对一个程序流文件进行解复用,但我无法弄清楚一个 PES 数据包携带的是什么。(见下图)。Stream ID 为 0xE0,所以是视频流。由于我正在读取程序流文件,因此它是唯一的视频流。如您所见,数据包长度为 0x9C,下一个字节 0x80 告诉我们前两位是“10”,正如预期的那样,PES_scrambling_control、PES_priority、data_alignment_indicator、copyright 和 original_or_copy 都为 0(未设置)。下一个字节 0x09 告诉我们设置了 DSM_trick_mode_flag 和 PES_extension_flag。下一个字节 0x78 是 PES 标头长度。如果我们跳过 PES 标头,我们将位于包含 33 个字节的帧区域的第一个字节。它以 00 37 B0 开头...解复用时应该跳过这 33 个字节,但我不知道为什么。非常欢迎任何意见或建议。

PES包图片

PES 数据包十六进制值作为文本:

0 投票
0 回答
1481 浏览

gstreamer - 使用 Gstreamer-1.0 播放 mpeg2ts

我正在尝试使用 Gstreamer-1.0 播放 .ts 文件,并且 gst-omx 已成功安装。尝试使用以下命令行格式播放 ts 视频,但无法播放。

也试过下面的命令,但没有奏效。

谁能帮助我如何使用 gstreamer 播放 mpeg2 编解码器格式的 .ts 文件

0 投票
0 回答
562 浏览

http-live-streaming - 从 HLS 流中提取 ts 段的第一帧(m3u8)

我想从 ts 段中提取第一个 video_frame(image) 。在我的清单文件中,m3u8 iframe 标签没有出现。谁能建议如何在不下载完整 ts 段的情况下提取第一个 video_frame(image) 。

0 投票
0 回答
204 浏览

video - 如何使用 gstreamer 缩小 mpeg2 传输流的帧大小

我正在尝试使用 gstreamer 缩小 mpeg2 传输流视频的分辨率。我使用 tsdemux 将流分解为音频部分和视频部分,添加一个 capsfilter 以缩小视频帧大小,然后使用 tsmux 组合音频和视频流。它失败并出现错误:

“从元素 udpsrc 收到:内部数据流错误。调试信息:gstbasesrc.c(2948):gst_base_src_loop():/GstPihomerun-pipeline/GstUDPSrc:udpsrc:流任务暂停,原因未协商(-4)”</p>

它甚至在不添加 capsfilter 的情况下失败了。

问题似乎来自 tsmux 中的组合,
无法生成 tsmux 中兼容的 sink pad,因为它出现错误“tsmux_pad_added handler: get sink pad failed” 如果任何专家可以提供有关如何使用 tsmux 的帮助信息,我将不胜感激,或有关如何更改传输流帧大小的信息。

以下是代码:

0 投票
0 回答
12349 浏览

macos - What ffmpeg settings to ensure 0 duplicate frames and 0 dropped frames when capturing to mpeg-2 program stream using ffmpeg/avfoundation on Mac?

I'm trying to capture to a DVD compliant mpeg-2 file (ffmpeg: -target ntsc-dvd) from the HDMI output of a camcorder into a Magewell HDMI to USB 3.0 box into my Late 2012 15" non-retina MacBook Pro (quad core 2.3, 16gb ram, ssd), using ffmpeg/avfoundation.

I've tried everything I can think of, or find online. I'm still getting duplicate and dropped frames, which either leads to audio/video sync issues, or audio dropouts, especially for longer recordings. I need this to be stable for recordings of up to 2.5 hours. This is the Terminal output for a 1.5 hour recording:

I deleted the middle part (denoted by the "..."), which is just a lot more of the same accumulating information. By the end there are 221 duplicate frames, and for this one I didn't get any dropped frames, but that happens every other time as well it seems.

With this code, the audio seems to stay in pretty good sync, but I get little dropouts every 30 seconds to a minute or so. On this recording, there are dropouts at:

00:00:43, 00:01:19, 00:01:47, 00:02:17, 00:03:18, ...

I stopped listening there; they happen at the end too, so I assume similarly spaced dropouts are happening throughout the file.

Is there some secret ffmpeg code to ensure there are no dropped or duplicate frames when capturing from a live source to dvd compliant mpeg-2 files?

When I convert from pretty much any type of file to mpeg-2 files using -target ntsc-dvd, the speed is something like 10x on this machine, so it seems like it would have no problem keeping up with a live source, right?

I've also tried constant bit rate using -b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 2500k, which also doesn't prevent dropped/duplicate frames.

I've tried separating out the audio and video inputs, which doesn't solve it.

I've tried using -vsync 0 on the video input, which does seem to solve the issue, because the output doesn't report dups/drops, but the audio/video drift out of sync more and more, so that hasn't worked either.

Thanks so much for any help. I've been testing and testing and searching and searching for weeks...

0 投票
0 回答
941 浏览

video - 如何编码低比特率/低质量的 MPEG2 视频?

有一些 YUV420 1920x1080 60FPS 视频我想用不同质量级别的 MPEG2 编码。根据stackoverflow: ffmpeg conversion to mpeg2video我可以用

qscale 参数具有线性比例 2-31,31 是最低质量,但它并不像我预期的最低质量 MPEG2 视频看起来那样糟糕。

还尝试了这些:

maxrate 被忽略,我收到消息说它太低并且 qmin 69 质量仍然高于我想要的。

有谁知道如何使用 ffmpeg 或我可以用来执行此操作的任何其他 MPEG2 编解码器来实现质量非常低的 MPEG2 视频?谢谢

0 投票
1 回答
334 浏览

mpeg-2 - 如何读取 MXF 文件中的 MPEG2VideoDescriptor?

下面是 MPEG2VideoDescriptor 的十六进制转储:

前 16 个字节:
06 0e 2b 34 02 53 01 01 0d 01 01 01 01 01 51 00(UID)
接下来的 4 个字节是 BER 大小:
83 00 00 f3(0xf3 个字节长)
接下来的 4 个字节:
3c 0a 00 10(0x3c0a 表示 Instance UUID,0x0010 是大小)
然后是 UUID:
a3 be 51 b2 00 05 e7 11 bf 82 21 97 f7 a0 14 ed
接下来的 4 个字节:
30 06 00 04(0x3006 表示 Linked Track ID 和 0x0004 是大小)
接下来的 4 个字节是 Linked Track ID:00 00 00 02
接下来的 4 个字节:30 01 00 08(0x3001 表示采样率,0x0008 是大小)
以下 8 个字节实际上是帧率分子和分母:
0000ea60== 60000 和000003e9== 1001 . 现在我们有了粗体部分:80 00 00 04

有人可以解释一下这是什么意思吗?

接下来的四个字节是01 c9 c3 80,它肯定是比特率(30000000),但我怎么能确定呢?

编辑:80 00 00 04
是否意味着以下内容: 0x8000 是一个动态标签。根据 SMPTE 337,标签 0x8000-0xFFFF 是动态分配的。0x0004 是大小(4 个字节)。如果这是真的,我怎么知道下面的 4 个字节实际上是比特率?它可以是任何东西,或者?
01 c9 c3 80