Я создаю видео и добавляю 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
и после экспорта оно изменилось на
Видео для теста: ссылка для скачивания