为什么我的应用视频会以空白绿色屏幕的形式上传到Facebook?

bkw*_*ero 6 video facebook video-capture avcapturesession swift

不知道在哪里问这个,所以我想从这里开始.

我有两个视频剪辑.视频剪辑都没有任何音频.

通过AVCaptureSession从iPhone的相机捕获一个视频片段.

第二个视频剪辑本地存储在设备上.

我希望以完全播放捕获视频的方式合并两个视频,然后立即播放第二个视频剪辑的一秒钟.然后我将新的视频剪辑与预定的音频文件合并,然后转到我的共享菜单,我将其保存到相机胶卷.

最终结果与相机胶卷完全一致.但是,当我将视频分享到Facebook时,第一个视频剪辑会变形为绿色或有时灰色的屏幕.当时间到来时,第二个剪辑可以正常播放.整个过程中音频都很好.

我不知道造成这种情况的原因.

有帮助吗?

func mergeVideos() {

    let videoAsset = AVAsset(URL: recordedVideoURL)

    let videoAsset2 = AVAsset(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Credits", ofType: "mp4")!))

    let audioAsset = AVAsset(URL: finalAudioURL)

    // 1 - Create AVMutableComposition object.
    let mixComposition = AVMutableComposition()

    // 2 - Audio track

    do {

        let audioTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: 0)

        try audioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, audioAsset.duration + CMTime(seconds: 1, preferredTimescale: 30)), ofTrack: audioAsset.tracksWithMediaType(AVMediaTypeAudio)[0], atTime: kCMTimeZero)

    } catch {

        print(error)

    }

    // 3 - Video tracks

    do {

        let videoTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: Int32(kCMPersistentTrackID_Invalid))
        try videoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), ofTrack: videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0], atTime: kCMTimeZero)
        try videoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, audioAsset.duration-videoAsset.duration + CMTime(seconds: 1, preferredTimescale: 30)), ofTrack: videoAsset2.tracksWithMediaType(AVMediaTypeVideo)[0], atTime: videoAsset.duration)

    } catch {

        print(error)

    }

    // 5 - Create Exporter
    let exporter = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality)
    deleteFileAtURL(videoToShareURL)
    exporter!.outputURL = videoToShareURL
    exporter!.outputFileType = AVFileTypeMPEG4
    exporter!.shouldOptimizeForNetworkUse = true

    // 6 - Perform the Export
    exporter!.exportAsynchronouslyWithCompletionHandler() {
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            hideSpinner()

            self.performSegueWithIdentifier("backToShare", sender: self)

        })

    }

}
Run Code Online (Sandbox Code Playgroud)

Pen*_*esh 0

这是违反直觉的,但你确定这是 iPhone 而不是 Facebook 的问题吗?在某些情况下,Facebook 视频无法正常播放,并且会出现绿屏和正常音频的情况。

值得尝试一下 Facebook 帮助中心上的这些链接并确认

1. Facebook 上的视频出现绿屏

2. 当我尝试播放视频时,我听到声音,但屏幕变绿