问题标签 [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.
iphone - AVAssetWriterInput 崩溃
我正在录制视频的尾随缓冲区。每隔 15 秒,我将创建一个 的新实例AVAssetWriter
,并将我的实例添加AVAssetWriterInput
为输入。我正在使用 抓取帧AVCaptureVideoDataOutput
,并像这样添加它们:
[writerInput appendSampleBuffer:sampleBuffer]
这在大多数情况下都可以正常工作,但有时应用程序会因以下错误消息而崩溃:
*** -[CFDictionary removeObjectForKey:]: message sent to deallocated instance 0x96b28a0
此错误消息甚至意味着什么?这可能意味着AVAssetWriter
已解除分配?或者这是否意味着AVAssetWriterInput
已解除分配?还有什么?
谢谢,
詹姆士
ios - 有人可以解释源时间,电影时间,演示时间等吗?
在我的 iOS 应用程序中,我需要将图像保存为短视频片段。我使用 AVAssetWriter 和 AVAssetWriterPixelBufferAdaptor 进行了这项工作,这要感谢这个网站上的一些很棒的帖子,但是我不得不捏造开始和结束会话时间以及演示时间,因为我不太了解它们。
以下片段创建了一个 2 秒的视频,但我通过反复试验设置了不同的时间。老实说,我不确定它为什么不制作 3 秒视频。
任何人都可以解释这个片段中的各种时间设置,或者指向一个有帮助的文档吗?我已经阅读了苹果文档,直到我睁一只眼闭一只眼,但我猜他们假设的知识比我目前拥有的要多。
TIA:约翰
ios - H264 stream writing using AVAssetWriter issue
i am working on an application that receives the H264 stream from network and writes that stream to the MOV file. For writing to MOV I am using AVAssetWriter(with AVAssetWriterInput settings nil). Although I am able to dump and play the stream in MOV format using AVAsssetWriter in Quicktime, if the movie is seeked in QUicktime while playing the movie gets fully distorted until the next I frame occurs. With MOV files such behavior is not expected.
Also tried with specifying the AVAssetWriterInput settings to QuicktimeMovie, Width, Height, Bitrate. But this fails while writing from the first frame. Also observed that if raw frames are used instead of H264 stream and specify output settings, seeing is working correctly.
Also tried with specifying the following Attachments to CMSampleBuffer before giving it to AVAssetWriterInput. But still seeking is not proper with the MOV file.
for I frame and
for P frames
Please give suggestion on how to correct the seeking for MOV file using AVAssetWriter. I guess there is some sync frame offset table problem when using AVAssetWriter for already encoded H264 frames.
iphone - 如何使用 AVAssetWriter 在 ios 中写入 AAC 音频?
我正在使用 AVCaptureSession 从设备麦克风和摄像头捕获音频和视频样本。
然后我尝试编写通过 AVCaptureSessions 委托方法返回的 CMSampleBuffers(使用 AVAssetWriter 和 AVAssetWriterInputs)
当我的音频 AVAssetWriterInput 被配置为以 Apple Lossless 格式(kAudioFormatAppleLossless)写出数据时,这工作正常,但是如果我尝试将音频 AVAssetWriterInput 配置为使用 AAC(kAudioFormatMPEG4AAC),它会成功写入视频和音频样本约 500 毫秒,然后失败并出现跟随错误
这是我用来创建 AVAssetWriter 和 AVAssetWriterInputs 的代码
有谁知道如何使用配置为编写 AAC 的 AVAssetWriterInput 正确编写从 AVCaptureSession 返回的音频样本?
iphone - Iphone SDK,从 UIImage 创建视频
我需要从所选图像创建视频。
我有它应该工作的代码,但是在附加缓冲区时它给出了错误。
这就是保存这两种类型的图像的方式。
在另一个视图控制器上,我在 uiimage 视图上显示此图像。
并单击按钮,我正在使用此代码将该图像转换为视频。
但这不起作用...
我被困住了,有人可以帮我吗????:(
ios - 像素格式,CVPixelBufferRefs 和 glReadPixels
我glReadPixels
用来将数据读入CVPixelBufferRef
. 我将CVPixelBufferRef
用作 的输入AVAssetWriter
。不幸的是,像素格式似乎不匹配。
我认为glReadPixels
返回RGBA格式的像素数据,而AVAssetWriter
想要ARGB格式的像素数据。将RGBA转换为ARGB的最佳方法是什么?
这是我到目前为止所尝试的:
- 沿 argb = (rgba >> 8) | 行的位操作 (RGB << 24)
- 使用 a
CGImageRef
作为中间步骤
位操作不起作用,因为 CVPixelBufferRef 似乎不支持下标。中间CGImageRef
步骤确实有效......但我不希望有 50 行可能会影响性能的额外代码。
ios - iOS:在附加到 AVAssetWriterInput 之前裁剪 CMSampleBufferRef
我目前正在尝试使用 CoreImage,学习如何将 CIFilters 应用于相机源。目前我已经成功地拍摄了一个相机提要,应用了一个过滤器并将提要以视频的形式写入 AVAssetWriter,但我遇到的一个问题是,在过滤过程中,我实际上裁剪了图像数据使其始终具有方形尺寸(项目的其他方面需要)
我的流程如下:
- 使用 AVCaptureSession 捕获提要
- 从捕获输出中获取 CMSampleBufferRef 并获取 CVPixelBufferRef
- 获取 CVPixelBufferRef 的基地址,并使用基地址作为数据创建一个 CGBitmapContext(这样我们就可以覆盖它)
- 将 CVPixelBufferRef 转换为 CIImage(使用 CIImage 构造函数之一)
- 将过滤器应用于 CIImage
- 将 CIImage 转换为 CGImageRef
- 将 CGImageRef 绘制到 CGBitmapContext (导致样本缓冲区内容被覆盖)
- 将 CMSampleBufferRef 附加到 AVAssetWriterInput。
没有将 CGImageRef 绘制到上下文中,这就是我得到的:
在将 CGImageRef 绘制到上下文之后,这就是我得到的:
理想情况下,我只想能够告诉 CMSampleBufferRef 它有新的维度,以便省略附加信息。但我想知道是否必须完全创建一个新的 CMSampleBufferRef。
任何帮助将不胜感激!
ios - ios:如何恢复基于 AVAsset 视频的写作会话
我正在为 iphone/ipod touch 开发视频编辑应用程序。我的应用程序只是要求用户选择相机胶卷目录中现有的视频之一,然后逐帧更改像素值并以不同的名称再次保存在相机胶卷目录中。因为视频处理可能会很长,我真的需要实现某种功能来恢复之前启动的会话(即当视频处理达到总视频长度的 30% 并且用户按下主页按钮(或有电话)时我的应用程序被带回到前台,视频处理应该从 30% 开始,而不是从头开始)。
我的代码中最重要的部分(简化了一点以更具可读性):
我正在听我的应用程序的委托回调方法,例如 applicationWillResignActive、applicationWillEnterForeground,但我不确定如何以正确的方式处理它们。我已经尝试过的:
1)[AVAssetWriter start/endSessionAtSourceTime],不幸的是,在最后一帧演示时间停止和启动对我不起作用
2)“手动”保存已处理的电影的每个部分,当处理达到 100% 时,使用 AVMutableComposition 合并所有这些部分,但此解决方案有时会在调度队列中崩溃
如果有人能给我一些提示应该如何正确完成,那就太好了......
ios - 捕捉 iPhone 游戏音频
我想捕捉来自我的 iPhone 游戏的音频(音乐 + 音效)。AVCaptureSession
似乎只有麦克风作为音频源。我想捕获音频,将其放入CMSampleBufferRef
s 并将这些附加到AVAssetWriterInput
.
我目前正在研究音频队列。还有其他想法吗?
ios - 使用 AVAssetWriter 创建白噪声音轨
我目前正在使用AVAssetWriter
生成 Quicktime mov。视频轨道生成正确。现在我想添加一个“垃圾”mp4a 音轨。音频可能只是白噪声。我主要关心的是包含视频和音频轨道的 mov文件。
如何设置CMSampleBufferRef
仅包含 mp4a 格式的白噪声?这是我到目前为止所尝试的:
当NULL
为 audioFormatDescript 传递时,mov 文件已成功生成,但仅包含一个视频轨道(并且没有音轨)。当我实际传递 audioFormatDescript 时,mov 文件似乎已损坏。我可能实际上必须通过一些样本,但我不确定如何。
注意:我已经验证了appendSampleBuffer
返回YES
(为简洁起见,我省略了该代码)。