fix: Fix Video Recording delay and improve startRecording()
performance (#2192)
* fix: Add more logs * perf: Init audio AVAssetWriter in parallel * chore: Log Audio Session activation * perf: Init Audio Session asynchronously * chore: Log when category changed * fix: Revert lazy audio initialization * Update Podfile.lock * Pass `sourceFormatHint` to video and audio AVAssetWriter * fix: Remove `sourceFormatHint` from Video Asset Writer * Use default options for Audio Asset Writer * Update Podfile.lock * Revert "Use default options for Audio Asset Writer" This reverts commit e575a14c5342ddc7f9db557d5e3915328ed9e798. * Add time logs * fix: Don't synchronize audio buffers, they are already in sync * shouldOptimizeForNetworkUse = false * fix: Only update `latestTimestamp` once video buffer has been written * perf: Use `AVAssetWriterInput` instead of `AVAssetWriterInputPixelBufferAdaptor` * fix: Fix Audio not being synchronized with Video * Remove logs add comments * Format * feat: Set `.videoRecording` AVAudioSession mode * Refactor `startRecording()` a bit * Format * chore: Throw error directly instead of double-checking
This commit is contained in:
@@ -21,24 +21,15 @@ struct RecordVideoOptions {
|
||||
init(fromJSValue dictionary: NSDictionary) throws {
|
||||
// File Type (.mov or .mp4)
|
||||
if let fileTypeOption = dictionary["fileType"] as? String {
|
||||
guard let parsed = try? AVFileType(withString: fileTypeOption) else {
|
||||
throw CameraError.parameter(.invalid(unionName: "fileType", receivedValue: fileTypeOption))
|
||||
}
|
||||
fileType = parsed
|
||||
fileType = try AVFileType(withString: fileTypeOption)
|
||||
}
|
||||
// Flash
|
||||
if let flashOption = dictionary["flash"] as? String {
|
||||
guard let parsed = try? Torch(jsValue: flashOption) else {
|
||||
throw CameraError.parameter(.invalid(unionName: "flash", receivedValue: flashOption))
|
||||
}
|
||||
flash = parsed
|
||||
flash = try Torch(jsValue: flashOption)
|
||||
}
|
||||
// Codec
|
||||
if let codecOption = dictionary["codec"] as? String {
|
||||
guard let parsed = try? AVVideoCodecType(withString: codecOption) else {
|
||||
throw CameraError.parameter(.invalid(unionName: "codec", receivedValue: codecOption))
|
||||
}
|
||||
codec = parsed
|
||||
codec = try AVVideoCodecType(withString: codecOption)
|
||||
}
|
||||
// BitRate
|
||||
if let parsed = dictionary["bitRate"] as? Double {
|
||||
|
Reference in New Issue
Block a user