问题标签 [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.

0 投票
0 回答
1273 浏览

ios - 使用 AVAssetWriter 停止视频录制 (finishWriting) 且不会崩溃的正确方法

我用 录制视频AVAssetWriter。用户可以发送视频,然后我打电话finishWriting,或者取消录制,然后我打电话cancelWriting

我如何记录:

我如何停止录制:

当我打电话时stop_record,有时它会崩溃。即使file_writer应该停止写作并且如果我在 中进行了多次验证,也会didOutputSampleBuffer调用此行:

video_writer.append(sb)

我得到:

停止记录

文件写入器状态 1

视频完成

音频完成

libc++abi.dylib:以 NSException 类型的未捕获异常终止

我在没有调用的情况下尝试了相同的代码,markAsFinished但它也崩溃了(我更经常说)。

我想知道这是否是线程问题(因为stop_recorddidOutputSampleBuffer方法没有在同一个线程上调用)。无论如何,我不知道我做错了什么。如果有人可以帮助我,我将不胜感激。

0 投票
3 回答
2159 浏览

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:

0 投票
0 回答
38 浏览

audio - 当音频样本缓冲区大小发生变化时,avassetwriterinput readyformoredata 为 NO

如果音频样本缓冲区数据大小发生变化,我准备好更多数据总是没有。但是如果将样本缓冲区大小设置为不变的值,readyformoredata 将再次变为 yes。

有人知道为什么吗?

这是我的音频重新编码设置:

另一个可能的线索是,如果将 AVNumberOfChannelsKey 设置为 1,readyformoredata 可能为 yes,但 appendbuffer 返回失败。

任何建议将不胜感激~谢谢~

0 投票
1 回答
575 浏览

ios - AVAssetWriter 从 AVAsset 转换 aac 5.1 音轨在 appendSampleBuffer 上失败

我正在尝试从视频文件中提取音轨并使用此类.mp4转换为.m4a音频文件outputSettingsAVAssetWriter

案例 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值,但它对我不起作用。AVNumberOfChannelsKey6

谁能帮我理解我做错了什么?可能没有解决方案可以仅使用 iOS AVFoundation 框架来执行此任务吗?我应该outputParams为 5.1 aac 6 通道的音轨使用不同的音轨吗?

0 投票
1 回答
504 浏览

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初始化,一点也不花哨:

任何帮助,将不胜感激。谢谢。

0 投票
1 回答
736 浏览

ios - 在使用 AVAssetWriter 录制视频时获取视频的持续时间

我有一门课可以将视频和音频录制到 .mp4 文件中。我用AVAssetWriter,AVAssetWriterInput来做这样的任务

使用这种方法()录制视频时,如何获取视频的持续时间AVAssetWriter

0 投票
0 回答
68 浏览

ios - AVAssetWriter - 未知错误代码=-16351

我正在使用AVAssetWriter将原始视频数据(H264/Mpeg4)流写入文件而无需重新编码。在成功写入前两个数据块后,我收到一个错误:

找不到有关该错误是什么意思以及如何修复它的任何文档?

0 投票
1 回答
254 浏览

ios - AVAssetWriter NSOSStatusErrorDomain 代码=-16155

录制长视频时出现错误。奇怪的是,当我大约录制 1 小时 30 分钟时,总是会发生这种情况。

我正在使用 AVAssetWriter 录制一个视频和两个音轨。

我试图在https://www.osstatus.com/中找到此错误代码,但没有运气。

任何帮助,将不胜感激

0 投票
2 回答
760 浏览

ios - AVAssetWriter 编解码器类型 hevc

我尝试使用 AVAssetWriter 将 H264 视频转码为 HEVC,但在 iPhone 6s 上失败。据说,iPhone 6s 支持 HEVC 进行转码,而不是实时视频编码。相同的代码适用于 iPhone 7 及更高版本。如果 iPhone 6s 不支持 HEVC 编解码器,我们如何在运行时以编程方式确定支持的编解码器?

0 投票
0 回答
391 浏览

avassetwriter - iOS - AVassetWriter 输出大小为 0 的文件并且不给出错误

我对 swift(和编程)仍然很陌生,我正在尝试将从 ARFrame 获得的 CVPixelbuffer 实时输出到视频中(顶部没有 AR 的东西)。

我已经设置了 AVAssetWriter 和 Input,并在每一帧上尝试附加 CVPixelbuffer(转换为 CMSampleBuffer)。

该代码创建了一个 0 字节的文件并且没有给出任何错误。我不知道出了什么问题,而且文档对于我的级别来说相当神秘。

我很确定每帧的时间戳不正确。但我无法弄清楚每一帧是否需要时间,或者自视频开始以来的总时间。

然后是 cvPixelBuffer 的大小和格式。我也不知道我是否需要告诉 AVAssetwriter 即将到来的数据的大小和格式是什么,或者它是否可以自己解决。

感谢您的时间。