修剪视频时如何检测视频方向?

     2023-03-16     244

关键词:

【中文标题】修剪视频时如何检测视频方向?【英文标题】:How to detect video orientation when we are triming a video? 【发布时间】:2014-07-08 13:04:00 【问题描述】:

当我以横向模式录制视频时,我第二次遇到错误的视频方向。对于第一次记录,我在 didFinishMediaWithInfo 中获得了正确的视频方向

现在。我正在使用以下代码来检测视频方向。

 AVAsset *firstAsset = [AVAsset assetWithURL:videoUrl];
    AVAssetTrack *FirstAssetTrack = [[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

        UIImageOrientation FirstAssetOrientation_  = UIImageOrientationUp;

        BOOL  isFirstAssetPortrait_  = NO;

        CGAffineTransform firstTransform = [FirstAssetTrack preferredTransform];

        if(firstTransform.a == 0 && firstTransform.b == 1.0 && firstTransform.c == -1.0 && firstTransform.d == 0)
        
            FirstAssetOrientation_= UIImageOrientationRight; isFirstAssetPortrait_ = YES;
        
        if(firstTransform.a == 0 && firstTransform.b == -1.0 && firstTransform.c == 1.0 && firstTransform.d == 0)
        
            FirstAssetOrientation_ =  UIImageOrientationLeft; isFirstAssetPortrait_ = YES;
        
        if(firstTransform.a == 1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == 1.0)
        
            FirstAssetOrientation_ =  UIImageOrientationUp;
        
        if(firstTransform.a == -1.0 && firstTransform.b == 0 && firstTransform.c == 0 && firstTransform.d == -1.0)
        
            FirstAssetOrientation_ = UIImageOrientationDown;
        

 if(isFirstAssetPortrait_)
    
        NSLog(@"Portrait mode");
     
else
        NSLog(@"Landscape mode");


上面的代码给出了正确的方向,如果首先记录纵向模式。然后录制横向模式。如果用户再次以横向模式录制视频。那么它会给出错误的视频方向并使纵向 BOOL 是。

如果视频以横向模式录制并使用 AVAssetExportSession 修剪。然后修剪的视频在 MPMoviePlayer 中以错误的方向播放。如何解决这个问题?

请指导我。

【问题讨论】:

【参考方案1】:
AVURLAsset* movieAsset = [AVURLAsset URLAssetWithURL: movieFileURL options: nil];
NSArray *tracks = [movieAsset tracksWithMediaType:AVMediaTypeVideo];

CGSize videoSize = CGSizeZero;
if ([tracks count] != 0)

    AVAssetTrack *videoTrack = [tracks objectAtIndex:0];
    videoSize = videoTrack.naturalSize;

    CGRect videoRect = CGRectMake(0.0, 0.0, videoSize.width, videoSize.height);
    videoRect = CGRectApplyAffineTransform(videoRect, videoTrack.preferredTransform);

    if (videoRect.size.height > videoRect.size.width)
    
        NSLog(@"Portrait mode");
    
    else if (videoRect.size.height < videoRect.size.width)
    
        NSLog(@"Landscape mode");
    
    else
    
        NSLog(@"Square mode");
    

【讨论】:

这很有帮助。谢谢! 好的。但是方形视频方向呢?

AVAssetExportSession - 如何从视频持续时间中修剪毫秒

】AVAssetExportSession-如何从视频持续时间中修剪毫秒【英文标题】:AVAssetExportSession-howtotrimmillisecondfromvideoduration【发布时间】:2021-01-1718:15:08【问题描述】:使用AVAssetExportSession时如何从videoUrl中修剪毫秒数?我正在使用下面的代... 查看详情

uiimagepicker 中的视频修剪

】uiimagepicker中的视频修剪【英文标题】:videotrimminginuiimagepicker【发布时间】:2010-11-0911:26:36【问题描述】:当我使用照片库源类型时,我能够修剪视频。但是当我使用相机源类型时,修剪后的视频似乎被保存了。但是当我播放... 查看详情

视频播放时如何设置片段方向横向?

】视频播放时如何设置片段方向横向?【英文标题】:Howtosetfragmentorientationlandscapewhenvideoplayed?【发布时间】:2020-12-1506:11:52【问题描述】:我创建了一个视频播放器,当我播放视频播放器片段时会自动关闭。我在oncreate方法中设... 查看详情

如何使用 iOS SDK 修剪视频文件并转换为 15 秒视频?

】如何使用iOSSDK修剪视频文件并转换为15秒视频?【英文标题】:Howtotrimthevideofileandconvertto15secondsvideowithiOSSDK?【发布时间】:2013-11-2713:59:50【问题描述】:我想修剪视频文件。我只想从画廊中挑选视频并将其转换为15秒视频。如... 查看详情

如何让视频在方向更改时自动播放?

】如何让视频在方向更改时自动播放?【英文标题】:HowdoIgetavideotoPlayautomaticallyonorientationchange?【发布时间】:2012-06-1414:31:52【问题描述】:我正在开发一个移动网站,但有一件事我不能做。我认为这很简单,但我对此很陌生。... 查看详情

从 PHAsset 获取视频时如何检测视频是不是为横向/纵向?

】从PHAsset获取视频时如何检测视频是不是为横向/纵向?【英文标题】:HowtodetectifvideoisLandscape/portraitwhenfetchedfromPHAsset?从PHAsset获取视频时如何检测视频是否为横向/纵向?【发布时间】:2016-06-0215:47:58【问题描述】:我正在从PHAs... 查看详情

AVCaptureMovieFileOutput -- 在写入时修剪文件

】AVCaptureMovieFileOutput--在写入时修剪文件【英文标题】:AVCaptureMovieFileOutput--trimmingthefilewhilewriting【发布时间】:2011-08-2319:02:25【问题描述】:我正在使用AVCaptureMovieFileOutput录制视频。但是,我不想在整个录制时间内保留捕获的... 查看详情

使用多个 AVPlayer 时如何检测哪个视频结束了?

】使用多个AVPlayer时如何检测哪个视频结束了?【英文标题】:HowtodetectwhichvideoendedwhenusingmultipleAVPlayers?【发布时间】:2019-11-0912:55:52【问题描述】:我在屏幕上并排播放两个视频,所以我有两个AVPlayer实例。我正在使用工作正常... 查看详情

修剪后无法在相机胶卷中显示视频

】修剪后无法在相机胶卷中显示视频【英文标题】:Unabletoshowvideoincamerarollaftertrimming【发布时间】:2017-06-2610:29:10【问题描述】:我正在开发具有修剪功能的视频播放器。我为此使用ABVideoRangeSlider。每当我尝试修剪和保存视频时... 查看详情

如何在视频python中检测到对象(人)时获取时间

】如何在视频python中检测到对象(人)时获取时间【英文标题】:Howtogettimewhenobject(person)detectedinvideopython【发布时间】:2020-11-0910:09:35【问题描述】:我即将使用python构建视频分析。我能够使用张量流检测视频中的人。我可以检... 查看详情

像whatsapp一样修剪视频

】像whatsapp一样修剪视频【英文标题】:TrimvideoLikewhatsapp【发布时间】:2014-04-0700:00:18【问题描述】:我在whatsappmessenger中看到了独特的功能。其中在发送视频应用程序之前允许用户选择帧,并且用户只能将那些选定的帧作为视... 查看详情

iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?

...MoviePlayerController中将设备方向更改为横向时如何全屏播放视频?【英文标题】:iOS:HowtoFullscreenvideowhenchangedeviceorientationtoLandscapeinMPMoviePlayerController?【发布时间】:2014-11-0714:25:39【问题描述】:我正在使用MPMoviePlayerController开发一... 查看详情

如何将 MediaRecorder 中的视频方向更改为纵向

】如何将MediaRecorder中的视频方向更改为纵向【英文标题】:howtochangevideoorientationinMediaRecordertoportrait【发布时间】:2010-10-1016:12:55【问题描述】:当我通过MediaRecorder录制视频时,它总是以横向模式录制,无论实际设备方向如何。... 查看详情

在 swift 中,如何在 AVPlayerViewController 中播放视频时检测触摸

】在swift中,如何在AVPlayerViewController中播放视频时检测触摸【英文标题】:Inswift,howtodetecttouchwhileplayingvideoinAVPlayerViewController【发布时间】:2016-10-0523:06:18【问题描述】:我以编程方式将AVPlayerViewController添加到UIViewController。当... 查看详情

如何在没有 UIWebView 的情况下播放 youtube 视频或在 youtube 视频开始使用 webview 播放时检测视频播放器?

】如何在没有UIWebView的情况下播放youtube视频或在youtube视频开始使用webview播放时检测视频播放器?【英文标题】:HowtoplayyoutubevideowithoutUIWebViewordetectvideoplayerwhenyoutubevideostartplayingusingwebview?【发布时间】:2012-11-2201:02:48【问题描... 查看详情

即使设备已锁定方向,如何进行方向检测

...变化不过,我见过可以感知方向变化并改变其控制方向的视频拍摄应用(UIImagePickerController)。我 查看详情

Ios:如何避免在捕获过程中改变视频方向?

】Ios:如何避免在捕获过程中改变视频方向?【英文标题】:Ios:howtoavoidvideoorientationchangeduringcapture?【发布时间】:2019-06-2921:46:18【问题描述】:我有一个仅支持纵向的iOS应用。旋转设备时,由RTCCameraVideoCapturer(WebRTC)捕获的视频... 查看详情

不容错过的mac视频修剪技巧:mac版joyosharemediacutter入门指南

用于Mac的JoyoshareMediaCutter是最专业的视频修剪器之一,它可以根据您自己的需要剪切和合并视频/音频。此外,由于它具有多种输出格式,因此在许多便携式设备上播放视频/音频也很有用。用JoyoshareMediaCutter来进行视频的修剪和编... 查看详情