mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-05 05:51:42 +00:00
Fix short video recording crash
This commit is contained in:
parent
11a284a303
commit
9a3103bc3f
@ -337,7 +337,7 @@ final class CameraOutput: NSObject {
|
|||||||
let outputFileURL = URL(fileURLWithPath: outputFilePath)
|
let outputFileURL = URL(fileURLWithPath: outputFilePath)
|
||||||
let videoRecorder = VideoRecorder(configuration: VideoRecorder.Configuration(videoSettings: videoSettings, audioSettings: audioSettings), videoTransform: CGAffineTransform(rotationAngle: .pi / 2.0), fileUrl: outputFileURL, completion: { [weak self] result in
|
let videoRecorder = VideoRecorder(configuration: VideoRecorder.Configuration(videoSettings: videoSettings, audioSettings: audioSettings), videoTransform: CGAffineTransform(rotationAngle: .pi / 2.0), fileUrl: outputFileURL, completion: { [weak self] result in
|
||||||
if case let .success(transitionImage, duration, positionChangeTimestamps) = result {
|
if case let .success(transitionImage, duration, positionChangeTimestamps) = result {
|
||||||
self?.recordingCompletionPipe.putNext(.finished((outputFilePath, transitionImage!, false), nil, duration, positionChangeTimestamps.map { ($0 == .front, $1) }, CACurrentMediaTime()))
|
self?.recordingCompletionPipe.putNext(.finished((outputFilePath, transitionImage ?? UIImage(), false), nil, duration, positionChangeTimestamps.map { ($0 == .front, $1) }, CACurrentMediaTime()))
|
||||||
} else {
|
} else {
|
||||||
self?.recordingCompletionPipe.putNext(.failed)
|
self?.recordingCompletionPipe.putNext(.failed)
|
||||||
}
|
}
|
||||||
@ -363,7 +363,10 @@ final class CameraOutput: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func stopRecording() -> Signal<VideoCaptureResult, NoError> {
|
func stopRecording() -> Signal<VideoCaptureResult, NoError> {
|
||||||
self.videoRecorder?.stop()
|
guard let videoRecorder = self.videoRecorder, videoRecorder.isRecording else {
|
||||||
|
return .complete()
|
||||||
|
}
|
||||||
|
videoRecorder.stop()
|
||||||
|
|
||||||
return self.recordingCompletionPipe.signal()
|
return self.recordingCompletionPipe.signal()
|
||||||
|> take(1)
|
|> take(1)
|
||||||
|
|||||||
@ -291,7 +291,14 @@ private final class VideoRecorderImpl {
|
|||||||
|
|
||||||
public func stopRecording() {
|
public func stopRecording() {
|
||||||
self.queue.async {
|
self.queue.async {
|
||||||
self.recordingStopSampleTime = CMTime(seconds: CACurrentMediaTime(), preferredTimescale: CMTimeScale(NSEC_PER_SEC))
|
var stopTime = CMTime(seconds: CACurrentMediaTime(), preferredTimescale: CMTimeScale(NSEC_PER_SEC))
|
||||||
|
if self.recordingStartSampleTime.isValid {
|
||||||
|
if (stopTime - self.recordingStartSampleTime).seconds < 1.0 {
|
||||||
|
stopTime = self.recordingStartSampleTime + CMTime(seconds: 1.0, preferredTimescale: self.recordingStartSampleTime.timescale)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.recordingStopSampleTime = stopTime
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user