问题标签 [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 - 是否可以通过 AVAssetExportSession 在 AVAssetExportPresetMediumQuality 和 AVAssetExportPresetHighestQuality 之间使用质量?
我正在使用 AVAssetExportSession 从我的 iOS 应用程序中导出视频,如下所示:
我想上传导出的视频,因此大小很重要。问题是:中等质量是一个真正的坏质量, AVAssetExportPresetHighestQuality 很好,但大约是中等质量的 5 倍。
那么,有没有办法创建一个质量介于两者之间的视频,比如说两倍大小?
这可能AVAssetExportSession
吗?
如果没有,是否可以使用 AVAssetWriter?
提前致谢,
最好的祝福,
瓦尔基
avfoundation - 帮我理解 AVAssetWriter 中的 CMTime
我很难理解如何使用 AVAssetWriter 将 30fps 的运动 JPEG 流转换为视频文件。我没有得到的部分是 [adaptor appendPixelBuffer:buffer withPresentationTimeresentTime] 方法。
如果我想输出 30fps mpeg4 视频,如何计算 withPresentationTime 值?
视频源是一个实时传输 30fps 运动 JPEG 的摄像机。
欣赏任何想法。
谢谢
iphone - 如何使用 AVAssetWriter 编写带有视频和音频的电影?
我想导出一部电影,AVAssetWriter
但不知道如何同步包含视频和音轨。仅导出视频可以正常工作,但是当我添加音频时,生成的电影如下所示:
首先我看到视频(没有音频),然后视频冻结(显示最后一个图像帧直到结束),几秒钟后我听到了音频。
我对音频进行了一些尝试CMSampleBufferSetOutputPresentationTimeStamp
(从当前减去第一个CMSampleBufferGetPresentationTimeStamp
),但这一切都不起作用,我认为这不是正确的方向,因为源电影中的视频和音频无论如何都应该同步。 ..
简而言之,我的设置:我创建一个AVAssetReader
and 2 AVAssetReaderTrackOutput
(一个用于视频,一个用于音频)并将它们添加到 中AVAssetReader
,然后我创建一个AVAssetWriter
and 2 AVAssetWriterInput
(视频和音频)并将它们添加到AVAssetWriter
...我开始:
然后我运行 2 个队列来处理样本缓冲区的内容:
在主循环中,我等待两个队列,直到它们完成:
此外,我尝试使用以下代码将生成的文件保存在库中...
...但我得到了错误:
Video /Users/cb/Library/Application Support/iPhone Simulator/4.2/Applications/E9865BF9-D190-4912-9248-66768B1AB635/Documents/export.mp4 cannot be saved to the saved photos album: Error Domain=NSOSStatusErrorDomain Code=-12950 "Movie could not be played." UserInfo=0x5e4fb90 {NSLocalizedDescription=Movie could not be played.}
该代码在另一个程序中没有问题。所以这部电影有什么问题……?
iphone - 是否可以使用 AVAssetWriter 录制视频并仍然播放背景声音
可能重复:
AVCaptureSession 取消背景音频
我正在使用 AVCaptureSession 录制没有声音的视频资产。但是是否可以配置 AVAudioSession 以继续 iPod 音频播放背景音乐?
ios - 在 iOS 中使用 dispatch_async 时出现内存警告
我有下面的代码,它以 30fps 的速度捕获 jpeg 帧并以 mp4 格式记录视频。我正在尝试将 processFrame 方法包装在 dispatch_async 调用中,以便录制过程不会锁定视频播放器。问题是我收到了 2 级内存警告,应用程序最终会在几秒钟后崩溃。我可以看到 dispatch_async 方法将队列加载到内存中,因为它试图将每一帧附加到录制的视频输出中,并且在 30fps 时,它没有足够的时间来处理帧并释放使用的内存。我尝试使用 dispatch_after 来延迟 processFrame 的执行,但它没有帮助。有任何想法吗?我应该以不同的方式做这件事吗?
这个方法每秒被调用大约 30 次。
处理框架方法
iphone - AVFoundation + AssetWriter:生成带有图像和音频的电影
我必须从我的 iPhone 应用程序中导出一部电影,其中包含来自 NSArray 的 UIImage 并添加一些 .caf 格式的音频文件,这些文件必须在预先指定的时间开始。现在我已经能够使用 AVAssetWriter (在经历了这个和其他网站上的许多问题和答案之后)导出包含图像的视频部分,但似乎无法找到添加音频文件以完成电影的方法。
这是我到目前为止所得到的
现在是 pixelBufferFromCGImage 的代码
所以你能帮我解决如何添加音频文件以及如何为它们制作缓冲区以及适配器和输入设置等
如果这种方法可能会导致问题,请指导我如何使用 AVMutableComposition 将图像数组用于视频导出
iphone - 使用 AVAssetWriter 从图像创建电影在 3GS 设备上无法正常工作
对 appendPixelBuffer 的调用在 3GS 设备 (IOS 4.1) 上返回 NO,但在 iPhone 4 设备上运行良好。
以下对 appendPixelBuffer 的调用是问题的根源:
}
完整代码:
错误(仅在 3GS 上,iphone 4 很好)是
错误域=AVFoundationErrorDomain 代码=-11800“操作无法完成。(AVFoundationErrorDomain 错误-11800。)”UserInfo=0x4970530 {NSUnderlyingError=0x496d2c0“操作无法完成。(OSStatus 错误-12908。)”}
ios - 设置和检索 AVMetadataCommonKeyCreator 值的问题
我有一个适用于 iPhone 的视频录制应用程序。我AVAssetWriter
用于将录制的视频数据写入文件。我也有兴趣将自定义元数据嵌入到文件中。例如:我想将我的应用程序标识为视频的创建者。
因此,在创建资产编写器之后,我使用密钥将创建者值添加到AVMetadataCommonKeyCreator
资产编写器的元数据中。
代码片段如下:
录制完成后,我正在尝试使用 AVURLAsset 读取文件的内容。
但是[asset commonMetadata]
不返回任何AVMetadataItems
. 它返回一个空数组。我可以设置其他元数据对象的值,例如AVMetadataCommonKeyTitle
, AVMetadataCommonKeyModel
, AVMetadataCommonKeySource
。这些值被正确检索。问题仅在于AVMetadataCommonKeyCreator
. 请让我知道这种行为的原因。是否无法为应用程序设置特定值AVMetadataCommonKeyCreator
?这个键实际上代表什么?
objective-c - AVAssetWriterInputPixelBufferAdaptor 和 CMTime
我正在用 为视频写一些帧AVAssetWriterInputPixelBufferAdaptor
,而时间的行为不是我所期望的。
如果我只写一帧:
这给我一个长度为零的视频,这是我所期望的。
但如果我继续添加第二帧:
我得到十秒的视频,我期待五秒。
这里发生了什么?是否withPresentationTime
以某种方式设置了帧的开始和持续时间?
请注意,我不是在打电话endSessionAtSourceTime
,只是finishWriting
。
ios - AVAssetWriterInputPixelBufferAdaptor 返回空像素缓冲池
我确定我的缓冲区属性有问题,但我不清楚是什么 - 它没有很好地记录应该去那里的东西,所以我猜测CVPixelBufferPoolCreate
- 核心基础对我来说几乎是一本封闭的书.