问题标签 [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.
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文件、参数文件或其他什么问题吗?
udp - gstreamer-1.0 UDP 接收器测试管道
我想用 gstreamer 接收 UDP 视频流。好吧,最终目标是将其播放到 QML 页面中,该页面又使用 gstreamer 作为后端。
因此,首先我想在低级别进行测试。
用 VLC 打开流显示:
MPEG-1/2 视频 (mpgv) 720x576 50 fps 平面 4:2:0 YUV
因为我正在运行一个定制的 Linux 系统,所以我不确定我是否拥有我需要的所有 gstreamer 插件。
我有:
我可以用来接收这个 UDP 流的最小管道是多少?
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。
我不擅长使用位操作来调试问题。这有什么问题吗?如果有帮助,我可以安排一个视频链接。
非常感谢,罗斯。
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 数据包十六进制值作为文本:
gstreamer - 使用 Gstreamer-1.0 播放 mpeg2ts
我正在尝试使用 Gstreamer-1.0 播放 .ts 文件,并且 gst-omx 已成功安装。尝试使用以下命令行格式播放 ts 视频,但无法播放。
也试过下面的命令,但没有奏效。
谁能帮助我如何使用 gstreamer 播放 mpeg2 编解码器格式的 .ts 文件
http-live-streaming - 从 HLS 流中提取 ts 段的第一帧(m3u8)
我想从 ts 段中提取第一个 video_frame(image) 。在我的清单文件中,m3u8 iframe 标签没有出现。谁能建议如何在不下载完整 ts 段的情况下提取第一个 video_frame(image) 。
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 的帮助信息,我将不胜感激,或有关如何更改传输流帧大小的信息。
以下是代码:
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...
video - 如何编码低比特率/低质量的 MPEG2 视频?
有一些 YUV420 1920x1080 60FPS 视频我想用不同质量级别的 MPEG2 编码。根据stackoverflow: ffmpeg conversion to mpeg2video我可以用
qscale 参数具有线性比例 2-31,31 是最低质量,但它并不像我预期的最低质量 MPEG2 视频看起来那样糟糕。
还尝试了这些:
maxrate 被忽略,我收到消息说它太低并且 qmin 69 质量仍然高于我想要的。
有谁知道如何使用 ffmpeg 或我可以用来执行此操作的任何其他 MPEG2 编解码器来实现质量非常低的 MPEG2 视频?谢谢
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