Сжатие видео PHAsset iOS swift

Я пытаюсь загрузить изображения и видео на сервер. он работает нормально. проблема, с которой я сталкиваюсь, - это изображение или видео, записанное с iphone, имеет слишком большой размер и требуется время для загрузки на сервер. как я могу уменьшить размер видеоданных?

if(asset.mediaType == .video)
{           
    var dataMOV : Data?

    manager.requestAVAsset(forVideo: asset, options: option2, resultHandler:  {(asset: AVAsset?, audioMix: AVAudioMix?, info: [AnyHashable : Any]?) in
        let avURLAsset = asset as? AVURLAsset
        do
        {
            let data = try Data(contentsOf: (avURLAsset?.url)!)
            dataMOV = data
            print("asset data :%@ ", data)
        }
        catch
        {

        }
    })
}

person pankti patel    schedule 19.09.2017    source источник
comment
stackoverflow .com / questions / 29521789 /.   -  person King of Masses    schedule 19.09.2017
comment
Спасибо, @KingofMasses, но как я могу использовать его с объектом фазсета?   -  person pankti patel    schedule 19.09.2017
comment
stackoverflow.com/questions/ 5687341 / рассмотрите это, AVAssetExportSession может помочь.   -  person MOHAMMAD ISHAQ    schedule 19.09.2017


Ответы (1)


Из AssetInfo извлеките URL-адрес ресурса и передайте его в метод ниже

func compressVideo(inputURL: URL, outputURL: URL, handler:@escaping (_ exportSession: AVAssetExportSession?)-> Void) {
        let urlAsset = AVURLAsset(url: inputURL, options: nil)
        guard let exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality) else {
            handler(nil)

            return
        }

        exportSession.outputURL = outputURL
        exportSession.outputFileType = AVFileTypeQuickTimeMovie
        exportSession.shouldOptimizeForNetworkUse = true
        exportSession.exportAsynchronously { () -> Void in
            handler(exportSession)
        }
    } 
person King of Masses    schedule 19.09.2017
comment
это помогло? - person King of Masses; 20.09.2017
comment
Можно ли показать его использование? Я попробовал это следующим образом: var outputURL = URL (fileURLWithPath: NSTemporaryDirectory ()). AppendingPathComponent (compressed.mp4) compressVideo (inputURL: vidData, outputURL: outputURL) {(exportSession) in outputURL = exportSession ! .outputURL! print (outputURL, укажите URL, а также старый val:, exportSession! .outputURL!)} - person ; 07.06.2019
comment
Проблема, которую я обнаружил, заключается в том, что он создает видео длиной 0 - person ; 07.06.2019