问题标签 [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 投票
2 回答
385 浏览

ios - LLSimpleCamera:AVAssetWriterInput appendSampleBuffer 崩溃

我正在使用 LLSimpleCamera 录制视频。当我使用后置摄像头时录制很好,但是当我切换到前置摄像头时,应用程序崩溃并且报告的错误是

* 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* -[AVAssetWriterInput appendSampleBuffer:] 样本缓冲区的媒体类型必须匹配接收者的媒体类型(“soun”)'

我已经尝试了许多 stackOverflow 帖子,但无法修复崩溃。谁能让我知道可能是什么问题?

0 投票
1 回答
1334 浏览

ios - AVAssetWriter - 设置自定义帧率

我正在使用 AVAssetWriter 使用委托从 ARSession 写入视频帧。

请参阅下面用于编写图像的代码。

如何根据我们的需要设置自定义帧速率,如 24、30 或 60 等。

在输出设置中,为 AVVideoExpectedSourceFrameRateKey 提供的值为 30。但是我们为它提供的任何值,在使用 VLC 播放器 -> 媒体信息 -> 编解码器详细信息时,始终将“帧速率”设为 60

我应该进行哪些更改来设置所需的帧速率?提前致谢。

0 投票
0 回答
182 浏览

ios - 使用 AVAssetWriter 写入视频失败

我正在使用 AVAssetWriter 将屏幕重新编码保存为 mp4(带H.264视频和aac音频编码)。一切都按预期完美运行,但一些用户抱怨 0KB 视频大小问题,即没有数据写入输出文件。通过反复尝试,我能够重现此问题。它发生在几次成功写入之后(有时在 2 次之后,有时在 5 次之后,在某些机器上它从未发生过)。我比较了成功的流程和失败的日志。我发现的唯一一件事就是这个

CMIO_Unit_Converter_Audio.cpp:588:RebuildAudioConverter AudioConverterSetProperty() 失败 (1886547824)

在哪里

kAudioFormatUnsupportedPropertyError = 1886547824

这导致我在失败的情况下检查音频格式,但 AVAssetWriter 的音频格式非常好。我正在将音频写入器输入设置为 AVAssetWriter Inputs


我为视频和音频创建 AVAssetWriterInput 的代码如下 Audio AVAssetWriterInput

视频 AVAssetWriterInput


我注意到在启动 AVCaptureSession 之后和之前出现日志中的AVCaptureVideoDataOutputSampleBufferDelegate错误captureOutput。我也记录了 AVCaptureSession 输入和输出。

AVCaptureSession 输入

AVCaptureSession 输出

但是我在这里也没有看到任何问题。几天来,我一直试图弄清楚这一点,但未能做到。我不知道是什么触发了它,即使一切设置正确,它也无法写入任何输出。如果我只写视频,这只会发生在视频+音频中,它才能正常工作。

0 投票
1 回答
334 浏览

ios - AVAssetWriter 正在从 iOS 设备上的自定义视频流中录制空的 0kb .mp4 文件

我正在看到一个视频流并制作.mp4文件,所以我做的大部分都是正确的。我的问题是我的视频文件是 0kb,是空的。我正在使用 iOS 设备来控制带有摄像头的单独设备。此相机正在向 iOS 设备发送视频流,该视频流被解码为 aCMSampleBuffer然后转换为 aCVPixelBuffer并显示在UIImageView. 我正在很好地显示视频(另一个问题是,如果您知道有关修复该问题的任何信息,请发表评论,我会收到 -12909 错误)。

我尝试记录CMSampleBuffer对象,但编译器错误告诉我需要排除输出设置。所以我删除了这些,它现在保存了空文件。

当流开始时,我称之为:

这结束了它:

我确定我的附加操作AVAssetWriterInput失败

这是我当前的附加代码,我确实首先实时尝试了 CMSampleBuffer,我不确定为什么没有工作。我怀疑实时功能仅适用于 iOS 设备的 AV 组件,而不适用于其他连接的设备。然后我尝试了这个可能应该有效但不是。我尝试了 30 和 60 fps,但应该是 30。我在滥用 CMTime 吗?因为我试图不使用 CMTime 并且没有像我提到的那样工作。

0 投票
1 回答
142 浏览

swift - 将音频样本缓冲区附加到 AVAssetwriterInput 时 AVAssetWiter 状态失败 - OSX,Swift

我正在尝试使用 AVFoundation 在 OSX 中录制带有音频的屏幕,当我录制视频时效果很好。但是当添加音频输入并将其附加到 AVAssetWriterInput 时,资产编写器状态更改为 .failed。

错误信息是

0 投票
1 回答
53 浏览

avaudiorecorder - 音频 (`AVAssetWriterInput` & `AVAudioRecorder`) 优化设置

我目前正在构建一个带有视频和音频录制(前景和背景)的应用程序。

我的客户有一些报告说某些录音失败,现在我检查了他们的日志,似乎在某些设备上编码设置不好。我在整个网络上进行了搜索,以找到关于我应该如何配置记录对象AVAssetWriterInput&的体面信息来源AVAudioRecorder。目前这是我对这两个对象的设置

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

顺便说一句,这是我得到的错误

0 投票
0 回答
36 浏览

ios - RPScreenRecorder - 自定义录制大小

我正在使用 RPScreenRecorder 在 iOS 上录制屏幕,它工作正常,我的问题是,有没有办法设置我想要录制的屏幕的特定部分而不是整个屏幕?到目前为止,我检查了:AVAssetWriter、AVAudioSession、RPScreenRecorder 但没有运气。谢谢你

0 投票
1 回答
121 浏览

swift - AVAssetWriterInput - 捕获音频的视频帧不足

我有一个中等复杂的 AVAssetWriterInput 设置,我正在使用它来在录制时翻转相机。基本上运行两个会话,当用户点击翻转相机时,我将会话 1 从输出断开并附加会话 2。

这真的很棒。我可以导出视频,它播放得很好。

现在我正在尝试对生成的视频做更高级的事情,一些问题正在弹出,特别是导出的 AVAsset 内部的 AVAssetTracks 稍微不匹配(总是小于 1 帧)。具体来说,我正在尝试这样做:https ://www.raywenderlich.com/6236502-avfoundation-tutorial-adding-overlays-and-animations-to-videos但大部分时间最终都是全黑的帧,有时在视频的开头,有时在视频的尾部,会出现一瞬间。时间不同,但总是小于一帧(见下面的日志,1/30 或 0.033333333s)

我进行了一些来回调试,并设法使用我的录像机录制了一个视频,该录像机始终产生尾随黑框,但是使用教程代码我无法创建产生尾随黑框的视频。我在教程代码中添加了一些类似的日志记录(下面粘贴的内容),我看到的增量不超过 2/100 秒。所以最多大约是 1 帧的 1/10。有一次它甚至是一个完美的 0。

所以我现在的感觉是,正在发生的事情是我录制我的视频,两个assetInputs 开始吞噬数据,然后当我说“停止”时它们停止了。视频输入在最后一个完整帧处停止,音频输入也类似。但是由于音频输入的采样率比视频高得多,因此它们没有完美同步,我最终得到的音频比视频多。这不是问题,直到我用两条轨道组成资产,然后组成引擎认为我的意思是“是的,即使存在不匹配,实际上所有轨道都使用 100% 的时间”,这会导致黑屏.

(编辑:这基本上是正在发生的事情 - https://blender.stackexchange.com/questions/6268/audio-track-and-video-track-are-not-the-same-length

我认为正确的解决方案是,与其担心构图结构和时间安排并确保一切正常,不如让捕获的音频和视频尽可能匹配。理想情况下为 0,但我可以接受大约 1/10 帧的任何内容。

所以我的问题是:如何使两个 AVAssetWriterInputs,一个音频和一个视频,连接到 AVAssetWriter 更好地排列?有地方设置吗?我会弄乱帧率吗?我应该将导出的资产修剪到视频轨道的长度吗?停止录制时可以复制最后捕获的帧吗?我可以让输入在不同的时间停止 - 基本上先停止音频然后等待视频“赶上”然后停止视频?还有什么?我在这里不知所措:|

我的日志

教程日志

0 投票
1 回答
81 浏览

swift - 当我尝试使用 AVAssetWriterInput swift 压缩/下采样音频文件时出现错误

我正在尝试获取本地 m4a 文件并压缩/向下采样该文件(为了制作更小的文件)。

现在,当我尝试附加样本缓冲区时,我遇到了错误。

错误描述:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVAssetWriterInput appendSampleBuffer:] Cannot append sample buffer: Input buffer must be in an uncompressed format when outputSettings is not nil'

我尝试将原始音频文件压缩为相同文件格式但比特率较低的代码:

原始音频有设置:

原始文件的 URL 代码:

编辑

这是错误的完整描述:

assetsWriter_finishBuildingAudioTrackWithSourceFormatDescription 在 /Library/Caches/com.apple.xbs/Sources/EmbeddedCoreMedia_Sim/EmbeddedCoreMedia-2765.6/Prototypes/Export/FigAssetWriter.c:636 处发出 err=-12413 (kFigAssetWriterError_InappropriateSourceFormat) (AssetWriter 只能压缩 LPCM 音频)

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[AVAssetWriterInput appendSampleBuffer:] 无法附加样本缓冲区:当 outputSettings 不为 nil 时,输入缓冲区必须为未压缩格式”

0 投票
0 回答
13 浏览

ios - AVAssetWriterInput.append 给出错误“发生未知错误(-12706)”

我只是想捕捉屏幕、应用程序音频和麦克风音频。应用程序音频和麦克风音频独立工作正常,但组合时会引发一些未知错误。以下是开始截屏和processSampleBuffer.

设置屏幕捕获编写器的方法

处理样本缓冲区