天道酬勤,学无止境

如何以人像模式播放电影(how to Play movie in portrait mode)

问题

我可以在人像模式下播放电影吗?

回答1

您可以将影片加载到UIWebView中,而不必显式使用MPMoviePlayerController。 这将使用通常的电影播放器​​控件以纵向模式启动电影。 鸣谢于此博客文章。

这是一个代码片段:

self.webView = [[[UIWebView alloc] initWithFrame: CGRectMake(0.0, 0.0, 1.0, 1.0)] autorelease];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL: urlToMovie];
[self.webView loadRequest: request];
[request release];

在这里,webView实例被初始化为1x1像素元素,并且未添加为子视图。 当它加载电影的URL请求时,它将自动填满整个屏幕,您将以纵向模式观看电影。

注意:似乎需要iPhone OS 3.1(或更高版本)才能在UIWebView中播放视频。

回答2

在视频编辑软件中将视频旋转90°。

回答3

这已经被询问过,并在这里解决:

MPMoviePlayerController在人像模式下?

警告它使用私人API

回答4

尝试在您的代码中实现这一点。

@interface MPMoviePlayerController (extend)
-(void)setOrientation:(UIDeviceOrientation)orientation animated:(BOOL)value;
@end

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
if ([moviePlayer respondsToSelector:@selector(setOrientation:animated:)])
    [moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO];
if (moviePlayer)
{
    [self.moviePlayer play];
}
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • MPMoviePlayerController全屏旋转,而父级View Controller仅支持纵向方向(MPMoviePlayerController rotating in full screen while the parent View Controller only supports portrait orientation)
    问题 这个问题只是我问题的一部分。 我正在为现有应用程序实现iOS6旋转和方向支持。 所以我有一个ViewController,它包含一个嵌入在ViewController视图中的MPMoviePlayerController(我的应用程序需要它)。 用户可以播放视频并在嵌入式视图中观看,也可以使用默认的播放器控件单击全屏按钮,然后播放器进入全屏模式。 现在,我已将视图控制器限制为仅使用iOS6提供的新旋转API支持纵向方向。 // New Autorotation support. - (BOOL)shouldAutorotate; { return NO; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } 这工作得很好。 ViewController仅支持人像,并且用户可以在嵌入式视图中播放电影。 现在,当用户进入全屏模式时,问题就来了。 在全屏模式下,当我旋转模拟器/设备时,电影将继续旋转。 当我在全屏模式下播放电影时,在shouldAutorotate和supportedInterfaceOrientations具有断点的情况下旋转设备时,这两种方法仍然会分别返回NO和UIInterfaceOrientationMaskPortrait
  • 如何在Android中禁用横向模式?(How to Disable landscape mode in Android?)
    问题 如何在Android应用程序中为某些视图禁用横向模式? 回答1 将android:screenOrientation="portrait"到AndroidManifest.xml中的活动中。 例如: <activity android:name=".SomeActivity" android:label="@string/app_name" android:screenOrientation="portrait" /> 编辑:由于这已成为一个非常受欢迎的答案,我感到非常内as,因为强行肖像很少能解决其经常遇到的问题。 强制肖像的主要警告: 这并不能免除您必须考虑活动生命周期事件或正确保存/恢复状态的麻烦。 除了应用程序轮换之外,还有很多其他事情可以触发活动破坏/重新创建,包括不可避免的事情,例如多任务处理。 没有捷径可走。 学习使用包和retainInstance片段。 请记住,与相当统一的iPhone体验不同,在某些设备中肖像不是很受欢迎的方向。 当用户使用带有Nvidia Shield的硬件键盘或游戏垫的设备,Chromebook,可折叠的设备或Samsung DeX上的设备时,强加肖像可能会限制您的应用程序使用体验,或给用户带来巨大的使用麻烦。 如果您的应用程序没有强大的UX论据,而这会导致在支持其他方向时产生负面体验,则您可能不应该强制采用横向模式。 我在谈论诸如
  • Android:允许平板电脑使用人像和风景,但在手机上强制使用人像吗?(Android: allow portrait and landscape for tablets, but force portrait on phone?)
    问题 我希望平板电脑能够以纵向和横向(sw600dp或更高)显示,但手机仅限于纵向显示。 我找不到任何有条件地选择方向的方法。 有什么建议? 回答1 这是使用资源和大小限定符的好方法。 将此bool资源作为bools.xml或其他内容(在这里文件名无关紧要)放入res / values中: <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="portrait_only">true</bool> </resources> 将其放在res / values-sw600dp和res / values-xlarge中: <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="portrait_only">false</bool> </resources> 请参阅此补充答案,以获取在Android Studio中添加这些目录和文件的帮助。 然后,在“活动”的onCreate方法中,您可以执行以下操作: if(getResources().getBoolean(R.bool.portrait_only)){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
  • iPhone SDK:如何在视图中播放视频? 而不是全屏(iPhone SDK:How do you play video inside a view? Rather than fullscreen)
    问题 我试图在UIView播放视频,所以第一步是为该视图添加一个类,并使用以下代码开始在其中播放电影: - (IBAction)movie:(id)sender{ NSBundle *bundle = [NSBundle mainBundle]; NSString *moviePath = [bundle pathForResource:@"Movie" ofType:@"m4v"]; NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain]; MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; theMovie.scalingMode = MPMovieScalingModeAspectFill; [theMovie play]; } 但是,在自己的类中使用此方法时,这只会使应用程序崩溃,但在其他地方很好。 有人知道如何在视图内播放视频吗? 并避免将其全屏显示? 回答1 从3.2 SDK开始,您可以访问MPMoviePlayerController的view属性,修改其框架并将其添加到视图层次结构中。 MPMoviePlayerController *player = [
  • Chrome HTML5视频横向翻转人像(Chrome HTML5 Video Flipping Portrait Sideways)
    问题 我正在建立一个网站来显示从iPhone录制的视频。 视频以288x352的纵向显示。 Safari可以很好地显示此视频,但在Chrome中,该视频会切换为横向模式352x288。 我的头偏斜了。 :-( 这是相关页面:http://aaron.tiberiuslog.com/B4F4CC56-172E-4D84-9656-BE04E6E475A0 如果有帮助,这里是视频本身。 http://tiberiuslog.s3.amazonaws.com/output_D7DB78A9-8019-4D09-9B22-EB8738F844BB-2380-000001530B13BE09.mov 我尝试使用原始HTML5标记,现在添加了VideoJS,尽管此问题没有影响。 更新:我现在对我的问题有一半的答案。 似乎需要在设备上设置一些编码选项,以确保在所有观看者(包括VLC和Chrome(例如))上都遵循正确的方向。 这个问题没有答案。因此,我创建了一个新问题。 希望我们能为这个问题提供适当的解决方案! 更新2 :我已经找到了答案! 我发布的另一个问题使我想到了在iOS上正确编码视频的技术。 回答1 请参阅videojs支持论坛上的这篇文章,这表明它可能与iPhone编码视频的方式有关,因为它包含QuickTime可以读取但其他播放器无法读取的信息。
  • 在Android中强制相机始终以人像模式打开[重复](Force a camera to always open in portrait mode in android [duplicate])
    问题 这个问题已经在这里有了答案: Android在SurfaceView上使用人像摄影机拍摄的照片(6个答案) 5年前关闭。 是否可以仅在人像模式下以android模式打开“相机意图”,也就是说,即使用户翻转了设备,相机仍将处于人像模式, 我尝试了以下答案:强制人像模式,但没有用,谢谢 回答1 试试吧 - private void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(cameraId, info); int rotation = activity.getWindowManager().getDefaultDisplay() .getRotation(); int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees =
  • 如何在iOS 8中强制视图控制器定向?(How to force view controller orientation in iOS 8?)
    问题 在iOS 8之前,我们将以下代码与supportedInterfaceOrientations和shouldAutoRotate委托方法结合使用,以将应用程序方向强制为任何特定方向。 我使用下面的代码片段以编程方式将应用程序旋转到所需的方向。 首先,我要更改状态栏的方向。 然后,仅显示并立即取消模式视图即可将视图旋转到所需的方向。 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; UIViewController *c = [[UIViewController alloc]init]; [self presentViewController:vc animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil]; 但这在iOS 8中失败了。此外,我在堆栈溢出中看到了一些答案,有人建议我们应该从iOS 8开始始终避免这种方法。 更具体地说,我的应用程序是通用类型的应用程序。 共有三个控制器。 First View控制器-它应支持iPad中的所有方向,并且仅支持iPhone中的纵向(按下主页按钮)。
  • 强制“人像”定向模式(Force “portrait” orientation mode)
    问题 我正在尝试为我的应用程序强制使用“人像”模式,因为我的应用程序绝对不是为“横向”模式设计的。 在阅读了一些论坛之后,我在清单文件中添加了以下几行: <application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name" android:screenOrientation="portrait"> 但这不适用于我的设备(HTC Desire)。 它从“肖像”或“风景”切换,而忽略清单文件中的行。 在更多论坛上阅读后,我尝试将其添加到清单文件中: <application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name" android:configChanges="orientation" android:screenOrientation="portrait"> 而这个功能在我的活动班级: public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig)
  • 如何仅在Swift中将一个视图控制器的方向锁定为纵向模式(How to lock orientation of one view controller to portrait mode only in Swift)
    问题 由于我的应用程序支持所有方向。 我只想将肖像模式锁定到特定的UIViewController。 例如,假设它是“选项卡式应用程序”,并且当SignIn View模态显示时,无论用户如何旋转设备或当前设备的方向如何,我都只希望SignIn View进入纵向模式 回答1 当您具有复杂的视图层次结构时,事情会变得很混乱,例如具有多个导航控制器和/或选项卡视图控制器。 此实现将其置于各个视图控制器上,以便在它们希望锁定方向时进行设置,而不是依赖于App Delegate通过遍历子视图来找到它们。 斯威夫特3,4,5 在AppDelegate中: /// set orientations you want to be allowed in this property by default var orientationLock = UIInterfaceOrientationMask.all func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return self.orientationLock } 在其他一些全局struct或helper类中
  • 用 Python、nginx 搭建在线家庭影院
    我喜欢看电影,尤其是好的电影,我会看上三四遍,仔细感受电影带给我的另一种人生体验,不同时期,不同年龄段看相同的电影,体验也会不一样。比如你上学时期看周星驰的电影可能就仅看到了笑点,工作之年之后再看,也许你会觉得这蕴含着深刻的人生哲理。以前下载的电影,放的到处都是,手机上,U 盘里,平板,台式机,笔记本上都保存有下载过的电影,而且有时候平板或手机空间不够,就不得不删除珍藏已久的电影,很是可惜。当要看电影时,一时却找不到自己曾下载过的电影,于是又在网上搜索,但是随着版权越来越被重视,看视频都要会员,或者付费观看(这一点是进步的,只有这样才会有更好的作品呈现。),没有会员就要忍受非常烦人的广告,而且未必是高清资源。想想曾经下载过的电影删除了,现在看可能要收费了,很是遗憾。如果电影可以统一放在廉价的台式机硬盘上,再开启一个视频流服务器能让所有的联网设备直接在线播放就好了,这样就不用担心下载过的电影无法找到了,而且觉得好的电影可以随时推荐给家人和朋友观看。我知道 Python 是可以干这个事情的,说干就干,当天晚上就做好了一个 demo。【如果你也有个想法想实现,那么请即刻行动起来,如果超过 72 个小时还没行动,你很可能再也不会去做了】技术栈:python、django、nginx感兴趣的和我一起动手做吧。以 windows 操作系统为例,其他系统可做参考。1、下载并配置
  • 如何在Android中从JPEG创建动画GIF(开发)(How to create an animated GIF from JPEGs in Android (development))
    问题 我正在寻找一种在本机Android应用程序中创建动画GIF的简单方法。 源文件应为JPEG(来自相机或其他任何设备),输出应另存为GIF在设备上。 我不想知道如何播放动画或GIF动画文件。 明确说明:我想知道如何将单个图像逐帧放入“电影”中,然后将其另存为.gif文件。 例如,这个程序可以做到我想做的。 回答1 请参阅此解决方案。 https://github.com/nbadal/android-gif-encoder 这是此文章的Android版本。 http://www.jappit.com/blog/2008/12/04/j2me-animated-gif-encoder/ 要使用此类,下面是一个示例性的辅助方法,用于生成GIF字节数组。 请注意,这里的getBitmapArray()函数是一次返回图像适配器中所有位图文件的方法。 因此,输入是一个适配器中的所有位图文件,输出是可以写入该文件的字节数组。 public byte[] generateGIF() { ArrayList<Bitmap> bitmaps = adapter.getBitmapArray(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); AnimatedGifEncoder encoder = new
  • 相机预览处于人像模式,但是旋转了拍摄的图像(Camera preview is in portrait mode but image captured is rotated)
    问题 我正在尝试使用相机拍摄照片。 默认情况下,预览处于横向模式,我可以使用以下方式将其更改为纵向模式 setCameraDisplayOrientation(this,1, mCamera); public static void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo(cameraId, info); int rotation = activity.getWindowManager().getDefaultDisplay() .getRotation(); int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180
  • Twitter Bootstrap模态停止Youtube视频(Twitter Bootstrap Modal stop Youtube video)
    问题 我对javascript非常陌生,并尝试使用Twitter引导程序来快速启动并运行一个美观的网站。 我知道这与jquery有关,但是当我按下关闭按钮或关闭图标时,我不确定如何停止视频。 有人可以解释一下如何停止播放视频,因为即使关闭窗口,我仍然可以在后台听到它。 <!-- Button to trigger modal --> <a href="#myModal" role="button" class="btn" data-toggle="modal"><img src="img/play.png"></a> <!-- Modal --> <div id="myModal" class="modal hide fade" tabindex="-1" role=labelledby="myModalLabel" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria>×</button> <h3 id="myModalLabel">I am the header</h3> </div> <div class="modal-body"> <p><iframe width="100%" height="315" src=
  • iOS:如何使用MPMoviePlayerController(iOS: How to use MPMoviePlayerController)
    问题 我创建了一个空白项目(iOS),并将其放在我的viewDidLoad中: NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]]; [self presentMoviePlayerViewControllerAnimated:playerController]; [playerController.moviePlayer play]; 当应用启动时,我得到的只是一个白屏,日志中显示错误消息: <Error>: CGContextSaveGState: invalid context 0x0 <Error>: CGContextClipToRect: invalid context 0x0 <Error>: CGContextTranslateCTM: invalid context 0x0 <Error>: CGContextDrawShading: invalid context 0x0
  • how to Play movie in portrait mode
    Can i play movie in portrait mode?If yes than how to play?
  • Android相机正在录制视频,但倒置播放(Android Camera recording video but plays upside down)
    问题 我使用以下代码录制了一段视频,并且录制得很好,但是当播放视频时,它会倒过来播放。 我在mrec.prepare();之前尝试了设置mrec.setOrientationHint(180) mrec.prepare(); 但这没用。 有什么提示吗? import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.app.Activity; import android.hardware.Camera; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; import
  • 您可以在iPad上自动播放HTML5视频吗?(Can you autoplay HTML5 videos on the iPad?)
    问题 <video>标签的autoplay="autoplay"属性在Safari中可以正常使用。 在iPad上进行测试时,必须手动激活视频。 我认为这是一个加载问题,因此我循环检查了媒体的状态: videoPlay: function(){ var me = this; console.log('STATE: ' + $("#periscopevideo").get(0).readyState); if ($("#periscopevideo").get(0).readyState != 4){ setTimeout(function(){me.videoPlay();}, 300); } else { $("#periscopevideo").get(0).play(); } } iPad上的状态保持为0 。 在我的桌面Safari浏览器,它通过0 , 1 ,最后4 。 在iPad上,如果我手动点击“播放”箭头,则只能达到4 。 此外,通过onClick的点击调用$("#periscopevideo").get(0).play() 。 苹果在自动播放方面是否有任何限制? (顺便说一下,我正在运行iOS 5+)。 回答1 iOS 10更新 自iOS 10起,自动播放的禁令已取消-但存在一些限制(例如,如果没有音轨,则可以自动播放A)。 要查看这些限制的完整列表,请参阅官方文档
  • iOS 6流播放器com.apple.coremedia.networkbuffering错误(iOS 6 streaming player com.apple.coremedia.networkbuffering bug)
    问题 我在使我的应用程序(音乐和视频流播放器)在iOS 6模拟器上运行时遇到麻烦。 当我开始播放音乐或视频时,它崩溃,并在此线程上显示错误:com.apple.coremedia.networkbuffering 而这在日志信息: 2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay for pause 2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay 2012-09-13 17:45:09.305 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay 2012-09-13 17:45:09.307 app[32563:c07] handlePlaybackNowPlayingNotification 2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 2012-09-13 17:45:09.308 app[32563:c07]
  • 在Iphone应用程序中播放服务器中的视频文件(Playing a video file from server in an Iphone app)
    问题 基本上,我从Web服务器获得一个URL。我想在iPhone应用程序中从该URL播放电影文件。请帮忙! 我的意思是说我的电影文件存储在Web服务器上 回答1 这是从服务器或本地路径播放视频文件的常用方法。 MPMoviePlayerController *player =[[MPMoviePlayerController alloc] initWithContentURL: myURL]; [[player view] setFrame: [myView bounds]]; // frame must match parent view [myView addSubview: [player view]]; [player play]; 您可以使用html5的视频标记(前提是您使用的是UIWebView)。 - (void)viewDidLoad { [super viewDidLoad]; //to play from actual server location //[self playVideo:@"file://localhost/Users/PlayVideos/3idiots.mov" frame:CGRectMake(20, 70, 280, 250)]; //from server (http://www.example.com/video.mov)
  • Android 8.1屏幕方向问题:翻转以横屏纵向屏幕(Android 8.1 screen orientation issue: flipping to landscape a portrait screen)
    问题 除了用于播放始终为横向的视频的肖像活动之外,我都以肖像模式进行所有活动。 我发现在Android 8.1上,每次打开视频活动并将其关闭时,即使在清单上将其设置为“人像”,上一个活动也会变为横向。 有时去肖像然后去风景并停留在风景上。 有时去肖像然后去风景,最后再去肖像。 仅当从其风景中的活动返回时才发生这种情况。 有人在经历这个吗? 谢谢。 编辑 我在Google上报告了该错误:https://issuetracker.google.com/issues/69168442 编辑2 似乎在Android 9上已修复 回答1 只是在我自己的应用中遇到了这个问题。 适用于我的解决方案如下: onCreate(){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } onPause(){ if (android.os.Build.VERSION.SDK_INT >= 27) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); } } onResume(){ if (android.os.Build.VERSION.SDK_INT >= 27) {