Неправильный цвет видео после использования AVAssetExportSession - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю видео и добавляю backgroundView на его фоне.

BackgroundView содержит цвет или изображение.

При использовании AVAssetExportSession мы не можем добавить фон для видео. Вот почему я генерирую фоновое видео из backgroundView.

guard let export = AVAssetExportSession(asset: mixComposition,presetName: AVAssetExportPresetHighestQuality) else { return }
export.videoComposition = mainComposition
export.outputFileType = .mp4
export.outputURL = exportURL
export.shouldOptimizeForNetworkUse = true

После этого добавьте AVURLAsset с помощью инструкций по фону для видео. И создайте последний.

guard let track = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid) else { return nil }
do {
    try track.insertTimeRange(CMTimeRange(start: .zero, end: asset.duration),
                                      of: asset.tracks(withMediaType: .video).first!, at: .zero)
} catch {
    print(error)
}
return AVMutableVideoCompositionLayerInstruction(assetTrack: track)

И проблема в том, что у меня неправильный цвет. После генерации из изображения это правильно, но после добавления в качестве инструкций оно стало светлее.

Обновление

Обнаружено, что после AVAssetExportSession изменяется цвет видео. Это не зависит от инструкций, оно также изменилось, если добавить видео к videoLayer.

У меня есть видео с добавленным цветом solid enter image description here

и после экспорта оно изменилось на enter image description here

Видео для теста: ссылка для скачивания

...