要解决AVAssetWriter录制空的、0kb的.mp4文件的问题,您可以按照以下步骤进行操作:
确保您的视频源有有效的数据。这可能涉及到从摄像头、屏幕捕捉或其他视频源获取视频帧的代码。
确保您的AVAssetWriter配置正确。请参考以下示例代码:
// 创建一个临时文件URL用于存储视频数据
let tempDirectory = NSTemporaryDirectory()
let outputURL = URL(fileURLWithPath: "\(tempDirectory)/output.mp4")
do {
// 创建AVAssetWriter,并设置输出URL和文件类型为mp4
let assetWriter = try AVAssetWriter(outputURL: outputURL, fileType: .mp4)
// 配置AVAssetWriter输入,例如视频和音频设置
// ...
// 开始写入
assetWriter.startWriting()
assetWriter.startSession(atSourceTime: .zero)
// 在适当的地方将视频帧写入AVAssetWriter输入,例如在捕捉到新的视频帧时
// ...
// 完成写入
assetWriter.finishWriting {
if assetWriter.status == .completed {
print("录制完成")
} else if assetWriter.status == .failed {
print("录制失败: \(assetWriter.error?.localizedDescription ?? "")")
}
}
} catch {
print("创建AVAssetWriter失败: \(error.localizedDescription)")
}
请根据您的具体情况更改和完善上述代码,确保正确设置输入和处理视频帧数据。另外,请注意在录制结束时检查assetWriter.status
以确定录制是否成功。