问题标签 [avassetwriterinput]
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.
ios - 使用 AVAssetWriter 停止视频录制 (finishWriting) 且不会崩溃的正确方法
我用 录制视频AVAssetWriter
。用户可以发送视频,然后我打电话finishWriting
,或者取消录制,然后我打电话cancelWriting
。
我如何记录:
我如何停止录制:
当我打电话时stop_record
,有时它会崩溃。即使file_writer
应该停止写作并且如果我在 中进行了多次验证,也会didOutputSampleBuffer
调用此行:
video_writer.append(sb)
我得到:
停止记录
文件写入器状态 1
视频完成
音频完成
libc++abi.dylib:以 NSException 类型的未捕获异常终止
我在没有调用的情况下尝试了相同的代码,markAsFinished
但它也崩溃了(我更经常说)。
我想知道这是否是线程问题(因为stop_record
和didOutputSampleBuffer
方法没有在同一个线程上调用)。无论如何,我不知道我做错了什么。如果有人可以帮助我,我将不胜感激。
ios - AVAssetWriterInput 追加失败,错误代码 -11800 AVErrorUnknown -12780
我正在尝试使用 AVCaptureSession 在内存中捕获相机视频,以便以后可以将视频数据写入电影文件。虽然我已经能够成功启动捕获会话,但我无法使用 AVAssetWriter 将捕获的 CMSampleBuffers 成功写入压缩电影文件。
使用 AVAssetWriterInput 的 append 方法附加样本缓冲区失败,当我检查 AVAssetWriter 的错误属性时,我得到以下信息:
错误域=AVFoundationErrorDomain 代码=-11800“操作无法完成” UserInfo={NSUnderlyingError=0x17005d070 {错误域=NSOSStatusErrorDomain 代码=-12780“(null)”},NSLocalizedFailureReason=发生未知错误(-12780),NSLocalizedDescription =操作无法完成}
据我所知,-11800 表示 AVErrorUnknown,但是我无法找到有关 -12780 错误代码的信息,据我所知,这是未记录的。下面我将主要文件粘贴到我设置的示例项目中以演示该问题。
任何指导将不胜感激。谢谢!
ViewController.swift
CVPixelBuffer+Copy.swift:
CMSampleBuffer+Copy.swift:
audio - 当音频样本缓冲区大小发生变化时,avassetwriterinput readyformoredata 为 NO
如果音频样本缓冲区数据大小发生变化,我准备好更多数据总是没有。但是如果将样本缓冲区大小设置为不变的值,readyformoredata 将再次变为 yes。
有人知道为什么吗?
这是我的音频重新编码设置:
另一个可能的线索是,如果将 AVNumberOfChannelsKey 设置为 1,readyformoredata 可能为 yes,但 appendbuffer 返回失败。
任何建议将不胜感激~谢谢~
ios - AVAssetWriter 从 AVAsset 转换 aac 5.1 音轨在 appendSampleBuffer 上失败
我正在尝试从视频文件中提取音轨并使用此类.mp4
转换为.m4a
音频文件outputSettings
AVAssetWriter
案例 1:带有音轨参数的 .mp4 视频文件(使用 打印CMFormatDescriptionRef
):
结果:使用定义的输出参数成功创建.m4a
输出文件
案例 2:带有音轨参数的 .mp4 视频文件(使用 打印CMFormatDescriptionRef
):
结果:转换失败,添加[AVAssetWriter appendSampleBuffer: ...]
未知样本缓冲区时error
:
要将视频转换为音频,我使用与此处所述相同的算法:https ://github.com/rs/SDAVAssetExportSession/blob/master/SDAVAssetExportSession.m
此外,我尝试使用设置和channelLayout.mChannelLayoutTag
更新kAudioChannelLayoutTag_MPEG_5_1_D
值,但它对我不起作用。AVNumberOfChannelsKey
6
谁能帮我理解我做错了什么?可能没有解决方案可以仅使用 iOS AVFoundation 框架来执行此任务吗?我应该outputParams
为 5.1 aac 6 通道的音轨使用不同的音轨吗?
ios - 如何将预期帧速率设置为 AVAssetWriterInput
我有一个应用程序,它以不同的方式对视频进行编码并将其保存到照片库中——它可以缩短特定的时间范围、添加图片、文本等。在我尝试对 120+ fps 的视频进行编码之前,一切都运行良好。问题是视频似乎是慢动作的,我根本不追求那个目标。
在这里,我发现了有关AVAssetWritterInput
被调用的属性AVVideoExpectedSourceFrameRateKey
,但问题是当我尝试将此参数应用于 myAVAssetWritterInput
时,出现此错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVAssetWriterInput initWithMediaType:outputSettings:sourceFormatHint:] Output settings dictionary contains one or more invalid keys: ExpectedFrameRate'
这是我的AVAssetWriterInput
初始化,一点也不花哨:
任何帮助,将不胜感激。谢谢。
ios - 在使用 AVAssetWriter 录制视频时获取视频的持续时间
我有一门课可以将视频和音频录制到 .mp4 文件中。我用AVAssetWriter
,AVAssetWriterInput
来做这样的任务
使用这种方法()录制视频时,如何获取视频的持续时间AVAssetWriter
?
ios - AVAssetWriter - 未知错误代码=-16351
我正在使用AVAssetWriter将原始视频数据(H264/Mpeg4)流写入文件而无需重新编码。在成功写入前两个数据块后,我收到一个错误:
找不到有关该错误是什么意思以及如何修复它的任何文档?
ios - AVAssetWriter NSOSStatusErrorDomain 代码=-16155
录制长视频时出现错误。奇怪的是,当我大约录制 1 小时 30 分钟时,总是会发生这种情况。
我正在使用 AVAssetWriter 录制一个视频和两个音轨。
我试图在https://www.osstatus.com/中找到此错误代码,但没有运气。
任何帮助,将不胜感激
ios - AVAssetWriter 编解码器类型 hevc
我尝试使用 AVAssetWriter 将 H264 视频转码为 HEVC,但在 iPhone 6s 上失败。据说,iPhone 6s 支持 HEVC 进行转码,而不是实时视频编码。相同的代码适用于 iPhone 7 及更高版本。如果 iPhone 6s 不支持 HEVC 编解码器,我们如何在运行时以编程方式确定支持的编解码器?
avassetwriter - iOS - AVassetWriter 输出大小为 0 的文件并且不给出错误
我对 swift(和编程)仍然很陌生,我正在尝试将从 ARFrame 获得的 CVPixelbuffer 实时输出到视频中(顶部没有 AR 的东西)。
我已经设置了 AVAssetWriter 和 Input,并在每一帧上尝试附加 CVPixelbuffer(转换为 CMSampleBuffer)。
该代码创建了一个 0 字节的文件并且没有给出任何错误。我不知道出了什么问题,而且文档对于我的级别来说相当神秘。
我很确定每帧的时间戳不正确。但我无法弄清楚每一帧是否需要时间,或者自视频开始以来的总时间。
然后是 cvPixelBuffer 的大小和格式。我也不知道我是否需要告诉 AVAssetwriter 即将到来的数据的大小和格式是什么,或者它是否可以自己解决。
感谢您的时间。