avplayer在模拟器上播放视频不在设备上?

时间:2016-05-10 04:47:35

标签: ios objective-c avplayer avplayerviewcontroller

我在使用 avplayer avplayerviewcontroller

通过网址播放视频时遇到问题

它在模拟器上播放正常,但在设备上无效。 这是我一直在使用的静态IP的问题 -

https://ipaddress(111.111.11.11:443)/mc/images/wall/small.mp4

来自以下网址的相同视频在设备上正常播放

http://techslides.com/demos/sample-videos/small.mp4

我正在使用的代码 -

NSURL *url = [NSURL URLWithString:@"http://techslides.com/demos/sample-videos/small.mp4"];//@""];https://180.179.77.47:443/mc/images/wall/small.mp4
    AVAsset *videoAsset = [AVAsset assetWithURL:url];

    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:videoAsset];
    playerVideo = [AVPlayer playerWithURL:url];
    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionModeMoviePlayback error:nil];
    movieController = [[AVPlayerViewController alloc]init];
    [movieController setAllowsPictureInPicturePlayback:YES];
    movieController.player = playerVideo;
    movieController.delegate = self;
    movieController.videoGravity = AVLayerVideoGravityResizeAspectFill;

    [self presentViewController:movieController animated:YES completion:nil];

2 个答案:

答案 0 :(得分:2)

前一段时间我也遇到了同样的问题,但刚才观察到我的设备处于静音模式&因此它没有声音运行视频。

但它不应该发生。如果我运行YouTube应用&播放视频,即使设备处于静音模式也能正常工作。

我找到了答案。以下是Swift 3代码。如果您将类别设置为AVAudioSessionCategoryPlayback,并且设备处于静音模式,则应用会播放带声音的视频。

如果您将类别设置为AVAudioSessionCategoryAmbient,并且如果您在启用了静音模式的设备上运行该应用,则该应用将播放没有声音的视频。

let audioSession = AVAudioSession.sharedInstance()

do
{
   try audioSession.setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
}
catch
{
   print("AVAudioSession cannot be set")
}

答案 1 :(得分:0)

我认为您的视频和设备没有相同的网络。使用常用网络或将其放在远程位置,每个人都可以访问它。

您可以在模拟器中播放视频,因为您的系统(mac)已连接到可用视频的公共网络,但我认为您正在使用不同的网络用于移动网络。

希望这会有所帮助:)