2017-03-02 8 views
0

Ich habe ein Video in iPhone aufgezeichnet und ich bekomme seine lokale URL-Datei. Gibt es eine Möglichkeit, das Video mithilfe der URL um 90 Grad zu drehen?Drehen Sie aufgenommene Videos um 90 Grad programaticaly in iOS

+0

@ Anbu.Karthik ich, wie ich keine Ahnung bekommen helfen hoffen, es zu tun –

+0

Wie lade ich dein Video, es ist AVplayer oder MPMoviePlayerViewController –

+0

Ich muss es mit anderen Videos zusammenführen und es an den Server senden –

Antwort

1

Sie können das Video vor dem Exportieren der Sitzung mit AVMutableVideoCompositionLayerInstruction Klasse drehen und Sie können Transform darauf anwenden.

Dies ist die Methode

[yourlayerInstruction setTransform:CGAffineTransformMakeRotation(M_PI/2) atTime:firstAssets.duration]; 

hier die vollständige Umsetzung

  AVMutableComposition *mixComposition = [[AVMutableComposition alloc] init]; 

      AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo 
                       preferredTrackID:kCMPersistentTrackID_Invalid]; 


      AVMutableVideoCompositionInstruction * mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction]; 
      mainInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeAdd(firstAsset.duration, secondAsset.duration)); 

      AVMutableVideoCompositionLayerInstruction *firstlayerInstruction = [AVMutableVideoCompositionLayerInstruction 
    videoCompositionLayerInstructionWithAssetTrack:firstTrack]; 

// set Trasform Here 
    [firstlayerInstruction setTransform:CGAffineTransformMakeRotation(M_PI/2) atTime:kCMTimeZero]; 

     [firstlayerInstruction setOpacity:0.0 atTime:firstAsset.duration]; 

      mainInstruction.layerInstructions = [NSArray arrayWithObjects:firstlayerInstruction,nil];; 

     AVMutableVideoComposition *mainCompositionInst = [AVMutableVideoComposition videoComposition]; 

     mainCompositionInst.instructions = [NSArray arrayWithObject:mainInstruction]; 
      mainCompositionInst.frameDuration = CMTimeMake(1, 30); 
      mainCompositionInst.renderSize = CGSizeMake(320.0, 480.0); 

     AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition 
                       presetName:AVAssetExportPreset640x480]; 
      exporter.outputURL=url; 
      exporter.videoComposition=mainCompositionInst; 
      exporter.outputFileType = AVFileTypeQuickTimeMovie; 
      exporter.shouldOptimizeForNetworkUse = YES; 
      [exporter exportAsynchronouslyWithCompletionHandler:^{ 
       dispatch_async(dispatch_get_main_queue(),^
       { 
        [self exportDidFinish:exporter]; 
       }); 
      }]; 

ich das Sie

+0

Es funktioniert gut –

0

Wenn Sie MPMoviePlayerViewController verwenden für Video-Wiedergabe: - Dann können Sie dies versuchen, zuerst Ihre URL aus Bündel holen unterhalb der Linie verwenden,

NSURL *fileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"your video" ofType:@"mp4"]]; 

Oder Sie können Ihre lokale Datei-URL direkt in mpmovieplayerviewcontroller verwenden

Dann MPmovieplayerview Controller-Objekt erstellen und Ihre Video-Datei verwenden, wie unten dargestellt: -

MPMoviePlayerViewController *moviePlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:fileUrl]; 
    [moviePlayerController.moviePlayer prepareToPlay]; 
    moviePlayerController.view.transform = CGAffineTransformMakeRotation(M_PI/2); 
    [self.view addSubview:moviePlayerController.view]; 

Hoffe es hilft!

+0

Nun, das Video dreht sich gerade während der Wiedergabe, er möchte, dass es sich beim Exportieren und Senden des Videos an den Server dreht. – iphonic

Verwandte Themen