问题标签 [video-toolbox]

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

ios - VTCompressionSessionCreate 适用于 iOS 9 但不适用于 iOS 8

这些简单的代码行(应用程序中没有其他任何内容)在 iOS 9(iPhone 6 和 iPhone 4S)上运行良好,但在 iOS 8(iPhone 5 和 iPod Touch 5G)上运行良好:

我也尝试过使用较低的分辨率,尝试提供部分或全部可选参数,在所有情况下它都适用于 iOS 9,但在 iOS 8 上失败并出现错误 -12902 (kVTParameterErr)。很高兴知道某些参数是错误的,但是在 iOS 9 上哪个参数不被认为是错误的?

请注意,VTCopyVideoEncoderList 确实给了我一个列表,其中所有情况下都存在 avc1 (H264) 编码器。

知道发生了什么吗?

0 投票
1 回答
253 浏览

memory-leaks - IOS9-VTDecompressionSessionDecodeFrame 上的内存泄漏

我使用视频工具箱来解码 IOS8.x 上的 h264 数据。这段代码在IOS 9.x上运行时,每次调用VTDecompressionSessionDecodeFrame都会出现内存泄漏,在Instruments工具中看不到任何内存泄漏!

这是代码: https ://github.com/stevenyao/iOSHardwareDecoder

0 投票
1 回答
855 浏览

ios - How to set frame rate when using iOS VTCompression to encode video

In my work, I try to use iOS VideoToolBox to encode my video from capture. It worked . But when I try to set the fps, it can not work, the video encode stream's fps always is 30.

In my code, I used this code to try to set fps (but it not work)

0 投票
1 回答
495 浏览

ios - 如何将一帧的nalus组合成一个nalu?

在我的情况下,iOS 硬件编码器有时会生成一个 nalu,有时会生成两个构成访问单元/图片的 nalus。当为一张图片生成两个 nalus 时,我通过将第一个 nalu 的起始代码替换为这两个 nalus 的总大小的大小并删除第二个 nalu 的起始代码并将其附加到第一个 nalu 的末尾来将它们组合起来。就这样,0x00000002aaaa 和 0x00000002bbbb 变成了 0x00000004aaaabbbb。但视频在屏幕上显示模糊。那么有人可以教我如何正确组合 nalus 吗?十分感谢。

像这样的一帧有两个 nalus(与此链接中的数据几乎相同(https://forums.developer.apple.com/thread/14212?sr=stream),所以我只是复制它): 在此处输入图像描述

在这里,我想结合#1 和#2。

0 投票
1 回答
1302 浏览

ios - 如何使用 iOS VideoToolbox 和 FFMPEG 对 MP4 流文件进行硬编码?

伙计们!

我在 github 中找到了一个演示:-VideoToolboxDemo。而且我还在stackoverflow how-to-use-videotoolbox-to-decompress-h-264-video-stream中发现了一个问题,有人在github中实现了这个问题:https://github.com/lileilei1119/VTDemo

但是他们在寻找 SPS 和 PPS 方面存在差异。

VideoToolboxDemo 是:

它使用来自 FFMPEG 的 pCodecCtx 的额外数据来查找像 0x00 00 01(或 0x00 00 00 01)这样的起始代码

但是stackoverflow中的介绍是:

使用数据包的数据?

这两种方法我都试过了,还是找不到SPS和PPS的起始码。有谁知道为什么?我的文件有问题吗?

我的 mp4 文件是 http://7u2m53.com1.z0.glb.clouddn.com/201601131107187320.mp4

0 投票
1 回答
1720 浏览

ios - 解码 H264:VTDecompressionSessionCreate 失败,错误代码为 -12910 (kVTVideoDecoderUnsupportedDataFormatErr)

在 iPad 上运行代码时,使用 VTDecompressionSessionCreate 时出现错误 -12910 (kVTVideoDecoderUnsupportedDataFormatErr),但在 sim 上没有。我正在使用 Avios ( https://github.com/tidwall/Avios ),这是相关部分:

这里ppssps是包含 PPS 和 SPS 帧的缓冲区。

如上所述,奇怪的是它在模拟器上完全可以正常工作,但在实际设备上却不行。两者都在 iOS 9.3 上,我正在模拟与设备相同的硬​​件。

什么可能导致此错误?

而且,更一般地说,我在哪里可以找到 VideoToolbox 的 API 参考和错误文档?在 Apple 的网站上确实找不到任何相关内容。

0 投票
1 回答
610 浏览

macos - VideoToolbox 可以原生解码 H264 Annex B 吗?错误代码 -8969 错误数据

我的目标是将 iDevice 的屏幕镜像到 OSX,尽可能无延迟。

据我所知,有两种方法:

  1. Airplay Mirroring(例如反射器)
  2. CoreMediaIO通过 Lightning(例如 Quicktime Recording)

我选择了第二种方法,因为(据我所知)连接的 iDevice 可以在一次性设置后自动识别为 DAL 设备。

如何做到这一点的主要资源是这个博客:https ://nadavrub.wordpress.com/2015/07/06/macos-media-capture-using-coremediaio/

该博客非常深入地介绍了如何使用CoreMediaIO,但是AVFoundation一旦您将连接的 iDevice 识别为AVCaptureDevice.

这个问题:如何通过USB镜像iOS屏幕?已经发布了一个关于如何抓取 iDevice 提供的 H264(附件 B)muxxed 数据流的每一帧的解决方案。

但是,我的问题是VideoToolbox无法正确解码(错误代码 -8969,BadData),即使代码不应该有任何差异。

vtDecompressionDuctDecodeSingleFrame 在 /SourceCache/CoreMedia_frameworks/CoreMedia-1562.240/Sources/VideoToolbox/VTDecompressionSession.c 第 3241 行发出 err=-8969 (err)(VTVideoDecoderDecodeFrame 返回错误)

完整代码:

0 投票
2 回答
1233 浏览

objective-c - 如何使用 VideoToolbox 将音频与视频一起编码为 h264 格式?

我可以使用视频工具箱框架将从相机设备捕获的视频压缩为 h264 格式,但是当我尝试在 VLC 播放器中播放该 h264 文件时,我无法听到视频的音频。我认为音频压缩也应该在代码中完成。

但是我怎么没有找到任何资源?

0 投票
0 回答
577 浏览

ios - VideoToolbox 不会在 Swift 3.0 中为 mpeg4 创建编码器会话

在 Swift 3.0 上迁移后,我发现使用 VideoToolbox 为 MPEG4 编码器创建压缩会话时遇到问题。在迁移之前它工作得很好。

这是我的升级代码:

每次我收到状态错误 -12908 (kVTCouldNotFindVideoEncoderErr)。有趣的一点是,相同的配置但具有

工作完美。

有人知道这里发生了什么吗?

这是关于将编码器配置的代码更新到 Swift 3.0 的相关问题

0 投票
0 回答
1966 浏览

ios - 解码 h264 视频流获取图像缓冲区

我按照这篇文章解码了我的 h264 视频流帧。

我的数据框如下:

在此处输入图像描述

我的代码:

输出:

请指出我错过了什么。