2015-04-27 5 views
0

Я использую MPMoviePlayer для отображения видео с внешнего URL-адреса на моем iPhone-приложении, однако при запуске приложения черный экран - это все, что отображается. Вот URL Я использую:Черный экран при попытке использовать MPMoviePlayer

2015-04-27 00:11:29.655 Floadt[21069:2598414] https://scontent.cdninstagram.com/hphotos-xaf1/t50.2886-16/11179443_819874424728492_389701720_n.mp4 

Вот мой код, чтобы попытаться настройки MPMoviePlayer:

if (entry[@"videos"] != nil) { 
    NSLog(@"There is a Video: %@", entry[@"videos"]); 
    NSString *urlString = entry[@"videos"][@"standard_resolution"][@"url"]; 
    NSLog(urlString); 
    NSURL *url = [NSURL URLWithString:urlString]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: url]; 
    [player prepareToPlay]; 
    [player.view setFrame: CGRectMake(10, 65, 299, 299)]; 
    [cell.contentView addSubview: player.view]; 
    player.shouldAutoplay = YES; 
    [player play]; 
} 

ответ

0

Вы должны сохранить свой экземпляр MPMoviePlayerController то есть как свойство или instance переменной. Ссылка на проигрывателя проиграна, если вы не сохраните.

0

Когда мы пытаемся загрузить видео с URL-адреса, на нем будет отображаться только пустой экран. MPMoviePlayerController займет некоторое время, чтобы загрузить видео с url.So мы можем отображать первый кадр видео до загрузки видео. Для этого необходимо импортировать две структуры.

1.AVFoundation

2.AssetsLibrary

Используя эти два можно отобразить первый кадр видео в UIImageView следующим образом:

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 


url=[NSURL URLWithString:@"https://scontent.cdninstagram.com/hphotos-xaf1/t50.2886-16/11179443_819874424728492_389701720_n.mp4"]; 

AVAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil]; 

if ([[avAsset tracksWithMediaType:AVMediaTypeVideo] count] > 0) 
{ 
    AVAssetImageGenerator *imageGenerator =[AVAssetImageGenerator assetImageGeneratorWithAsset:avAsset]; 
    Float64 durationSeconds = CMTimeGetSeconds([avAsset duration]); 
    CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 
    NSError *error; 
    CMTime actualTime; 

    CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:kCMTimeZero actualTime:&actualTime error:&error]; 

    if (halfWayImage != NULL) 
    { 

     NSString *actualTimeString = (NSString *)CFBridgingRelease(CMTimeCopyDescription(NULL, actualTime)); 
     NSString *requestedTimeString = (NSString *)CFBridgingRelease(CMTimeCopyDescription(NULL, midpoint)); 
     NSLog(@"Got halfWayImage: Asked for %@, got %@", requestedTimeString, actualTimeString); 

     UIImage *img=[UIImage imageWithCGImage:halfWayImage]; 
     _imgVw.image=img; 

    } 

} 


UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapped)]; 
[_imgVw addGestureRecognizer:tap]; 




} 


-(void)tapped 
{ 
MPMoviePlayerController *movPlayer=[[MPMoviePlayerController alloc] init]; 
[movPlayer setContentURL:url]; 
[movPlayer setMovieSourceType:MPMovieSourceTypeFile]; 
[movPlayer.view setFrame:CGRectMake(0, 0, _imgVw.frame.size.width, 250)]; 
[movPlayer prepareToPlay]; 
movPlayer.controlStyle = MPMovieControlStyleNone; 
movPlayer.fullscreen = NO; 
movPlayer.shouldAutoplay=YES; 
[movPlayer setScalingMode:MPMovieScalingModeAspectFill]; 
[_imgVw addSubview:movPlayer.view]; 

[movPlayer play]; 


} 

Здесь я беру UIImageView вид для воспроизведения видео , В viewDidLoad я загружаю 1-й кадр и давая жест привязки к UIImageView. Когда я постучал ImageView, я воспроизвожу видео.

Смежные вопросы