菜鸟教程小白 发表于 2022-12-12 19:24:20

ios - 具有修改的分辨率设置的 AVAssetExportSession


                                            <p><p><code>AVAssetExportSession</code> 将预设作为其初始化参数之一:</p>

<pre><code>AVAssetExportSession(asset: AVAsset, presetName: String)
</code></pre>

<p>预设是 <code>AVAssetExportPreset640x480</code> 或 <code>AVAssetExportPreset1920x1080</code> 等设置。但是,如果我想使用自定义分辨率(比如 250x400)进行编码,有没有办法做到这一点,如果有,该怎么做?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这些导出选项已定义,无法让您使用自定义分辨率进行编码。或者,您可以尝试这种方法</p>

<pre><code>func exportVideo(asset:AVAsset, renderedWidth: CGFloat, renderedHeight: CGFloat, exportCompletionHandler: (() -&gt; Void)?) {
      let videoTrack: AVAssetTrack = asset.tracksWithMediaType(AVMediaTypeVideo)

      let videoComposition = AVMutableVideoComposition()
      videoComposition.frameDuration = CMTimeMake(1, 30)
      videoComposition.renderSize = CGSizeMake(renderedWidth, renderedHeight)

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

      let transformer: AVMutableVideoCompositionLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videoTrack);
      //Apply any transformer if needed
      //

      instruction.layerInstructions =
      videoComposition.instructions =

      //Create export path
      let exportPath: NSURL = NSURL(fileURLWithPath: &#34;export_path_here&#34;)
      //

      let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetHighestQuality)
      exporter?.videoComposition = videoComposition
      exporter?.outputURL = exportPath
      exporter?.outputFileType = AVFileTypeQuickTimeMovie

      exporter?.exportAsynchronouslyWithCompletionHandler({ () -&gt; Void in
            //Do sth when finished
            if let handler = exportCompletionHandler {
                handler()
            }
      })
    }
</code></pre>

<p>我希望这会有所帮助。 </p>

<p>引用:<a href="https://www.one-dreamer.com/cropping-video-square-like-vine-instagram-xcode/" rel="noreferrer noopener nofollow">https://www.one-dreamer.com/cropping-video-square-like-vine-instagram-xcode/</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 具有修改的分辨率设置的 AVAssetExportSession,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/36730710/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/36730710/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 具有修改的分辨率设置的 AVAssetExportSession