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)
这是违反直觉的,但你确定这是 iPhone 而不是 Facebook 的问题吗?在某些情况下,Facebook 视频无法正常播放,并且会出现绿屏和正常音频的情况。
值得尝试一下 Facebook 帮助中心上的这些链接并确认
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |