يلعب الفيديو ولكن لا صورة - فقط الصوت؟
-
02-10-2019 - |
سؤال
يحرر: إذا صادفت هذا الأمر وترغب في معرفة كيف قمت بحله في النهاية ، فقد تخليت عن هذا الرمز أدناه في النهاية وفعلت ذلك:
-(void)playMovieAtURL:(NSURL*)theURL{
mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:theURL];
[self presentMoviePlayerViewControllerAnimated:mediaPlayer];
mediaPlayer.view.backgroundColor = [UIColor blackColor];
}
المنشور الأصلي:
هذا هو الكود الخاص بي - لقد أخرجته من موقع Apple ، لذا لا ينبغي أن يكون مشكلة.
يتم تشغيله في uitableViewController على طريقة deSelectRowatIndexPath.
عند تحديد الصف ، يبدأ الفيديو في التشغيل - يخرج الصوت على الأقل - ولكن لا توجد صورة. أي فكرة لماذا يحدث هذا؟ لقد أدرجت الإطار.
الفيديو هو واحد خارج موقع Apple (فيديو FaceTime) الذي استخدمته للاختبار.
-(void)playMovieAtURL:(NSURL*)theURL{
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleNone;
// Register for the playback finished notification
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(myMovieFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
// Movie playback is asynchronous, so this method returns immediately.
[theMovie play];
}
المحلول
تم تغيير سلوك mpmoviePlayerController في OS 3.2 - تحتاج إلى إضافة عرض مشغل الفيلم بشكل صريح إلى التسلسل الهرمي الخاص بك الآن - باستخدام شيء مثل:
[aView addSubview:moviePlayerController.view];
moviePlayerController.view.frame = aView.frame;
بدلاً من ذلك ، يمكنك استخدام mpmovieplayerviewController (جديد في 3.2) لإدارة العرض.
إذا كنت تستهدف أجهزة ما قبل وبعد 3.2 (على سبيل المثال IOS 3.1 و 4.0) ، فستحتاج إلى بعض التعليمات البرمجية الشرطية لتحديد نظام التشغيل الذي يعمل عليه الرمز والتعامل معه وفقًا لذلك. لقد استخدمت هذا في المشاريع السابقة:
if ([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)]) {
// Running on OS 3.2 or above
// Code to add to a view here...
}