问题标签 [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 回答
681 浏览

iphone - Cocoa Touch: Capturing Still Poster Frame from Video File?

I have an app that records videos. It will display each video in its interface, and I'd like to have a little thumbnail to represent each video. OS X shows a preview of the video, a poster frame taken some few seconds into the file. I'd like to do something similar. I've heard it called a "poster frame" but the Googles aren't helping for this one.

Can anyone point me at the appropriate API that would help me do this?

Thanks,

Aaron

0 投票
0 回答
1053 浏览

c - Remux MPEG TS -> RTP MPEG ES

请指导我在我的程序中实现以下结果(用 C 编写):我有一个流源作为 HTTP MPEG TS 流(编解码器 h264 和 aac),它有 1 个视频和 1 个音频子流。我需要获取 MPEG ES 帧(相同的编解码器),通过 RTP 将它们发送到 RTSP 客户端。如果 libavformat 提供带有 RTP 标头的帧,那将是最好的。需要 MPEG ES,因为据我所知,黑莓手机上的媒体播放器不播放 TS(我试过了)。虽然,如果有人给我指出另一种格式,我很感激,在这种情况下更容易获得,可以容纳 h264 和 aac,并且在黑莓和其他手机上播放良好。

我已经成功完成了打开流和重新混合到 FLV 容器的其他任务。

试图用“rtp”格式打开两个输出格式上下文,也得到了帧。发送给客户。没有成功。

我还尝试将帧写入“m4v”AVFormatContext,得到帧,通过 NAL 剪切它们,在每个帧之前添加 RTP 标头,然后发送给客户端。客户端每 10 秒或更长时间显示第一帧并挂起,或播放一秒钟的视频+音频(比需要的更快)。在 VLC 播放器日志中我有这个: http: //pastebin.com/NQ3htvFi

为了简单起见,我已经缩放了时间戳以使它们以 0 开头。我将它与 VLC(或 Wowza,对不起,我不记得)将音频 TS 增加了 1024,而不是 1920 进行了比较,所以我做了额外的线性缩放以类似于其他流媒体。bigbuckbunny_450.mp4播放的包转储在这里:ftp: //rtb.org.ua/tmp/output_my_bbb_450.log

顺便说一句,在这两种情况下,我几乎都没有从 Wowza 或 VLC 复制 SDP。

得到我需要的东西的正确方法是什么?如果有一些类似于 libavformat 的库,我也很感兴趣?甚至可能处于胚胎状态。

0 投票
1 回答
2291 浏览

ffmpeg - 如何创建解码器的完整副本?

我正在为 mpeg4 视频流的自定义实现编写视频解码器(使用 FFMPEG/AVCodec)。这个视频流的特点是它可以分成许多“子”流,创建许多基于同一父级的 P 帧。我试图解码的视频流实际上是一种“视频树”。像这样的东西:

我已经编写了一个基本解码器,当我决定遵循一条路径时它工作得很好,问题是当我尝试遵循视​​频树中的多个路径时。在这一点上,我需要“分叉”我的解码器来跟踪两个不同的视频流。拆分不仅可能发生在关键帧之后,甚至可能发生在 P 帧之后,因此我需要复制 AVCodecContext (我使用avcodec_copy_context),但它似乎是从干净状态创建新解码器.. 它似乎忽略了以前的视频状态,因此解码后的 P 帧被“应用”到一个空的视频帧。可能使用复制上下文avcodec_copy_context是不够的......有什么建议吗?如何复制解码器的上下文和完整状态?或者,有没有其他方法可以使用引用解码我的流?谢谢!

0 投票
1 回答
1015 浏览

python - GStreamer:Python 绑定和混合音频编码视频的状态

我希望找到一种从 Python 编写生成的视频(非实时)并将其与外部音频文件(MP3)同时混合的方法。

  • GStreamer Python 绑定的当前状态是什么,它们是最新的吗?

  • 是否可以使用 GStreamer 编写 MPEG-4 输出并从 Python 提供原始图像帧

  • 是否可以构建管道,以便 GStreamer 也可以读取 MP3 音频并将其混合到容器中,这样我就不需要使用 ffmpeg 等外部工具重新处理生成的视频轨道来获得音轨

  • 是否有任何最新的教程将 GStreamer 与 Python 结合使用?(我找不到自 2006-2009 年以来的任何日期)

(我的老问题:没有真正给出好的指点用 OpenCV + Python + Mac 编写视频

0 投票
1 回答
1608 浏览

definition - MPEG-4 (RTP) 中的“VOP”是什么?

我正在阅读 MPEG-4 RTP Packet RFC ( http://www.rfc-editor.org/rfc/rfc3016.txt ) 并经常找到这个词

语音播报

我在网络或 RFC 中没有找到任何定义,有人能告诉我这个 VOP 是什么吗?

0 投票
1 回答
1412 浏览

performance - MJPEG 与 MPEG-4 编码时间

我正在测试智能相机的编码性能(MPEG-4 和 MJPEG)。我在 OpenCV/FFMPEG 中编写了一个用于执行编码的应用程序,该应用程序从相机捕获图像并将它们编码为所需的编码格式。在基准测试中,我了解到 MJPEG 编码比 MPEG-4 编码花费的时间要长得多。我预计情况会有所不同。将单个帧编码为 MPEG-4 大约需要 31 毫秒,而编码为 MJPEG 大约需要 80 毫秒。与 MPEG-4 相比,MJPEG 真的需要这么长时间吗?

0 投票
2 回答
11441 浏览

h.264 - 包装 H.264 NALU 时的合成时间(CTS)

h.264 硬件压缩卡从捕获的视频中处理 NALU。

我正在尝试将 NALU 包装到 FLV 中,我几乎成功了。

我不知道如何为每个 NALU 填写 FLV 中的 Composition Time 字段。

根据 FLV 规范,http ://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf,E.4.3.1。

CompositionTime 合成时间偏移

有关合成时间的解释,请参见 ISO 14496-12, 8.15.3。FLV 文件中的偏移量始终以毫秒为单位

然后查看ISO 14496-12,8.15.3第 24 和 26 页

提供解码时间和合成时间之间的偏移量。由于解码时间必须小于合成时间,因此偏移量表示为无符号数,因此 CT(n) = DT(n) + CTTS(n) 其中 CTTS(n)是样本 n 的(未压缩)表条目。

我如何知道每个NALU中的DT和CTTS?或者如何在没有DT和CTTS的情况下计算CT?

谢谢

0 投票
3 回答
6693 浏览

parsing - 使用ffmpeg从.mov逐帧解析

我正在尝试从 .mov 文件中解析 H.264 帧。我想我已经得出结论,来自 FFMPEG 的 AVFormat-part 的 mov.c 是要走的路。但是 mov.c 是未注释代码旁边的约 2600 行代码。我正在寻找使用 FFMPEG 的示例,尤其是解析任何文件类型的结构。不管是 MPEG4 还是 Quicktime Movie,因为它们在结构上非常相似。

如果没有现有示例(我找不到任何示例),也许有人已经使用它并且可以给我几行代码,或者解释如何开始?

我正在尝试做的事情:我使用 AVCaptureSession 从摄像机捕获样本,然后这些样本在 H264 中编码并在 AVAssetsWriter、AVAssetsWriterInput 和 AVAssetsWriterInputPixelBufferAdaptor 的帮助下写入文件。原因是我不能直接访问硬件 H264 编码,因为苹果不允许这样做。我现在需要做的(我认为不确定)是解析出:

.mov 文件中的“ mdat ”-atom(电影数据,我认为可能不止一个)。然后是“ vide ”-atom,然后是 vide-atom 内(视频数据样本,可能不止一个)。我认为会有几个我相信是框架的原子。这些将是“avc1”类型(这是 H264 的类型)。请纠正我,因为我很确定我还没有正确理解所有这些

那么我的问题是,我将如何解析单帧。我一直在阅读文档并查看了iFrameExtractor(这不是很有帮助,因为它会解码帧)。我想当我应该使用来自 FFMPEG-AVFormat 的 mov.c 时,我已经正确理解了,但我不确定。

编辑:我现在正在尝试这样:

  1. 我运行略微简化的初始化函数 iFrameExtractor,它在 .mov 文件中找到视频流。

  2. 我得到这样的框架数据:

    /li>

然后我将它传递给 NSOperation 的子类,并保留它以等待上传。但我收到 EXC_BAD_ACC,从帧复制数据时我做错了吗?有任何想法吗。当我尝试NSData* frame使用其(非原子,保留)属性设置类变量时,我得到了 EXC_...。(它在合成行上显示 EXC_BAD_ACC)

0 投票
1 回答
1827 浏览

python - 使用 pygst 创建程序 MPEG-4 视频

我希望找到如何使用 pygst 创建 MPEG-4 视频文件(可以建议其他框架)。

问题分为三个部分

  • 如何从 Python 帧缓冲区在 pygst 管道中提供生成的视频数据

  • 如何将此流保存到 MPEG-4 文件

  • 如何将此流与 MP3 音频源混合

伪代码如下:

更多信息:

http://lists.freedesktop.org/archives/gstreamer-devel/2011-August/032609.html

0 投票
1 回答
614 浏览

video - MPEG4/H.263 编码后出现奇怪的像素化/垂直线

我一直在尝试对来自嵌入式设备上的 USB 摄像头的视频数据(H.263 和 MPEG4)进行编码。该设备有一个特殊的硬件来做到这一点。

但是在对来自 USB 摄像头 (H.263/MPEG4) 的原始视频进行编码后,视频质量会变差,并且视频中会出现一些奇怪的像素化和垂直线条。在这张图片中,您可以看到令人讨厌的垂直线。第二张图片是同时显示原始视频和编码视频的示例;右侧是原始数据的显示结果(质量好),左侧是编码后的结果。这个问题是已知模式吗?是什么导致这些垂直线?

USB 视频数据的属性:15 fps、QCIF、YUV420P。

顺便说一下,当我在半角区域(使用 SDL)上显示视频时,图像质量会好很多;即在 88x144 矩形上显示 QCIF 视频。当我改变显示区域的高度时,质量不会改变。

谢谢。