【问题标题】:MPMoviePlayerController don't finish loading and don't play the streamMPMoviePlayerController 未完成加载且不播放流
【发布时间】:2013-01-15 20:50:59
【问题描述】:

我正在尝试通过 HTTP Live Streaming(使用 Adob​​e Media Server)使用 MPMoviePlayerController 播放视频。

- (void) viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self playVideo];
}

- (void) playVideo{
    NSURL *url = [NSURL URLWithString:@"http://192.168.10.27/hls-vod/test.mp4.m3u8"];
    MPMoviePlayerController *moviePlayer =
    [[MPMoviePlayerController alloc] initWithContentURL:url];
    moviePlayer.controlStyle = MPMovieControlStyleDefault;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
    [moviePlayer play];
}

播放器已正确启动,但仍在加载且未开始播放视频。 我在我的设备下的 Safari 上尝试了一些链接,它可以正常工作!

你对这个问题有什么想法吗?

【问题讨论】:

    标签: ios mpmovieplayercontroller m3u8


    【解决方案1】:
    1. 您是否在真实设备上进行过尝试?有时 MPMoviePlayerController 无法在模拟器中正常播放。

    2. 您是否一次创建多个 MPMoviePlayerController?您只能实例化一个 MPMoviePlayerController,因此如果您需要播放第二个视频,则必须销毁或重用第一个视频。

    3. m3u8 文件是播放列表,而不是视频文件,因此请查看文件并确保它指向 MPMoviePlayerController 支持的文件类型。

    另外:请注意,您正在 viewDidAppear 方法中播放视频。请注意,任何时候用户在 MPMoviePlayerController 上退出全屏时都会调用它,因此您可能希望在此处包含更多逻辑来决定是否显示它。 (除非你总是想永远展示它。)

    【讨论】:

    • 谢谢亚伦! 1:这发生在:设备和模拟器。 2:我只使用 MPMoviePlayerController 的一个实例 3:Adobe Media 服务器生成 m3u8 文件!所以我不在乎 m3u8 的内容!但我尝试播放 Adob​​e 提供的示例,并且 m3u8 文件设置正确!有人说它必须使用#EXT-X-ENDLIST,我检查了文件并添加了它!还是行不通。我说 Adob​​e 提供的 test.mp4 和示例正在与 iOS Safari 一起使用!我认为这是一个网络问题(也许)!
    • 对于 viewDidAppear:我正在构建一个演示,我必须提供给我的老板!真正的应用程序会更有条理!
    【解决方案2】:

    我找到了解决方案!我只需要在控制器的接口中声明moviePlayer,然后用playVideo方法启动它就可以了!

    【讨论】:

    • 编辑您的问题以反映您所做的答案或更改。谢谢
    【解决方案3】:

    (已修复!!!!!)

    我之前遇到过这个问题。

    问题出在静态播放器上。 尝试使用 MPMoviewPlayer 的属性

    示例代码如下所示:

    @interface YourViewController ()
    @property (nonatomic, strong) MPMoviewPlayer *mp;
    @end
    
    @implementation YourViewController
    - (void)playVideo {
        NSURL *movieURL = [NSURL URLWithString:@"http://the/url/playlist.m3u8"];
        self.mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    
        if (self.mp)
        {
            self.mp.view.frame = self.view.bounds;
            [self.view addSubview:self.mp.view];
    
            // save the movie player object
            [self.mp setFullscreen:YES];
    
            // Play the movie!
            [self.mp play];
        }
    }
    
    @end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多