Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f6b6cfb3d5 |
@@ -38,7 +38,8 @@ class RecordingSession(
|
|||||||
|
|
||||||
data class Video(val path: String, val durationMs: Long, val size: Size)
|
data class Video(val path: String, val durationMs: Long, val size: Size)
|
||||||
|
|
||||||
private val outputPath: File = File(filePath)
|
// Normalize path - expo-file-system passes file:// URIs but File expects raw paths
|
||||||
|
private val outputPath: File = File(filePath.removePrefix("file://"))
|
||||||
|
|
||||||
private val bitRate = getBitRate()
|
private val bitRate = getBitRate()
|
||||||
private val recorder = ChunkedRecordingManager.fromParams(
|
private val recorder = ChunkedRecordingManager.fromParams(
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ extension CameraSession {
|
|||||||
onError: @escaping (_ error: CameraError) -> Void) {
|
onError: @escaping (_ error: CameraError) -> Void) {
|
||||||
// Run on Camera Queue
|
// Run on Camera Queue
|
||||||
CameraQueues.cameraQueue.async {
|
CameraQueues.cameraQueue.async {
|
||||||
|
// Normalize path - expo-file-system passes file:// URIs but FileManager expects raw paths
|
||||||
|
let normalizedPath = filePath.hasPrefix("file://") ? String(filePath.dropFirst(7)) : filePath
|
||||||
|
|
||||||
let start = DispatchTime.now()
|
let start = DispatchTime.now()
|
||||||
ReactLogger.log(level: .info, message: "Starting Video recording...")
|
ReactLogger.log(level: .info, message: "Starting Video recording...")
|
||||||
|
|
||||||
@@ -98,20 +101,20 @@ extension CameraSession {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !FileManager.default.fileExists(atPath: filePath) {
|
if !FileManager.default.fileExists(atPath: normalizedPath) {
|
||||||
do {
|
do {
|
||||||
try FileManager.default.createDirectory(atPath: filePath, withIntermediateDirectories: true)
|
try FileManager.default.createDirectory(atPath: normalizedPath, withIntermediateDirectories: true)
|
||||||
} catch {
|
} catch {
|
||||||
onError(.capture(.createRecordingDirectoryError(message: error.localizedDescription)))
|
onError(.capture(.createRecordingDirectoryError(message: error.localizedDescription)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReactLogger.log(level: .info, message: "Will record to temporary file: \(filePath)")
|
ReactLogger.log(level: .info, message: "Will record to temporary file: \(normalizedPath)")
|
||||||
|
|
||||||
do {
|
do {
|
||||||
// Create RecordingSession for the temp file
|
// Create RecordingSession for the temp file
|
||||||
let recordingSession = try RecordingSession(outputDiretory: filePath,
|
let recordingSession = try RecordingSession(outputDiretory: normalizedPath,
|
||||||
fileType: options.fileType,
|
fileType: options.fileType,
|
||||||
onChunkReady: onChunkReady,
|
onChunkReady: onChunkReady,
|
||||||
onChunkError: onChunkError,
|
onChunkError: onChunkError,
|
||||||
|
|||||||
Reference in New Issue
Block a user