Портретный режим ориентации видео не работает

Я пытался объединить одно аудио и видео. Все в полном порядке. Но видео экспортируется в ландшафтный режим. Но я хочу, чтобы он был в портретном режиме.

Я знаю, что на этот вопрос уже есть ответ в StackOverflow. Но эти ответы не работают для меня. Кто-нибудь может мне помочь, пожалуйста. Мне нужен свифт 3 версии.

Это список ответов, которому я следовал, но не работает для меня.

Первый

секунда

4-й

5-й

Примечание. Пожалуйста, не голосуйте за дубликат. Я знаю, что этот вопрос уже есть, но не правильный ответ для меня. пожалуйста, помогите мне. Я застрял здесь на долгий день.

вот что я пытаюсь реализовать

 let aVideoAsset : AVAsset = AVAsset(url: videoUrl as URL)
        let aAudioAsset : AVAsset = AVAsset(url: audioUrl as URL)

        let mainComposition = AVMutableComposition()

        let videoTrack = mainComposition.addMutableTrack(withMediaType: AVMediaTypeVideo, preferredTrackID: kCMPersistentTrackID_Invalid)
        let videoAssetTrack = aVideoAsset.tracks(withMediaType: AVMediaTypeVideo).first!
        try? videoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, aVideoAsset.duration), of: videoAssetTrack, at: kCMTimeZero)

        let audioTrack = mainComposition.addMutableTrack(withMediaType: AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid)
        let audioAssetTrack = aAudioAsset.tracks(withMediaType: AVMediaTypeAudio).first!
        try? audioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, aAudioAsset.duration), of: audioAssetTrack, at: kCMTimeZero)

        let videoCompositionLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videoTrack)
        videoCompositionLayerInstruction.setTransform( videoAssetTrack.preferredTransform, at: kCMTimeZero)
        let videoCompositionInstuction = AVMutableVideoCompositionInstruction()
        videoCompositionInstuction.timeRange = CMTimeRangeMake(kCMTimeZero, mainComposition.duration)
        videoCompositionInstuction.layerInstructions = [ videoCompositionLayerInstruction ]



        var renderSize = videoAssetTrack.naturalSize
        renderSize = renderSize.applying(videoAssetTrack.preferredTransform)
        renderSize = CGSize(width: fabs(renderSize.width), height: fabs(renderSize.height))

        let videoComposition = AVMutableVideoComposition()
        videoComposition.renderSize = renderSize
        videoComposition.renderSize = CGSize( width: 1280, height: 720)
        videoComposition.frameDuration = CMTimeMake(1, 30)
        videoComposition.instructions = [ videoCompositionInstuction ]




        let savePathUrl : NSURL = NSURL(fileURLWithPath: NSHomeDirectory() + "/Documents/newVideo.mp4")

        let assetExport = AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetHighestQuality)
        assetExport?.outputURL = savePathUrl as URL
        assetExport?.outputFileType = AVFileTypeQuickTimeMovie
        assetExport?.shouldOptimizeForNetworkUse = true
        assetExport?.exportAsynchronously { () -> Void in
            switch assetExport?.status {

            case AVAssetExportSessionStatus.completed?:

                //Uncomment this if u want to store your video in asset

                let assetsLib = ALAssetsLibrary()
                assetsLib.writeVideoAtPath(toSavedPhotosAlbum: savePathUrl as URL!, completionBlock: nil)

                print("success")
            case  AVAssetExportSessionStatus.failed?:
                print("failed \(String(describing: assetExport?.error))")
            case AVAssetExportSessionStatus.cancelled?:
                print("cancelled \(String(describing: assetExport?.error))")
            default:
                print("complete")
            }
        }

person Sporshiya Islam    schedule 22.09.2017    source источник
comment
Какое-нибудь решение найдено?   -  person thelearner    schedule 15.06.2018


Ответы (1)


Просто удалите следующую строку из вашего кода.

videoComposition.renderSize = CGSize( width: 1280, height: 720)
person Cagatay Kaptanoglu    schedule 16.10.2017
comment
Это интересно. Он работает, как и ожидалось, после того, как я удалил эту строку на своем конце. - person Cagatay Kaptanoglu; 29.11.2017