我在使用 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];
答案 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)已连接到可用视频的公共网络,但我认为您正在使用不同的网络用于移动网络。
希望这会有所帮助:)