ניגון סרט מהקוד

ניגון סרט מהקוד

היי, אני מעוניין לנגן סרט מהקוד (MPMoviePlayerController) אבל אני רוצה שיראו רק את הסרט (בלי הכפתורים של Play, Pause, וכו'..) והסרט לא יהיה מסך מלא. תודה.
 
משהו נוסף..

אין לי אפשרות להשתמש ב-property fullscreen כי ה-OS הנדרש הוא 3.2 ואני רוצה לתפוס לפחות את רוב השוק (OS 3.0 ומעלה).
 
ועוד משהו..

יש ל-MPMoviePlayerController דוגמת קוד שעובדת סבבה אבל הבעיה היא שרואים שם הבזק עם תחילת הסרט של הכפתורים (Play וכו'..) והסרט הוא מסך מלא.
 

guyiphone

New member
בקשות בקשות ...

אני מניח שיש לך את הקוד הבא :
NSBundle *bundle = [NSBundle mainBundle]; NSString *moviePath = [bundle pathForResource:mad:"Movie" ofType:mad:"m4v"]; NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain]; MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; theMovie.scalingMode = MPMovieScalingModeAspectFill; [theMovie play];​
ואם אין לך את הקוד הזה תוכל להשתמש בו רק שלא באותו ה UIView שבו אתה צריך להציג את הסרט, זה פשוט לא אפשרי. לצורך העניין תמיד תוכל לייצר מנגנון סרטים משל עצמך שיריץ קבוצת תמונות בסינכרון של 30FPS ושמע ברקע זה עובד לגדולים ביותר. אני חייב לציין שאתה מכוון לאוכלוסיית מכשירים הולכת ונעלמת, אין צורך "להיצמד לקיר" בגלל שאתה מניח שיש מספר מכשירים חסרי שדרוג. אך אם בכ"ז תרצה לממש את עניין הסרט ללא פאנל הבקרה תוכל להיעזר בקוד הבא:
[[NSNotificationCenter defaultCenter] addObserver:self selector:mad:selector(keyWindowChanged:) name:UIWindowDidBecomeKeyNotification object:nil];​
או שתנסה את הקוד הבא ליצירת האובייקט MPMoviePlayerController :
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:yourString]]; [[NSNotificationCenter defaultCenter] addObserver:self selector:mad:selector(handleKeyWindowChanged:) name:UIWindowDidBecomeKeyNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:mad:selector(moviePlayBackDidFinish:) name:mad:"MPMoviePlayerPlaybackDidFinishNotification" object:player]; [player play];​
והוסף את הקוד הבא ל View שלך ...
-(void)handleKeyWindowChanged:(NSNotification*)note { NSArray *windows = [[UIApplication sharedApplication] windows]; if([windows count] > 2) { UIWindow *mpw = [windows objectAtIndex:1]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.text = @"Hi, I'm on your MPMoviePlayerController"; label.transform = CGAffineTransformMakeRotation(M_PI/2.0); [label setBackgroundColor:[UIColor redColor]]; label.frame = CGRectMake(0,0,20,480); [mpw addSubview:label]; } }​
לא היה לי זמן לבדוק את קטעי הקוד הנ"ל אז אשמח שתדווח אם עבד לך ... שיהיה בהצלחה !
 
זה לא עובד..

זה לא מוריד את פאנל הבקרה מה גם שאני לא כל כך מבין איך הקוד אמור להוריד אותו. אני רוצה גם לעשות שלא יהיה מסך מלא.
 

guyiphone

New member
בכוונה שלחתי לך את הקוד ...

דבר ראשון תודה על העדכון ! חשבתי שאולי תעלה על זה לבד :) תוכל, להקרין את הסרט על פריים בגודל מסויים וחלון הסרט בתוכו יהיה קטן יותר (קטן עד כדי הקרנה מעל לפס הבקרה). כך תוכל "להלביש" פס שחור/פרסום/כיתוב על המקום בו מופיע הפאנל... פתרון מגושם ולא יעיל אולי אפילו מכוער ... אבל עובד. החיסרון העיקרי הוא שאינך מנצל את כל גודל המסך, דבר שיכול להיות בעייתי לאור הבקשה הראשונה שלך. אשלח לך עוד קטעי קוד נוספים במידה ואתקל במשהו רלוונטי. בהצלחה !
 
הבנתי אותך והאמת שאת זה ספציפית ניסיתי אתמול

שמתי מכל הכיוונים פסים עבים מאוד שחורים מכל הצדדים כך שהמסך צפייה של הסרט עבר מ-320x480 ל-220x280 ועדיין ההבזק (שמופיע לשנייה) של הכפתורים היה מעליהם.
 

guyiphone

New member
אולי יעזור ...

ואם תגדיל את ה- View יותר מגבולות המסך ... זה עדיין מציג לך את הסרגלים ? אם יעלים ... אתה על הסוס :)
 
יצאתי חומוס...

[player setMovieControlMode:MPMovieControlModeHidden]; חשבתי שזה לא עושה את העבודה אבל בחוכמתי הרבה שמתי את הפקודה הזו לפני שהם הגדירו את ה-MovieSetting, בקיצור זה עובד. הבעיה היא עדיין עם המסך המלא, אני יכול להגביל את המסך המלא ע"י זה שאני אשים עליו Layers, אני מעוניין בפיתרון אחר.. בכל מקרה.. תודה על הכל גיא!
 
אגב..

בדרך שאני אשים עליו את ה-Layers אני גם צריך להכין מראש וידאו שאני אוכל להגביל אותו.. בקיצור זה קצת מעפן..
 
למעלה