Потоковое видео по запросу с IIS7 на устройства iOS - PullRequest
0 голосов
/ 12 ноября 2010

Я начал со статьи Скотта Хансельмана о том, как транслировать видео на iPhone с помощью IIS 7 Smooth Streaming и Transform Manager.Фантастическая статья и все работает на 100% как рекламируется.

http://www.hanselman.com/blog/CommentView.aspx?guid=86968CD5-FEEB-47F2-B02E-1EB4FA556379

Я могу использовать браузер на iPad, зайти на сайт моей компании и посмотреть воспроизведение видео в браузере, встроенное в HTML-страницу с использованием следующего HTML-кода.

<html>
    <head>
        <title>iPhone page</title>
    </head>
    <body>
        <h1>Encoded stream</h1>
        <video width="640"
               height="480"
               src="http://name-of-video-here.ism/manifest(format=m3u8-aapl).m3u8"
               autoplay="true"
               controls="true" >Live</video>
     </body>
</html> 

Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь взять тот же URL-адрес "http://name -of-video-here.ism / manifest (format = m3u8-aapl) .m3u8" и попробоватьиграть в нее с помощью «CustomMPMovie» или «MPMoviePlayerController» из пользовательского приложения, работающего на том же iPad, это не работает.

Objective-C, который воспроизводит видео

    NSURL *theURL = [NSURL URLWithString:[item url]];

    if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 3.2) 
    {
        NSLog(@"> 3.2");
        CustomMPMovie *mp = [[CustomMPMovie alloc] initWithContentURL:theURL];

        if (mp)
        {
            mp.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
            [self.navigationController presentMoviePlayerViewControllerAnimated:mp];
            [mp shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
            [mp.moviePlayer play];
            [mp release];
        }
    }
    else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) 
    {
        NSLog(@"< 3.2");

        MPMoviePlayerController* theMovie = [[MPMoviePlayerController alloc] initWithContentURL: theURL];

        theMovie.scalingMode = MPMovieScalingModeAspectFill;

        // 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];
    }

Может кто-нибудь предложить объяснение или возможное решение?

1 Ответ

1 голос
/ 21 ноября 2010

Как оказалось, это ошибка разработчика дампа на 100%.Тип источника фильма должен был переключиться на «MPMovieSourceTypeStreaming», и после того, как мы это сделали, все снова заработало.Менеджер IIS Smooth Streaming и Transform работает на производстве, и мы очень довольны результатом.Встроенная поддержка Silverlight тоже потрясающая.

...