كيفية إخراج الفيديو على شاشة خارجية مع عناصر تحكم على iPad؟

StackOverflow https://stackoverflow.com/questions/4621293

  •  30-09-2019
  •  | 
  •  

سؤال

حاليًا عند إخراج الفيديو إلى شاشة خارجية من جهاز iPad ، فإنه ينقل عناصر التحكم وجميعها إلى الشاشة الخارجية. هذا ليس مفيدًا لأنه لا يمكنك التحكم في الفيلم أثناء وجود عناصر التحكم على الشاشة الخارجية. فيما يلي بعض قصاصات التعليمات البرمجية من تطبيقنا.

هذا هو رمز إعداد الشاشة: (طريقة تسمى setupexternalscreen)

if ([[UIScreen screens] count] > 1) {
    external_disp = [[UIScreen screens] objectAtIndex:1];
    [external_disp setCurrentMode:[[external_disp availableModes] objectAtIndex:0]];
    self.external_window = [[UIWindow alloc] init];
    external_window.screen = external_disp;
    [external_window makeKeyAndVisible];
}

هذا هو إنشاء mpmovieplayerviewController:

[self setupExternalScreen]; //Calls the code above
MPMoviePlayerViewController *mpv = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:mpv];

لدي أيضًا mpmovieplayercontroller وقد جربت هذا أيضًا:

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerDidFinish:) name:MPMoviePlayerDidExitFullscreenNotification object:[self moviePlayer]];
[self.view addSubview:moviePlayer.view];

if (!external_window) {
    [self setupExternalScreen];
}
if (external_window) {
    [external_window addSubview:moviePlayer.view];
} 
[moviePlayer setControlStyle:MPMovieControlStyleDefault];

[moviePlayer setFullscreen:YES];// animated:NO];

if (![moviePlayer isPreparedToPlay]) [moviePlayer prepareToPlay];
[moviePlayer play];

حاليًا مع التنفيذ الثاني ، إضافة إلى كل من self.view و external_window ، سيعرض الفيديو على الشاشة الخارجية (مع عناصر تحكم) ويبدو أن شاشة iPad لا شيء يحدث بخلاف شريط الحالة الذي يختفي عندما تتلاشى أدوات التحكم في الفيلم . لقد حاولت أيضًا إضافة moviePlayer.view إلى Self.view فقط وسيخفق الأمر شيئًا ما لتأثير رسالة "إظهار المحتوى على التلفزيون" قبل أن يتابع تشغيل الفيلم على iPad. يتم إطلاق الفيديو حاليًا عن طريق الضغط على زر. باستخدام Simulator وخيار TV Out لأنه من الأسهل تصحيح الأخطاء. الإصدار Xcode 3.2.5 وأحدث إصدار من iOS على جهاز فعلي. كيف يمكن إصلاح هذا؟ يجب أن يتصرف مثل تطبيق YouTube على iPad.

هل كانت مفيدة؟

المحلول

الطريقة السهلة للقيام بذلك هي مع uiwebview. سيقوم تلقائيًا باكتشاف الشاشة الخارجية ، وعرض الفيديو هناك ، مع الحفاظ على عناصر التحكم في التشغيل القياسية على الجهاز.

إليك بعض رمز النماذج:

- (void)embedInternalVideo:(CGRect)frame {
    NSBundle *bundle = [NSBundle mainBundle];
    NSString* html = @"<video src=\"sample_iPod.m4v\" width=640 height-480 controls autoplay></video>";
    if (videoView == nil) {  
        videoView = [[UIWebView alloc] initWithFrame:frame];  
        [self.view addSubview:videoView];  
    }  
    [videoView loadHTMLString:html baseURL:[bundle resourceURL]];      
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top