From 2c62b6dcf3cf11d2e8423a936e0ad08662ab3be3 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 21 May 2023 20:48:53 +0400 Subject: [PATCH] Fix video writing --- .../Sources/MediaEditorValues.swift | 6 +++--- .../Sources/MediaEditorVideoExport.swift | 20 ++++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorValues.swift b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorValues.swift index 8158338d69..30d7645c89 100644 --- a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorValues.swift +++ b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorValues.swift @@ -933,8 +933,7 @@ public func recommendedVideoExportConfiguration(values: MediaEditorValues, frame AVVideoCodecKey: AVVideoCodecType.hevc, AVVideoCompressionPropertiesKey: compressionProperties, AVVideoWidthKey: 720, - AVVideoHeightKey: 1280, - MediaEditorVideoExport.Configuration.FrameRateKey: frameRate + AVVideoHeightKey: 1280 ] let audioSettings: [String: Any] = [ @@ -947,6 +946,7 @@ public func recommendedVideoExportConfiguration(values: MediaEditorValues, frame return MediaEditorVideoExport.Configuration( videoSettings: videoSettings, audioSettings: audioSettings, - values: values + values: values, + frameRate: frameRate ) } diff --git a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorVideoExport.swift b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorVideoExport.swift index 5bf6428220..0337bed811 100644 --- a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorVideoExport.swift +++ b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorVideoExport.swift @@ -61,7 +61,10 @@ public final class MediaEditorVideoAVAssetWriter: MediaEditorVideoExportWriter { } var videoSettings = configuration.videoSettings - videoSettings[AVVideoExpectedSourceFrameRateKey] = sourceFrameRate + if var compressionSettings = videoSettings[AVVideoCompressionPropertiesKey] as? [String: Any] { + compressionSettings[AVVideoExpectedSourceFrameRateKey] = sourceFrameRate + videoSettings[AVVideoCompressionPropertiesKey] = compressionSettings + } let videoInput = AVAssetWriterInput(mediaType: .video, outputSettings: videoSettings) videoInput.expectsMediaDataInRealTime = false @@ -175,21 +178,22 @@ public final class MediaEditorVideoExport { } public struct Configuration { - public static let FrameRateKey = "Telegram__FrameRate" - public var shouldOptimizeForNetworkUse: Bool = true public var videoSettings: [String: Any] public var audioSettings: [String: Any] public var values: MediaEditorValues + public var frameRate: Float public init( videoSettings: [String: Any], audioSettings: [String: Any], - values: MediaEditorValues + values: MediaEditorValues, + frameRate: Float ) { self.videoSettings = videoSettings self.audioSettings = audioSettings self.values = values + self.frameRate = frameRate } var timeRange: CMTimeRange? { @@ -211,14 +215,6 @@ public final class MediaEditorVideoExport { return CGSize(width: 1920.0, height: 1080.0) } } - - var frameRate: Float { - if let frameRate = self.videoSettings[Configuration.FrameRateKey] as? Float { - return frameRate - } else { - return 30.0 - } - } } public enum Status {