Video, hochgeladen auf S3 Bucket, nicht über URL in iOS App abspielen

8

Ich lade die Videos und Bilder über die Post-Anfrage an den S3-Dienst in den S3-Bucket hoch (ohne AWS SDK zu verwenden). Die Bilder und Videos wurden erfolgreich hochgeladen. Das Video wird jedoch nicht über die URL abgespielt.

Unten ist der Fehler, der auf der Konsole gedruckt wird:

Fehlerdomäne = NSURLErrorDomain Code = -999 "abgebrochen" UserInfo = {NSErrorFailingURLStringKey = https: // s3url }

Es folgt der Code für die mehrteilige Anforderung, die ich verwende:

    Alamofire.upload(multipartFormData: { (multiPart) in
        if parameters != nil {
            for (key, value) in parameters! {
                multiPart.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
            }
        }
        print("mime type ==================>\(mimeType)")
        //mime type for video: "video/mp4"
        multiPart.append(file, withName: key, fileName: fileName, mimeType: mimeType)
    }, usingThreshold: 10000, to: url, method: .post, headers: headers) { (encodingResult) in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseString(completionHandler: { (response) in
                print("response string")
                print(response)
            })
            upload.responseJSON { response in
                print(response)
                print(response.result.isSuccess)
            }
        case .failure(let error):
            failure(self.parseError(error: error))
            break
        }
    }
SV
quelle
Sind die Videodateien öffentlich verfügbar? Wenn Sie die URL in den Browser eingeben, wird sie geöffnet?
Scriptable
@Scriptable ja alle Dateien haben öffentlichen Zugriff. Wenn ich die URL im Browser öffne, wird die Datei heruntergeladen und nach dem Hinzufügen der Erweiterung .mov zur Datei im Quick Time Player abgespielt.
SV
Können Sie den Code zeigen, wo Sie versuchen, ihn abzuspielen?
Scriptable
Ich spiele es über eine Drittanbieter-Bibliothek VGPlayer. Aber ich habe es auch auf AVPlayerController versucht, es funktioniert nicht. let player = AVPlayer (URL: videoURL) let playerViewController = AVPlayerViewController () playerViewController.player = player self.present (playerViewController, animiert: true) {playerViewController.player! .play ()}
SV

Antworten:

4

Der Grund dafür war, dass beim Hochladen des Videos der Inhaltstyp für das Video nicht eingestellt wurde, aufgrund dessen das Video nicht abgespielt wurde. Wenn Sie den Inhaltstyp sowohl in Formulardaten als auch in Richtlinie festlegen, wird das Video hochgeladen und erfolgreich abgespielt.

SV
quelle