在iOS上捕获视频/音频时,如何使用AVAssetWriter将音频写入第一帧?

时间:2015-06-17 07:18:33

标签: ios audio video avassetwriter

长话短说,我正在尝试实施一个天真的解决方案,用于将视频从iOS摄像头/麦克风传输到服务器。

我正在使用AVCaptureSession音频和视频AVCaptureOutputs,然后使用AVAssetWriter / AVAssetWriterInputcaptureOutput:didOutputSampleBuffer:fromConnection方法中捕获视频和音频并写入生成的视频到文件。

要将此设为流,我使用NSTimer将视频文件分成1秒块(通过热切换不同的AVAssetWriter具有不同的outputURL)并通过HTTP将这些上传到服务器。

这是有效的,但我遇到的问题是:.mp4文件的开头似乎总是在第一帧中丢失音频,所以当视频文件连接在一起时服务器(运行ffmpeg)在这些文件的交叉点处有明显的音频跳过。视频很好 - 没有跳过。

Blank audio

我尝试了很多方法来确保没有CMSampleBuffers被删除并检查他们的时间戳,以确保他们向右AVAssetWriter,但无济于事。

使用AVCaptureMovieFileOutput检查AVCam example,使用AVAssetWriter检查AVCaptureLocation示例,看来它们生成的文件也是一样的。

也许有一些根本的东西,我在这里误解了音频/视频文件的性质,因为我是视频/音频捕捉的新手 - 但我想在我尝试通过学习解决这个问题之前先检查一下使用ffmpeg,因为有些人似乎要对流进行分段(如果你对此有任何提示,请告诉我!)。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过使用不同的API音频队列录制音频来解决它。这似乎解决了它,只需要注意时间,以避免声音延迟。