【问题标题】:iOS rotate video AVAsset avfoundationiOS 旋转视频 AVAsset avfoundation
【发布时间】:2016-02-02 13:57:58
【问题描述】:

Example

嗨,

努力旋转此视频以以正确的方向显示并填满整个屏幕。

我无法通过 videocompisition 获取 Avasset,但无法使其正常工作。

    let videoAsset: AVAsset = AVAsset(URL: outputFileURL) as AVAsset

    let clipVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo).first! as AVAssetTrack

    let newHeight = CGFloat(clipVideoTrack.naturalSize.height/3*4)

    let composition = AVMutableComposition()
    composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID())

    let videoComposition = AVMutableVideoComposition()
    var videoSize = CGSize()
    videoSize = clipVideoTrack.naturalSize
    videoComposition.renderSize = videoSize
    videoComposition.frameDuration = CMTimeMake(1, 30)

    let instruction = AVMutableVideoCompositionInstruction()

    instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(180, 30))

    // rotate to portrait
    let transformer:AVMutableVideoCompositionLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: clipVideoTrack)
    let t1 = CGAffineTransformMakeTranslation(0, 0);
    let t2 = CGAffineTransformRotate(t1, CGFloat(M_PI_2));

    transformer.setTransform(t2, atTime: kCMTimeZero)
    instruction.layerInstructions = [transformer]
    videoComposition.instructions = [instruction]

    let formatter = NSDateFormatter()
    formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
    let date = NSDate()
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
    let outputPath = "\(documentsPath)/\(formatter.stringFromDate(date)).mp4"
    let outputURL = NSURL(fileURLWithPath: outputPath)

    let exporter = AVAssetExportSession(asset: videoAsset, presetName: AVAssetExportPresetHighestQuality)!
    exporter.videoComposition = videoComposition

    exporter.outputURL = outputURL
    exporter.outputFileType = AVFileTypeQuickTimeMovie

    exporter.exportAsynchronouslyWithCompletionHandler({ () -> Void in
        dispatch_async(dispatch_get_main_queue(), {
            self.handleExportCompletion(exporter)
        })
    })

【问题讨论】:

  • 请提供您正在使用的代码。如果我们不知道它是如何实现的,就很难调试问题。
  • 有什么想法吗?在这方面苦苦挣扎,在网上根本找不到太多。
  • 上面代码的结果是什么?你能提供一个需要轮换的示例视频吗,我今天晚些时候看看
  • 2 链接一个是视频导出方式的图像,一个是视频本身。 dropbox.com/s/q8be3oqnwri4tme/IMG_0400.PNG?dl=0dropbox.com/s/iv5zot2onwqewv7/IMG_0401.mp4?dl=0谢谢。
  • 干杯,我会尽快看看

标签: ios swift avfoundation avasset


【解决方案1】:

解决了以下代码的旋转转换:

AVMutableVideoComposition rotated video captured in portrait mode

如果有人知道,现在在下面有问题的导出问题: https://stackoverflow.com/questions/35233766/avasset-failing-to-export

【讨论】:

  • 有人对此有实际答案吗?似乎我在旋转视频方面找不到任何东西,但我记得我曾经使用带有 rotateBy 的 AVAsset 来做到这一点
  • Chewie The Chorkie,你有没有找到解决这个问题的方法,我想旋转视频。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2012-11-08
  • 2023-03-19
  • 2011-11-14
相关资源
最近更新 更多