我在Azure Media Services中托管了一个视频。我使用H264多比特率1080p编码预设对视频进行了编码(我也试过其他人)。发布流式传输后,我得到以下端点。 (我用下面的 mysite 替换了我的实际网站名称)
Smooth Streaming
http://mysite.streaming.mediaservices.windows.net/eaaa9f34-e39a-4393-a93b-14a7609ebd27/sampleVid.ism/manifest
MPEG-DASH
http://mysite.streaming.mediaservices.windows.net/eaaa9f34-e39a-4393-a93b-14a7609ebd27/sampleVid.ism/manifest(format=mpd-time-csf)
HLS(v3)
http://mysite.streaming.mediaservices.windows.net/eaaa9f34-e39a-4393-a93b-14a7609ebd27/sampleVid.ism/manifest(format=m3u8-aapl-v3)
HLS(v4)
http://mysite.streaming.mediaservices.windows.net/eaaa9f34-e39a-4393-a93b-14a7609ebd27/sampleVid.ism/manifest(format=m3u8-aapl)
我已成功使用HLS(v4)网址为Android播放视频,因此我知道该视频有效。
对于ios,我遵循了本教程。 https://developer.xamarin.com/recipes/ios/media/video_and_photos/play_a_video_using_avplayer/
我可以成功播放本地视频。我也可以按照这个苹果教程播放远程视频。 https://developer.apple.com/library/prerelease/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html
我使用的网址一定有问题,但我无法弄清楚它是什么。这是我的ViewDidLoad方法中的代码。
var myUrl = NSUrl.FromString("http://myurl.streaming.mediaservices.windows.net/eaaa9f34-e39a-4393-a93b-14a7609ebd27/sampleVid.ism/manifest(format=m3u8-aapl)");
var appleUrl = NSUrl.FromString("http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8");
_playerItem = new AVPlayerItem(myUrl);
_player = new AVPlayer(_playerItem);
_playerLayer = AVPlayerLayer.FromPlayer(_player);
_playerLayer.Frame = ProfileVideoContainerView.Frame;
ProfileVideoContainerView.Layer.AddSublayer(_playerLayer);
_player.Play();
myUrl不起作用,但是appleUrl没有。
答案 0 :(得分:1)
事实证明我只需要使用https而不是http。我以为我试过这个,但显然不是。另外,我不确定为什么appleUrl可以使用http。
答案 1 :(得分:1)
有一个iOS"功能"不允许连接到http端点,除非端点在info.plist中列为允许的不安全连接。我已经忘记了这一点,并在几天/几周前被它抓住了。我认为这个功能是用iOS9实现的,但我对此并不是100%肯定。它可能在那之前实施。