问题标签 [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.
sdl - 在 Windows 上使用 SDL 或 Open Media Layer 加载 MPEG-4 H264,这可能吗?
我想以编程方式加载 MPEG-4 H264 视频格式。我想知道是否有人尝试过,或者知道是否可以在 Windows 上使用 SDL 或 Open Media Layer API。
ffmpeg - 在处理 MPEG4V1 数据方面需要帮助
我的情况是,我需要获取位于数据包开头的一大块 MPEG4V1(Microsoft MPEG-4 VKI Codec V1)数据(由某些 DVR 单元发送)。
数据包结构如下所示:
- 压缩的 MPEG4 数据。
- 长整数 - 事件和绊线的数量。
- 长整数 - 事件数。
- 事件 - 事件的顺序。
- 长整数 - 绊线的数量。
- 绊线 - 绊线序列。
- 长整数 - 循环冗余码 (CRC)。
所以没有迹象表明如何知道MPEG4数据在哪里结束(或者在那里?),以及我应该从哪里开始阅读这些附加数据,如“事件和绊线的数量”等等......
我上传了两个数据包,因此您可以看到实际数据的样子: recvData1.txt, recvData2.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 值,它们是正确的..
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 或其他方式动态获取/确定此值...
directshow - 如何处理原始 UDP 数据包,以便它们可以被 directshow 源过滤器中的解码器过滤器解码
很长的故事:
- 有一个 H264/MPEG-4 源
- 我可以用 RTSP 协议连接这个源。
- 我可以使用 RTP 协议获取原始 UDP 数据包。
- 然后将这些原始 UDP 数据包发送到解码器[h264/mpeg-4] [DS Source Filter]
- 但是那些“原始”的UDP数据包不能被解码器[h264/mpeg-4]过滤器解码
不久:
我如何处理这些原始 UDP 数据以便被 H264/MPEG-4 解码器过滤器解码?任何人都可以清楚地确定我与 H264/MPEG 流有关的步骤吗?
额外信息:
我可以用 FFmpeg 做到这一点......但我无法真正弄清楚 FFmpeg 如何处理原始数据,以便解码器可以解码。
mpeg-4 - 关于 MPEG-4 标头
我检查了一些 MPEG-4 视频标头,并在开始时看到了一些如下所示的字节数组:
我知道零件,00 00 01
但零件到底是什么意思?实际上,如果我把这个字节数组放在一个 MPEG-4 流的前面,它就可以正常工作。B0 B1
B5 89 13
但我不知道这些值是否适用于不同的 mpeg-4 流源?
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 快照,这就是为什么我必须自己做。
javascript - Windows Media Player、h264 支持和 Windows 版本
哪些 Windows 版本支持开箱即用的 h264 播放(使用 Windows Media Player)?是否可以通过 Javascript 检测支持是否可用?
我们通过 Flash 提供 MPEG-4 视频文件。我们收到用户希望保存视频的请求。但是,当启用下载按钮时,我们会抱怨视频无法播放,因为显然 Windows XP 无法播放 MPEG-4。
或者,我们可以通过 platform.js 实现平台检测并禁用已知不良平台的下载选项。
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 打开吗?它应该显示正确的一帧。
directshow - 从 Rtp Packets 或通过其他方法获取 Stream Type
我有简单的 Rtsp 源过滤器,它连接 Rtsp 服务器并获取 Rtp 数据包。问题是我必须在我的 Rtsp Source Filter Pin 中设置媒体子类型... [现在我给子类型硬编码]
我想要的是根据即将到来的流使用子类型动态创建我的 pin。我从服务器获得 h264 和 mpeg-4 流。它们的 rtp 数据包有效负载格式是动态的:96...不能帮助我识别流是 mpeg4 还是 h264...
FFmpeg 可以从编解码器信息中获取流类型 [h264,mpeg4] ......但是我该怎么做呢?
最良好的祝愿
rtsp - 从 rtsp (mp4) 流中提取每一帧
我试图从 rtsp mp4 流中提取每一帧,并使用 ffmpeg 将其转换为 jpeg/gif。我从 获取 sdp 标头000001b0.....000001b5
,并将其添加到字节数组中,然后捕获从 开始的帧000001b6
并将其附加到字节数组。
当我将其刷新到文件 (.mpg) 并使用 ffmpeg 时,它会引发错误而不是转换。我的标题看起来像000001B008000001B58913000001000000012000C488BA98514043C1463F
,在此之后我附加了一个框架(从 开始000001b6
)。