Swift и AVAssetExportSession: кодирование видео MP4 для Chrome и HTML5

Я пытаюсь закодировать видео, чтобы его можно было прочитать на хроме в HTML5. К сожалению, я не могу найти кодек. Я пробовал MP4 и Apple .mov (H.265). Я могу воспроизвести звуковую дорожку, но нет изображения с проигрывателем HTML5 в Chrome. Пробовал кодировать в MP4... не получается. Видео отправляется в хранилище Google и отображается в Chrome с помощью HTML5. у кого-нибудь есть решение? Заранее спасибо.

func encodeVideo(videoUrl: URL, outputUrl: URL? = nil, resultClosure: @escaping (URL?) -> Void ) {

var finalOutputUrl: URL? = outputUrl

if finalOutputUrl == nil {
    var url = videoUrl
    url.deletePathExtension()
    url.appendPathExtension(".mp4")
    finalOutputUrl = url
}

if FileManager.default.fileExists(atPath: finalOutputUrl!.path) {
    print("Converted file already exists \(finalOutputUrl!.path)")
    resultClosure(finalOutputUrl)
    return
}

let asset = AVURLAsset(url: videoUrl)
if let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough) {
    exportSession.outputURL = finalOutputUrl!
    exportSession.outputFileType = AVFileTypeMPEG4
    let start = CMTimeMakeWithSeconds(0.0, 0)
    let range = CMTimeRangeMake(start, asset.duration)
    exportSession.timeRange = range
    exportSession.shouldOptimizeForNetworkUse = true
    exportSession.exportAsynchronously() {

        switch exportSession.status {
        case .failed:
            print("Export failed: \(exportSession.error != nil ? exportSession.error!.localizedDescription : "No Error Info")")
        case .cancelled:
            print("Export canceled")
        case .completed:
            resultClosure(finalOutputUrl!)
        default:
            break
        }
    }
} else {
    resultClosure(nil)
}

}


person Fox5150    schedule 18.07.2018    source источник


Ответы (1)


Он работает в Chrome, когда используется предустановка AVAssetExportPresetHighestQuality вместо AVAssetExportPresetPassthrough. См. полный пример здесь

person tadija    schedule 31.08.2018
comment
Это сработало для меня. Спасибо! - person K_Mohit; 14.04.2021