问题标签 [avassetwriter]

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

ios - 调用 AVAssetWriterInputPixelBufferAdaptor 的 appendPixelBuffer 导致 EXC_BAD_ACCESS

我正在从这样的 OpenGL 层生成 CVPixelBufferRef

然后将该像素缓冲区传递给我的 AVAssetWriterInputPixelBufferAdaptor 在一个辅助类中,如下所示:

但是在该助手类中,以下内容

当我调用 appendPixelBuffer 时会导致 EXC_BAD_ACCESS。我已启用 NSZombieEnabled 但它没有为我提供任何信息。记录器被初始化为与 OpenGL 层的背景高度和宽度相同的高度和宽度。适配器配置为 kCVPixelFormatType_32BGRA 像素格式以及像素缓冲区。

任何帮助表示赞赏!谢谢!

0 投票
1 回答
992 浏览

ios - AVAssetReader 使 mp3 文件变大?

在下面的代码之后,我试图从用户库中获取的歌曲文件似乎被炸毁到 50MB。但是,我知道这首歌是 7.2MB。我想将音乐文件(无 DRM)附加到电子邮件中,但 50MB 显然太大了。我使用的代码如下。任何帮助,将不胜感激 :)

0 投票
1 回答
1204 浏览

iphone - AVAssetWriterInput 输出设置未呈现有效的 NSData

我正在使用 AVAssetWriterInput 从用户那里获取一个 mp3 文件,然后通过电子邮件发送它(仅限 DRM 免费)。我在使用 PCM 时使该过程正常工作,但是当我尝试 mp3、m4a 或 caf 时,我得到一个不起作用的文件,或者得到空数据。我认为这是由于我的输出设置。不绘制数据的输出设置如下。我愿意改变这一切。谢谢!

0 投票
2 回答
3232 浏览

ios - AVAssetWriterInputPixelBufferAdaptor pixelBufferPool 在一段时间后变为 NULL

我在 AVAssetWriterInputPixelBufferAdaptor 中使用 pixelBufferPool 来创建用于 append 方法的像素缓冲区。创建 4 个缓冲区后,pixelBufferPool 属性变为 NULL;

我像这样设置我的作家、输入和适配器:

我用这个分发像素缓冲区:

当我完成将像素缓冲区传递给 appendPixelBuffer 时,我使用 CVPixelBufferRelease 释放像素缓冲区。在此变为 NULL 之前,我不会调用 markAsFinished、endSessionAtSourceTime 或 finishWriting。此外,适配器本身不会变为 NULL。

我读过的大多数帖子都谈到由于适配器配置错误而导致池从一开始就没有,但是我的在那里,但只是很短的时间。其他人看到这种行为吗?

0 投票
7 回答
9842 浏览

ios - OpenGL ES 2.0 到 iPad/iPhone 上的视频

尽管 StackOverflow 上有很好的信息,但我还是束手无策......

我正在尝试将 OpenGL 渲染缓冲区写入 iPad 2 上的视频(使用 iOS 4.3)。这更确切地说是我正在尝试的:

A) 设置一个 AVAssetWriterInputPixelBufferAdaptor

  1. 创建一个指向视频文件的 AVAssetWriter

  2. 使用适当的设置设置 AVAssetWriterInput

  3. 设置一个 AVAssetWriterInputPixelBufferAdaptor 向视频文件添加数据

B)使用该 AVAssetWriterInputPixelBufferAdaptor 将数据写入视频文件

  1. 将 OpenGL 代码渲染到屏幕上

  2. 通过 glReadPixels 获取 OpenGL 缓冲区

  3. 从 OpenGL 数据创建一个 CVPixelBufferRef

  4. 使用 appendPixelBuffer 方法将该 PixelBuffer 附加到 AVAssetWriterInputPixelBufferAdaptor

但是,我在这样做时遇到了问题。我现在的策略是在按下按钮时设置 AVAssetWriterInputPixelBufferAdaptor。一旦 AVAssetWriterInputPixelBufferAdaptor 有效,我设置一个标志来指示 EAGLView 创建一个像素缓冲区,并通过 appendPixelBuffer 将其附加到视频文件中给定数量的帧。

现在我的代码正在崩溃,因为它试图附加第二个像素缓冲区,给我以下错误:

这是我的 AVAsset 设置代码(很多都是基于 Rudy Aramayo 的代码,它确实适用于普通图像,但不适用于纹理):

好的,现在我的 videoWriter 和适配器已经设置好了,我告诉我的 OpenGL 渲染器为每一帧创建一个像素缓冲区:

最后,我将视频移至相机胶卷:

但是,正如我所说,我在调用 appendPixelBuffer 时崩溃了。

很抱歉发送了这么多代码,但我真的不知道我做错了什么。更新将图像写入视频的项目似乎很简单,但我无法获取通过 glReadPixels 创建的像素缓冲区并附加它。这让我疯狂!如果有人有任何建议或 OpenGL 的工作代码示例 --> 视频会很棒......谢谢!

0 投票
0 回答
1704 浏览

ipad - 使用 AVAssetWriter 捕获屏幕——在模拟器上运行良好,但在设备上会创建黑色视频

我试图捕获帧缓冲区数据并将其转换为我的 iphone 游戏的视频。我使用 AVAssetWriter 来完成这件事。该代码在模拟器上运行良好,但在设备本身上运行良好。在设备上它会生成黑色视频

我使用以下代码:

同样当模拟器上捕获的视频是镜像视频时...我不知道我错在哪里...请澄清我这件事...并希望你们不介意阅读整个代码..

0 投票
2 回答
694 浏览

iphone - AVAssetWriter / AVAudioPlayer 冲突?

几周前,我发布了这个关于我在使用 AVAssetWriter 时遇到的问题的帖子:AVAssetWriter Woes

进一步的研究似乎会导致使用 AVAssetWriter 在使用 AVAudioPlayer 播放音频时发生冲突,或者实际上是任何音频系统。我也尝试过使用 OpenAL。

这是背景:

  • 使用 AVAssetWriter 将帧从图像或图像集写入视频可以正常工作,直到调用 [AVAudioPlayer play]。

  • 这只发生在设备上,而不是 SIM 卡上。

  • 尝试从 CVPixelBufferPoolCreatePixelBuffer 创建像素缓冲区时发生错误。

  • 一旦音频开始播放,之前存在的 AVAssetWriterInputPixelBufferAdaptor.pixelBufferPool 突然变为 nil。

您可以在这里下载代表项目:http ://www.mediafire.com/?5k7kqyvtbfdgdgv

注释掉 AVAudioPlayer 播放,它将在设备上运行。

任何线索表示赞赏。

0 投票
1 回答
2974 浏览

iphone - iPhone - 在使用 AVAssetWriterInputPixelBufferAdaptor 录制视频时从麦克风捕获音频

我正在尝试制作一个应用程序来记录 UIImageView 的内容以及麦克风音频并将它们实时录制到视频中。(有点像会说话的汤姆猫应用程序)

我正在使用 AVAssetWriterInputPixelBufferAdaptor 轻松记录 UIImageView 的内容,但我根本不知道如何将音频与此合并。这也不是因为缺乏尝试,我已经在这个特定问题上工作了一个多星期来梳理这个网站、谷歌、iphone 开发者论坛等。这不是我的一杯茶。

对此最接近的参考是: 如何将 UIImage 数组导出为电影?

我可以分别捕捉视频和音频,然后在事后将它们一起编码(我真的很努力解决这个问题),但是让这个应用程序实时录制真的很理想。

这是一些框架代码,演示了我到目前为止的录音:

这是.h文件

和 .m 文件

就是这样。如果有人可以修改此代码来录制麦克风音频,我相信除了我之外还有很多人会很感激。一旦添加了音频,这将为开发人员提供一个直接的框架来在应用程序屏幕投射中进行演示,以演示他们的应用程序。

仅供参考:我的代码是开源的,主要模仿来自http://www.subfurther.com/blog/2011/04/12/voices-that-matter-iphone-spring-2011/的 VTMScreenRecorderTest 项目。我进行了小幅修改并清理了内存泄漏。

0 投票
2 回答
4398 浏览

iphone - 如何像 iPhone 中的 Talking Tomcat 应用程序一样录制屏幕视频?

嘿,我正在尝试记录我的游戏的游戏玩法,以便我可以将其视频从设备本身上传到 youtube……我正在尝试做与 iPhone 版 Talking tomcat 应用程序相同的事情……录制视频然后播放等等……

我使用 glReadPixels() 读取帧缓冲区数据,然后借助 AVFoundation 框架中的 AVAssetWriter 将其写入视频。但是,只有在使用 glReadPixels 时,读取每个绘图上的数据才会将 FPS 从大约 30-35 降低到 2-3。

我认为Talking tomcat也是在Opengl ES的帮助下制作的,它还具有视频录制功能,但是在阅读每一帧时它不会减慢任何想法......?

0 投票
1 回答
163 浏览

iphone - iPod 库返回没有曲目的资产

我正在使用 MediaItem api 从 iPod 库中收集资产。应用程序运行一段时间后,我遇到了一个奇怪的错误。我将运行以下代码,并且 AVURLAsset 将没有关联的轨道。

出现问题的资产似乎发生了变化,如果我重新启动应用程序并再次加载相同的资产,它会正确加载。

有没有人见过这个?知道我可能做错了什么吗?