feat: Video Codec Option for recording video (#645)

* add video codec value

* add types

* use `recommendedVideoSettings` method instead

* lint

* refactor for better readability

* add a method to get available codecs (ios)

* imrove tsDoc description of the videoCodec option

Co-authored-by: Marc Rousavy <marcrousavy@hotmail.com>

* ios format

Co-authored-by: Marc Rousavy <marcrousavy@hotmail.com>
This commit is contained in:
Paul Rostorp
2021-12-30 10:47:23 +01:00
committed by GitHub
parent 7460560323
commit d96c5863c9
5 changed files with 73 additions and 3 deletions

View File

@@ -72,6 +72,26 @@ final class CameraViewManager: RCTViewManager {
component.focus(point: CGPoint(x: x.doubleValue, y: y.doubleValue), promise: promise)
}
@objc
final func getAvailableVideoCodecs(_ node: NSNumber, fileType: String?, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
withPromise(resolve: resolve, reject: reject) {
let component = getCameraView(withTag: node)
guard let videoOutput = component.videoOutput else {
throw CameraError.session(SessionError.cameraNotReady)
}
var parsedFileType = AVFileType.mov
if fileType != nil {
guard let parsed = try? AVFileType(withString: fileType!) else {
throw CameraError.parameter(ParameterError.invalid(unionName: "fileType", receivedValue: fileType!))
}
parsedFileType = parsed
}
return videoOutput.availableVideoCodecTypesForAssetWriter(writingTo: parsedFileType).map(\.descriptor)
}
}
@objc
final func getAvailableCameraDevices(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
withPromise(resolve: resolve, reject: reject) {