在iOS上捕获视频/音频时,如何使用AVAssetWriter将音频写入第一帧?
长话短说,我正在尝试实现一个简单的解决方案,将视频从iOS摄像头/麦克风传输到服务器 我正在对音频和视频使用在iOS上捕获视频/音频时,如何使用AVAssetWriter将音频写入第一帧?,ios,audio,video,avassetwriter,Ios,Audio,Video,Avassetwriter,长话短说,我正在尝试实现一个简单的解决方案,将视频从iOS摄像头/麦克风传输到服务器 我正在对音频和视频使用AVCaptureSession,然后使用AVAssetWriter/AVAssetWriterInput在captureOutput:didOutputSampleBuffer:fromConnection方法中捕获视频和音频,并将生成的视频写入文件 为了使这成为一个流,我使用NSTimer将视频文件分成1秒的块(通过在不同的AVAssetWriter中热交换,该文件具有不同的outpu
AVCaptureSession
,然后使用AVAssetWriter
/AVAssetWriterInput
在captureOutput:didOutputSampleBuffer:fromConnection
方法中捕获视频和音频,并将生成的视频写入文件
为了使这成为一个流,我使用NSTimer
将视频文件分成1秒的块(通过在不同的AVAssetWriter
中热交换,该文件具有不同的outputURL
),并通过HTTP将其上传到服务器
这是可行的,但我遇到的问题是:.mp4
文件的开头在第一帧中似乎总是缺少音频,因此当视频文件在服务器上串联(运行ffmpeg
)时,这些文件的交叉处会出现明显的音频跳过。视频很好-没有跳过
我尝试了许多方法来确保没有丢弃CMSampleBuffers
,并检查它们的时间戳,以确保它们指向正确的AVAssetWriter
,但没有任何效果
使用AVCaptureMovieFileOutput
检查和使用AVAssetWriter
检查AVCaptureLocation示例,它们生成的文件似乎做了相同的事情
也许我对音频/视频文件的本质有一些基本的误解,因为我对视频/音频捕获还不熟悉——但我想在尝试解决这一问题之前,我会检查一下,学习使用
ffmpeg
,就像有些人似乎在分割流一样(如果你对此也有任何提示,请让我知道!)。提前谢谢 我也遇到了同样的问题,通过使用不同的API音频队列录制音频解决了这个问题。这似乎可以解决问题,只需注意时间安排,以避免声音延迟。您发现问题了吗?@PabloMartinez对此回复太晚表示抱歉-不,我没有找到解决此特定问题的方法。最后,我让AvassetWriter重叠(因此写入两个AvassetWriter几帧),然后使用AVAssetExportSession
从结果剪辑中修剪前几帧。