问题标签 [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.
ffmpeg - 来自 MPEG4 流的运动矢量和 DC 系数
我需要从 MPEG4 视频中提取有关运动矢量和 DC 系数的信息。我搜索了相关站点和主题,发现一个好的解决方案是使用 ffmpeg 编解码器的代码。尤其是 libavcodec/mpegvideo.c 中的 ff_print_debug_info 函数计算相关信息。
但是,我是 C/C++ 领域的新手,如果有任何示例代码描述或解释如何提取 MV 和 DC 系数,这将非常有帮助。
在我使用的最新版本中(来自http://ffmpeg.org/download.html的 FFmpeg 0.10.2 )还有另一个文件 mpeg4videodec.c。有没有机会通过此代码检索所需的信息?
video - MPEG-4 解码器与 MPEG 2 解码器与 3GP 解码器,哪个更快,为什么?
在带有 ARM 和/ DSP 的 Android 平台上,哪个解码器会更快:MPEG-4 或 MPEG-2 还是 3GP?为什么?
谢谢
directshow - gdcl 多路复用器使用原始视频而不是 h264 创建文件
我创建了一个如下图(我使用 osprey 卡输入直播流)
(图形编辑工具)
Osprey 中的模拟视频----> GDCL MPEG-4 多路复用器----> 文件编写器(.mp4 文件)
文件大小很大;即使是 5 秒的文件也有 80 mb 大小。文件无法播放。
当我使用 ffmpeg -i 在 ffmpeg 中查看文件详细信息时,
它会给出像流 0、缺少强制原子、损坏的标头这样的错误
以下是 ffmpeg 响应。
ffmpeg.exe -i "C:\Documents and Setti ngs\Administrator\Desktop\mp4file\mp4file.mp4" ffmpeg 版本 N-38938-ge01f478 版权所有 (c) 2000-2012 FFmpeg 开发人员于 2012 年 3 月 19 日 23:18 构建: 25 与 gcc 4.6.2 配置:--disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzli b --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable -libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-l ibrtmp --enable- libschroedinger --enable-libspeex --enable-libtheora --enable-li bvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-l ibx264 --enable-libxavs --enable -libxvid --enable-zlib libavutil 51. 42.100 / 51. 42.100 libavcodec 54. 12.100 / 54.12.100了libavformat 54. 2.100 / 2.100 54 53 libavdevice 4.100 / 4.100 53 2 libavfilter 65.101 / 2 65.101 libswscale 2. 1.100 / 1.100 2 0 libswresample 7.100 / 0 7.100 libpostproc 52 0.100 / 52 0.100 [ mov,mp4,m4a,3gp,3g2,mj2 @ 003E28E0] 流 0,缺少强制原子,损坏的标头输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自 'C:\Documents and Settings\Administrator \Desktop\mp4file\mp4file.mp4':元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s 流 #0:0(eng):视频:rawvideo (YUY2 /0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须至少指定一个输出文件2.100 / 54. 2.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 65.101 / 2. 65.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / mp4, 010.0.52 m4a,3gp,3g2,mj2 @ 003E28E0] 流 0,缺少强制原子,损坏的标头输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自 'C:\Documents and Settings\Administrator\Desktop\mp4file \mp4file.mp4':元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s 流 #0:0(eng):视频:rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须至少指定一个输出文件2.100 / 54. 2.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 65.101 / 2. 65.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / mp4, 010.0.52 m4a,3gp,3g2,mj2 @ 003E28E0] 流 0,缺少强制原子,损坏的标头输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自 'C:\Documents and Settings\Administrator\Desktop\mp4file \mp4file.mp4':元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s 流 #0:0(eng):视频:rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须至少指定一个输出文件100 libavfilter 2. 65.101 / 2. 65.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / 52. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 003E28E ,缺少强制性原子,损坏的标头输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'C:\ Documents and Settings\Administrator \Desktop\mp4file\mp4file.mp4':元数据:major_brand:mp42 minor_version : 0 compatible_brands: mp42isom 持续时间: 00:00:00.00, 比特率: -2147483 kb/s Stream #0:0(eng): Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc元数据:handler_name:必须至少指定一个输出文件100 libavfilter 2. 65.101 / 2. 65.101 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 7.100 / 0. 7.100 libpostproc 52. 0.100 / 52. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 003E28E ,缺少强制性原子,损坏的标头输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'C:\ Documents and Settings\Administrator \Desktop\mp4file\mp4file.mp4':元数据:major_brand:mp42 minor_version : 0 compatible_brands: mp42isom 持续时间: 00:00:00.00, 比特率: -2147483 kb/s Stream #0:0(eng): Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc元数据:handler_name:必须至少指定一个输出文件7.100 libpostproc 52. 0.100 / 52. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 003E28E0] 流 0,缺少强制原子,损坏的标头输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自“C:\Documents and Settings\Administrator\Desktop\mp4file\mp4file.mp4”:元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s 流#0: 0(eng): Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须指定至少一个输出文件7.100 libpostproc 52. 0.100 / 52. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 003E28E0] 流 0,缺少强制原子,损坏的标头输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自“C:\Documents and Settings\Administrator\Desktop\mp4file\mp4file.mp4”:元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s 流#0: 0(eng): Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须指定至少一个输出文件\Documents and Settings\Administrator \Desktop\mp4file\mp4file.mp4':元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s Stream #0:0(eng) : 视频: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须至少指定一个输出文件\Documents and Settings\Administrator \Desktop\mp4file\mp4file.mp4':元数据:major_brand:mp42 minor_version:0 compatible_brands:mp42isom 持续时间:00:00:00.00,比特率:-2147483 kb/s Stream #0:0(eng) : 视频: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 90k tbr, 90k tbn, 90k tbc 元数据: handler_name : 必须至少指定一个输出文件
我需要进行任何 gdcl 过滤器设置吗?请帮我解决问题。
internet-explorer - 如何让 IE 6 播放 MPEG-4 HTTP 流?
我在http://pool.amursu.ru/video.mpg有 MPEG-4 视频流,我可以使用 Chrome 或 Firefox 观看它,但 Internet Explorer 6 不播放它,只是尝试永远加载它(我想想,它等待文件结束,这可能永远不会发生)。
我尝试使用 Flowplayer 和 JWplayer,但没有成功:
视频流由 D-Link DCS-2130 网络摄像头完成并由 nginx 代理。
有什么想法让它在 IE 中工作吗?
PS> 我可以为视频流设置 video/mpeg MIME 类型,但它会破坏 Chrome 中的播放并且对 IE 没有帮助。
更新:
现在我做了一个不公平的解决方案:在相机的 Web 界面中找到一个 URL,我可以从中获取单个视频帧,用 Nginx 代理它,然后用 javascript 每秒刷新一次。完全不公平,但无处不在。http://pool.amursu.ru/
ffmpeg - ffmpeg h.264 无效切割
我有一个包含数百个视频文件的 s3 存储桶。
这些文件是通过使用 ffmpeg 剪切较大视频文件的一部分而创建的。
我为此编写了一个脚本,它从另一个存储桶下载原始视频文件,运行 ffmpeg 剪切文件,并将新文件上传到它的存储桶。为了从/向 s3 下载和上传,我使用了这个 php 库。
我使用的 ffmpeg 语法:
这应该只是在指定时间之间剪切原始文件,而不对 a/v 编解码器进行任何更改。
所有原始视频文件都以 h.264 编码,这也是新文件所需的编码(将通过 CDN 流式传输到客户端的 Flash 播放器)。
我的问题是只有一小部分新文件以 h.264 编码输出,但大多数不是(h.264 是必须的,否则文件不会在客户端播放)。
我无法将问题追溯到原始视频,因为当我手动使用相同的 ffmpeg 命令、相同的参数和相同的文件时,输出文件就很好了。似乎随意。
我使用 ffprobe 来获取有关文件编解码器的信息。
例如:
大型(原始)视频文件之一的 ffprobe:
...
流 #0.0(und):视频:h264、yuv420p、640x352、499 kb/s、25 fps、25 tbr、90k tbn、50 tbc
...
对应新剪切文件的ffprobe:
...
流 #0.0(und):视频:mpeg4、yuv420p、640x352 [PAR 1:1 DAR 20:11]、227 kb/s、25 fps、25 tbr、25 tbn、25 tbc
...
可以看出,区别在于“mpeg4”与“h264”。
任何关于什么可能导致新文件以错误编码出现的见解将不胜感激。
谢谢!
编辑:问题已解决
在分析了所有文件后,我注意到其中大约三分之二的文件使用了错误的编解码器。
由于我在切割过程中使用了三台机器(三台独立的 EC2 服务器),我突然想到其中两台 ffmpeg 安装错误(正如@LordNeckbeard 在他的回答中所建议的那样)。
我再次运行该过程,仅在无效文件上,仅在第三台机器上 - 产生了预期的结果。
video - H.264 视频和 MPEG-4 视频有什么区别?
这两个是一样的吗?MPEG-4 的 H.264 编解码器是什么?如果我需要将 flv 转换为高清 H.264 视频格式怎么办?我想制作在线电视流媒体并想使用 PHP 或 Python。
video - MPEG-4 和 alpha 透明度 - 正在进行的传奇
我想对以下问题达成某种明确的答案:
- 基于 MPEG-4 的编解码器是否支持 alpha 透明度?
- 有什么方法可以合理地确定 的输出中没有 alpha 通道
ffprobe
?
我在这个主题上找到了一些链接:
此外,基于 H.264 的 QuickTime 电影现在支持透明 Alpha 层(H.264 规范的可选部分)。
英特尔® 集成性能基元 6.0 版本现在提供对 H.264 解码器中 alpha 通道的支持。
MPEG4 Simple Studio Profile 支持辅助通道,可用于 alpha 或深度 - 甚至可能用于位移、运动矢量、法线等。
但是,我从未见过具体的例子,或者关于如何使用这些已宣布的功能的任何细节。
video - 逆向工程未知 mpeg4
我有一般编程相关的问题。我有一个未知 mpeg4 格式的视频,我想编写 ac 程序将其解码为已知的 mpeg4 格式。我对我的输入 mpeg4 格式一无所知。我应该从哪里开始有什么想法?
问候, Farrukh Arshad
android - Android - 合并两个 MP4 文件
我正在编写一个 Android 项目,我正在录制几个音频文件。因此,我正在设置以下参数。录音工作正常。
我的问题是每次录制时,输出都写在一个单独的文件中。现在,我需要将这些文件合并为一个文件。有谁知道如何在 Android 项目中组合多个 MPEG 4 文件?
谢谢你的帮助....
c# - 如何使用 C# Metro 应用程序从 mp4 文件中提取特定帧
我没有找到从 Windows 8 应用程序 Metro 风格的 mpg4 文件中提取特定帧(例如:帧 1、2 和 13)的方法。我找到了如何提取框架并使用 C++ 直接将其保存在文件中。我只需要使用 C# 来提取 BitmapImage 对象中的帧以在图像中显示它。任何人都可以帮助我吗?