当前位置: 首页 > 面试题库 >

Swift:裁剪和导出视频

杭永安
2023-03-14
问题内容

我想将视频裁剪为正方形,但是我做不到。

我将此代码转换为swift,但在导出视频后仅出现黑屏

        var videoComposition: AVMutableVideoComposition = AVMutableVideoComposition()
        videoComposition.frameDuration = CMTimeMake(1, 60)
        videoComposition.renderSize = CGSizeMake(clipVideoTrack.naturalSize.height, clipVideoTrack.naturalSize.height)

        var instruction: AVMutableVideoCompositionInstruction = AVMutableVideoCompositionInstruction()
        instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30))

        var transformer: AVMutableVideoCompositionLayerInstruction =
        AVMutableVideoCompositionLayerInstruction(assetTrack: clipVideoTrack)

        var t1: CGAffineTransform = CGAffineTransformMakeTranslation(clipVideoTrack.naturalSize.height, 0)
        var t2: CGAffineTransform = CGAffineTransformRotate(t1, CGFloat(M_PI_2))

        var finalTransform: CGAffineTransform = t2

        transformer.setTransform(finalTransform, atTime: kCMTimeZero)

        instruction.layerInstructions = NSArray(object: transformer)
        videoComposition.instructions = NSArray(object: instruction)

        var documentsPath: NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as NSString

        var exportPath: NSString = documentsPath.stringByAppendingFormat("/xvideo.mov")
        var exportUrl: NSURL = NSURL.fileURLWithPath(exportPath)!


        var exporter = AVAssetExportSession(asset: asset!, presetName: AVAssetExportPresetHighestQuality)
        exporter.videoComposition = videoComposition
        exporter.outputFileType = AVFileTypeQuickTimeMovie
        exporter.outputURL = exportUrl

我想念什么?


问题答案:

您最终将缺少exporter块,无法AVAssetExportSession对创建的对象执行导出操作:

exporter.exportAsynchronouslyWithCompletionHandler({

    //display video after export is complete, for example...
    let outputURL:NSURL = exporter.outputURL;
    let asset:AVURLAsset = AVURLAsset(URL: outputURL, options: nil)
    let newPlayerItem:AVPlayerItem = AVPlayerItem(asset: asset)

    self.mPlayer = AVPlayer.playerWithPlayerItem(newPlayerItem) as AVPlayer

})


 类似资料:
  • 问题:是否有一个单独的FFMPEG裁剪过滤器可以用于所有视频,包括(但不限于):856x480、640x480和1280x720? 我们有一个视频处理系统(使用DirectShow),所有输入到这个系统的视频必须是16:9使用MJPEG编解码器。我们使用下面的ffmpeg命令将源视频转换为MJPEG,缩放像素使其为正方形,然后裁剪到16:9的纵横比。这对大多数输入视频都很管用,输出正是我们想要的。

  • 问题内容: 我正在尝试裁剪图像,然后将裁剪后的图像粘贴到另一个图像的中心。理想情况下,我希望裁切后的图像小于粘贴的图像,以便在粘贴的图像周围有一个边框,但我不知道这样是否可行。 这是我尝试过的方法(以及由此产生的错误消息): 我可以看到“区域”的大小已设为(0,0),但我不明白为什么。 任何对此的帮助将非常感谢 问题答案: 裁剪方法的PIL文档指出: 返回当前图像的矩形区域。该框是一个四元组,定义

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题

  • 我正在使用https://github.com/writingminds/ffmpeg-android-java命令裁剪视频: 其中“in”是inputfile,“out”是outputfile。

  • 本文向大家介绍iOS实现裁剪框和图片剪裁功能,包括了iOS实现裁剪框和图片剪裁功能的使用技巧和注意事项,需要的朋友参考一下 图片处理中经常用的图片剪裁,就是通过剪裁框确定图片剪裁的区域,然后剪去该区域的图片,今天实现了一下,其实图片剪裁本身不难,主要剪裁框封装发了点时间,主要功能可以拖动四个角缩放,但不能超出父视图,拖动四个边单方向缩放,不能超出父视图,拖动中间部分单单移动,不改变大小,不能超出父

  • 我想知道是否有办法在Xamarin中裁剪视频。我似乎找不到任何例子。我试图查看现有的函数和类,但什么也找不到。 基本上制作方视频,比如Vine和Instagram的视频。我认为这是通过裁剪视频的其余部分来实现的,而不仅仅是放大。