问题标签 [h.264]

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 投票
2 回答
646 浏览

video - 并行化和 H.264(或者可能是任何压缩编解码器)?为什么这么难?

我对视频压缩的有限(并且可能是错误的?)理解是帧内是完全独立的。换言之,内帧(关键帧)的所有图片数据都被完整地存储在该帧中。以下帧间帧(我认为 H.264 中的 P 和 B 帧)依赖于要“绘制”的其他帧中的数据。

如果这些帧内帧是完全独立的,为什么编码不是一个令人尴尬的并行问题?如果您有 N 个处理器和 X 个 I 帧,您可以将 X/N 个源块分配给每个处理器进行独立编码,然后在最后将它们全部修补在一起,对吗?但似乎情况并非如此——或者至少,我还没有看到任何具有能够做到这一点的并行化的编码器。我不明白什么?

0 投票
5 回答
45156 浏览

iphone - iPhone“无法播放”.mp4 H.264 视频文件

我正在尝试为带有 .mp4 视频文件链接的客户端设置一个简单的移动页面。像这样:

然后我显然已经正确获取了我的视频文件,并且 .mp4 具有以下特征:

但是,问题是当我单击 iPhone 显示“无法播放电影”的链接时。并且没有告诉我为什么。

有什么帮助吗?

0 投票
1 回答
260 浏览

flash - Flash 视频流 - 弄湿我的脚趾

我正在开展一个项目,该项目将涉及在线制作数千个短视频。我以前没有对在线视频做过任何事情,这对我来说有点新鲜,所以我正在寻找一些一般性的建议......

我想使用 Flowplayer,我想将视频编码为 H264。我很喜欢 Flowplayer 的慢动作功能,如果我理解正确的话,它只能使用 Wowza 服务器。

我想知道:使用某种交付网络是否可取?(Flowplayer 似乎与 HDDN 有合作关系,并推荐他们 。http: //www.hddn.com/ )或者我最好购买 Wowza 并将其安装在我们自己的服务器上?(乍一看,注册HDDN之类的网络似乎要简单得多,但也许随之而来的是问题......?)

任何关于迫在眉睫的危险的提示/警告将不胜感激。提前致谢。

0 投票
0 回答
878 浏览

encoding - 通过 vlc 流式传输 h264 编码帧

我已经在带有处理器 dm6446 的 davinci 板上集成了用于 .h264 编码的 TI 库,当保存在硬盘上并使用 Elecard 流分析器时,我可以验证编码的比特流。但我无法通过 rtsp 流式传输并在 vlc 播放器中查看。VLC 播放器将切换到 TCP/IP,然后停止显示消息为无播放。在进一步调试中,我发现生成的每个编码比特流都是IVIDEO_IDR_FRAME.

每帧的 Nal 标头就像

据我了解00 00 00 01,它们被用作分隔符,67并且68分别用于 SPS 和 PPS。在按原样流式传输前两帧后,我尝试从 data 流式传输下一个帧00 00 00 01 65。但是 VLC 播放器仍然无法播放编码流。它在找到的 PPS 处显示消息并停在那里。

我应该怎么做才能解决这个问题。我对这个领域很陌生

0 投票
1 回答
767 浏览

silverlight-4.0 - 从直接 URL 寻找 MP4 文件的问题

我正在运行 Silverlight 4,播放器是 Expression 3 模板附带的,可以直接从 URL 播放文件,即http://mysite.com/video1.mp4。通过在“Silverlight 编码”下应用来自 h.264 的预设,使用 Expression Encoder 3 对该文件进行编码。

我遇到的第一个问题是视频在完全下载之前无法播放,结果证明是 moov atom 问题。无论如何,我使用 AtomicParsely 修复它,现在视频在下载开始时开始播放。

下一个问题是用户无法在下载的文件部分之外寻找。我监控了 http 非常棒,似乎浏览器没有发送任何字节搜索请求,它在 WMV 的情况下会发送(在 wmv 的情况下,它甚至不适用于使用 web kit 引擎的浏览器)。

是否可以以这种方式进行搜索,或者我必须使用流畅的流媒体选项?

- 谢谢

0 投票
3 回答
33264 浏览

c++ - 使用 ffmpeg (libavcodec) 通过 RTP 解码 H264 视频的问题

我用 SDP 的 profile-level-id 和 sprop-parameter-set 设置了 AvCodecContext 的 profile_idc、level_idc、extradata 和 extradata_size。

我将 Coded Slice、SPS、PPS 和 NAL_IDR_SLICE 数据包的解码分开:

在里面:

uint8_t start_sequence[]= {0, 0, 1}; int size= recv(id_de_la_socket,(char*) rtpReceive,65535,0);

编码切片:

结果:ConsumedBytes >0 和 GotPicture >0(经常)

SPS 和 PPS:

相同的代码。结果:ConsumedBytes >0 和 GotPicture =0

我觉得这很正常

当我找到一对新的 SPS/PPS 时,我会使用此数据包的有效负载及其大小更新 extradata 和 extrada_size。

NAL_IDR_SLICE:

Nal 单元类型是 28 =>idr 帧是分段的,因此我尝试了两种方法来解码

1) 我在第一个片段(没有 RTP 头)前加上序列 0x000001 并将其发送到 avcodec_decode_video。然后我将其余的片段发送到这个函数。

2)我在第一个片段(没有 RTP 头)前加上序列 0x000001 并将其余片段连接到它。我将此缓冲区发送到解码器。

在这两种情况下,我都没有错误(ConsumedBytes >0),但我没有检测到任何帧(GotPicture = 0)......

问题是什么 ?

0 投票
7 回答
12923 浏览

java - Java 中的 MP4 容器编写器

我想为 Java 找到一个免费的 MP4(容器)编写器。我不需要编码器,只需要可以在给定预期值的情况下编写正确原子的东西。这样的库也可以编写“有效” F4V 的 奖励。
我更喜欢纯 Java 解决方案,而不是使用 JNI 或外部可执行文件的解决方案。

0 投票
1 回答
1706 浏览

video - 带有 API 的 GPU 或基于硬件的 h.264 编码器?

我们希望根据服务器上生成的帧将 h.264 视频流式传输到浏览器。这些帧将是合成的,即不是来自另一个“真实电影”、mpeg 等。我们将作为模拟的一部分单独生成它们,可能使用 OpenGL/DirectX 来渲染单个帧。在我的幼稚近似中,我们会在内存中留出一个位图,渲染它,告诉编码器做它的事情,然后重复。最终用户将看到连续流式传输的视频。

我知道有几个基于非 GPL 软件的 h.264 编码器,例如 Intel IPP,但我知道这些通常不能实时进行 h.264 压缩。在理想的世界中,我们的电影将是几百万像素,例如两台高清电视。我知道我们需要专用的硬件。人们是否知道具有此功能的扩展卡、特殊连接的服务器等?

0 投票
1 回答
1115 浏览

macos - 在 MacOSX 上的 Matlab 中读取 H264 编码的视频文件时损坏

我正在尝试使用 Matlab 在 OSX 上读取 H264 AVI 文件,但似乎视频已损坏。当我显示帧时,图像似乎被垂直灰线分割,我可以看到实际图像数据的分割和褪色版本在同一帧内重复了 3 次。在我的 Windows 框中,我可以使用相同的代码/avi 成功读取框架而没有任何问题。这是我的规格:

Quicktime 能够使用 Perian 插件成功播放文件。

这是我用来显示文件的示例代码:

有任何想法吗?

0 投票
1 回答
1380 浏览

encoding - ffmpeg vstats 问题,缺少帧和误导性信息!

我遇到的问题是当使用 ffmpeg 使用 libx264 对 YUV 进行编码时,我没有在 -vstats 输出中获得所有帧信息。它提出了 ffmpeg 有多可靠的问题,因此任何基于 ffmpeg 的“编解码器基准”审查都可以信任吗?

我正在分析编解码器以确定它们的性能。我正在使用 ffmpeg 及其 -vstats 选项逐帧查看编码的电影。我使用的过程:

RAW YUV -> 用帧号对每一帧进行条形码编码 -> 条形码 YUV

条形码 YUV -> 编码(例如使用 libx264)-> MKV -> 解码为 YUV

我可以使用每帧中的条形码比较两个输出('Barcoded YUV' & 'Decoded to YUV')。然后,我可以准确地比较原始帧和使用 PSNR 等编码的帧。

使用 libx264 和 libdirac 进行编码时,缺少一些帧信息。其他编解码器,例如 mpeg2video 甚至 libvpx,没有这个问题。

我发现前 40 到 50 帧缺少 libx264 vstats。从那以后,我证明了丢失的信息实际上是最后 40 到 50 帧。

看起来 ffmpeg 根据 vstats 中的信息计算平均比特率。但是由于缺少帧,平均比特率低于应有的水平。

以下是平均比特率错误示例的链接:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.png

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.xlsx

以下是 PSNR 和 f_size 图的链接:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/frame_mismatch.png

以下是输出和命令行选项的链接:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/stderr.txt

我认为这也是一个错误,任何足够聪明的人都可能想关注这个跟踪器: http ://roundup.ffmpeg.org/issue2248