问题标签 [mpeg-4]

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

sdl - 在 Windows 上使用 SDL 或 Open Media Layer 加载 MPEG-4 H264,这可能吗?

我想以编程方式加载 MPEG-4 H264 视频格式。我想知道是否有人尝试过,或者知道是否可以在 Windows 上使用 SDL 或 Open Media Layer API。

0 投票
2 回答
376 浏览

ffmpeg - 在处理 MPEG4V1 数据方面需要帮助

我的情况是,我需要获取位于数据包开头的一大块 MPEG4V1Microsoft MPEG-4 VKI Codec V1数据由某些 DVR 单元发送)。

数据包结构如下所示:

  • 压缩的 MPEG4 数据
  • 长整数 - 事件和绊线的数量。
  • 长整数 - 事件数。
  • 事件 - 事件的顺序。
  • 长整数 - 绊线的数量。
  • 绊线 - 绊线序列。
  • 长整数 - 循环冗余码 (CRC)。

所以没有迹象表明如何知道MPEG4数据在哪里结束(或者在那里?),以及我应该从哪里开始阅读这些附加数据,如“事件和绊线的数量”等等......

我上传了两个数据包,因此您可以看到实际数据的样子: recvData1.txtrecvData2.txt

我尝试使用带有 avcodec_decode_video 函数的 FFmpeg 库来解码这些数据包,并从我的recvData缓冲区的末尾逐字节删除以希望得到任何结果,
但 FFmpeg 总是返回如下错误消息:

“[msmpeg4v1 @ 038865a0] 无效的起始码”、“[msmpeg4v1 @ 038865a0] 标头损坏”。

我不是知道 MPEG4 如何从内部工作的专家,但从错误消息来看,我清楚地看到我在缓冲区开始时丢失了一些用于解码的数据。

所以我不确定我在这里得到了什么部分/类型的 MPEG 数据。
也许它是某种 MPEG 的“帧”数据,带有“结束”指示或其他什么?

我什至将我的recvData缓冲区的开头与我在网上“http://www.trekmania.net/clips/video_clips4.htm”上找到的一些 MPEG4V1 编码的视频文件进行了比较,以检查我的缓冲区的开头是否真的包含MPEG数据..而不是某种DVR供应商特定的东西..

而且我注意到有大约 20 字节的数据(在我的数据包数据的开头,以及在大约 180 字节之后的 .avi 文件中......)看起来像某种标题或其他东西......

请检查此图片:“http://ggodis.gamedev.lt/stackOverflow/recvData.jpg”

也许有人知道这部分 MPEG4V1 数据代表什么?

PS ..我检查了我收到的数据包的 CRC 值,它们是正确的..

0 投票
1 回答
2187 浏览

ffmpeg - DirectShow RTSP SourceFilter 与 MPEG-4 视频流

我使用 FFmpeg 创建了一个简单的直接显示源过滤器。我从 RTSP 源读取 rtp 数据包并将它们提供给解码器。它适用于 h264 流。

坏消息是它不适用于 MPEG-4。 我可以将我的 rtsp 源过滤器与 MPEG-Decoder 连接起来。我没有例外,但视频渲染器没有显示任何内容。实际上只显示一帧然后什么都没有[只是停止]...解码器和渲染器是第 3 方,所以我无法调试它们。

我可以使用 FFmpeg 成功地从 MPEG-4 RTSP 源获取 rtp 数据包。没有问题。

似乎我没有在我的 Rtsps 源过滤器中设置一些东西(?),这对于 H264 流来说不是必需的,但对于 MPEG-4 流来说可能很重要

什么可能导致直接显示 rtsp 源过滤器中的这个 h264 流和 MPEG-4 流不同?有任何想法吗。

更多信息:

-- 首先,我为 MPEG-4 流尝试了一些其他 rtsp 源过滤器......虽然我的 rtsp 源是相同的,但我在它们的引脚连接中看到了不同的子类型。

-- 其次,如果源真的是 MPEG-4,我真的很怀疑,所以我用 FFmpeg 进行检查......FFmpeg 将源编解码器 ID 设为“CODEC_ID_MPEG4”。

更新: [黑客]

我只是设置 m_bmpInfo.biCompression = DWORD('xvid') 它工作得很好......但它是静态的。如何 使用 ffmpeg 或其他方式动态获取/确定此值...

0 投票
4 回答
48977 浏览

directshow - 如何处理原始 UDP 数据包,以便它们可以被 directshow 源过滤器中的解码器过滤器解码

很长的故事:

  1. 有一个 H264/MPEG-4 源
  2. 我可以用 RTSP 协议连接这个源。
  3. 我可以使用 RTP 协议获取原始 UDP 数据包。
  4. 然后将这些原始 UDP 数据包发送到解码器[h264/mp​​eg-4] [DS Source Filter]
  5. 但是那些“原始”的UDP数据包不能被解码器[h264/mp​​eg-4]过滤器解码

不久:

我如何处理这些原始 UDP 数据以便被 H264/MPEG-4 解码器过滤器解码?任何人都可以清楚地确定我与 H264/MPEG 流有关的步骤吗?

额外信息:

我可以用 FFmpeg 做到这一点......但我无法真正弄清楚 FFmpeg 如何处理原始数据,以便解码器可以解码。

0 投票
1 回答
5384 浏览

mpeg-4 - 关于 MPEG-4 标头

我检查了一些 MPEG-4 视频标头,并在开始时看到了一些如下所示的字节数组:

我知道零件,00 00 01但零件到底是什么意思?实际上,如果我把这个字节数组放在一个 MPEG-4 流的前面,它就可以正常工作。B0 B1B5 89 13

但我不知道这些值是否适用于不同的 mpeg-4 流源?

0 投票
4 回答
5524 浏览

c# - 使用 ffmpeg 从 IP 摄像机获取 Stream 并保存为 jpeg(图像)文件

我如何从网络摄像机获取流,它使用 RTP,流是 MPEG4,我有多播地址和端口,我有网络摄像机的 IP 地址和端口号。
而且我无法通过 http 访问(例如 http://ip/jpeg)而且我也无法使用 VLC 播放器访问流。例如 (rtp://ipadressofcam:port) 和 ( rtp://multicastaddress:port )
那么 ffmpeg 命令是什么?
我有 Windows 操作系统,我现在只用 C# 编写代码。
但是制作人创建了他们自己的用于查看 cam 的 ocx,该插件可以在 .net 上运行,但我不想使用它,因为它没有太多功能,我的意思是您无法获取当前图片或 cam 快照,这就是为什么我必须自己做。

0 投票
1 回答
2009 浏览

javascript - Windows Media Player、h264 支持和 Windows 版本

哪些 Windows 版本支持开箱即用的 h264 播放(使用 Windows Media Player)?是否可以通过 Javascript 检测支持是否可用?

我们通过 Flash 提供 MPEG-4 视频文件。我们收到用户希望保存视频的请求。但是,当启用下载按钮时,我们会抱怨视频无法播放,因为显然 Windows XP 无法播放 MPEG-4。

或者,我们可以通过 platform.js 实现平台检测并禁用已知不良平台的下载选项。

0 投票
1 回答
5901 浏览

rtsp - 从 RTP 有效负载中提取 MPEG4

我正在尝试从 rtp 有效负载中提取 mpeg4,rtsp 媒体(视频)的格式是 MP4V-ES,但我无法从有效负载中提取 mp4。当我将提取物转储到原始文件中并使用 ffmpeg 将其转换为 .avi 或 .mpg 时,它不起作用。我不知道我在这里错过了什么。代码是用java编写的。我想从 rtp 中提取每个视频帧并将其保存在文件中或重新传输。

谢谢

问题已更新.....感谢您的输入,实际上我可以从 000001b6 中提取字节并将其发送到 ffmpeg ,但它抱怨不是标头信息,然后我用 000001b0 00000000 和 000001B5 00000005 构建了一个标头并将其发送到ffmpeg,但没有运气。你能帮我吗,因为我从 RTP 得到的是 000001b6 [data] 和 000001b6 [data] 我什至跟着 'Cipi' 只添加了 000001 但没有工作。我在这里错过了什么吗!并且还想知道我是否需要解码/编码,因为我从 RTP 获得的是实际的 mpeg4 数据,然后我不知道为什么要解码它,我可以将它保存一个文件并使用 quicktime 或 VLC 打开吗?它应该显示正确的一帧。

0 投票
1 回答
400 浏览

directshow - 从 Rtp Packets 或通过其他方法获取 Stream Type

我有简单的 Rtsp 源过滤器,它连接 Rtsp 服务器并获取 Rtp 数据包。问题是我必须在我的 Rtsp Source Filter Pin 中设置媒体子类型... [现在我给子类型硬编码]

我想要的是根据即将到来的流使用子类型动态创建我的 pin。我从服务器获得 h264 和 mpeg-4 流。它们的 rtp 数据包有效负载格式是动态的:96...不能帮助我识别流是 mpeg4 还是 h264...

FFmpeg 可以从编解码器信息中获取流类型 [h264,mpeg4] ......但是我该怎么做呢?

最良好的祝愿

0 投票
2 回答
1675 浏览

rtsp - 从 rtsp (mp4) 流中提取每一帧

我试图从 rtsp mp4 流中提取每一帧,并使用 ffmpeg 将其转换为 jpeg/gif。我从 获取 sdp 标头000001b0.....000001b5,并将其添加到字节数组中,然后捕获从 开始的帧000001b6并将其附加到字节数组。

当我将其刷新到文件 (.mpg) 并使用 ffmpeg 时,它会引发错误而不是转换。我的标题看起来像000001B008000001B58913000001000000012000C488BA98514043C1463F,在此之后我附加了一个框架(从 开始000001b6)。