2017-04-14 43 views
0

我想通过网址在iOS上播放视频。顺便说一句,我不想​​用AVPlayerViewController在iOS中通过网址播放视频

我使用youtube-dl进行学习。这让我视频的原始网址在YouTube上,如:

https://r3---sn-ab5l6nzk.googlevideo.com/videoplayback?upn=3VzVwzrmNT8&lmt=1471130096030949&ratebypass=yes&source=youtube&mime=video%2Fmp4&itag=22&pl=27&ipbits=0&expire=1492204641&sparams=dur,ei,expire,id,initcwndbps,ip,ipbits,ipbypass,itag,lmt,mime,mm,mn,ms,mv,pl,ratebypass,requiressl,source,upn&requiressl=yes&ei=AejwWMOXBIiD8wST6aK4CA&dur=663.394&key=cms1&ip=209.95.50.62&id=o-AAVxdc4Jw2onrtv50WYrfSHZNJAfNfmHE5otD3yIdGhU&signature=10A385D37D76E6695D4F49732B0BB3A0DA4F9700.4D0BB88220F8B24145A92AEB384E86432DB6FFC3&redirect_counter=1&req_id=50cca232f5fba3ee&cms_redirect=yes&ipbypass=yes&mm=31&mn=sn-ab5l6nzk&ms=au&mt=1492182931&mv=m

我想学习如何玩这个iOS上。但我不知道这个网址是指:

  • 基于文件的资产

OR

  • 的HTTP实时流

在上述网址,我看到有一个Fmp4,这是否意味着它是一个HTTP实时流?

基于此question,它声明您不能直接使用AVURLAsset。根据AVFoundation指南,这似乎是正确的。请看到红色箭头指向:

enter image description here

但这其他Apple documentation似乎违背上述: enter image description here

我应该直接创建AVURLAssetAVPlayerItem直接?

如果我直接创建AVPlayerItem,是不是同步,因此将冻结用户界面?

回答

0
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    NSURL *videoURL = [NSURL URLWithString:"your video url"]; 
    AVPlayer *player = [AVPlayer playerWithURL:videoURL]; 
    AVPlayerViewController *playerViewController = [AVPlayerViewController new]; 
    playerViewController.player = player; 
    [self presentViewController:playerViewController animated:YES completion:^{ 
     [player play]; 
    }]; 
+0

我不打算使用'AVPlayerViewController',因为它会将所有的细节都抽象出来。如果没有'AVPlayerViewController',你会怎么做?我应该直接创建一个AVURLAsset还是直接创建一个AVPlayerItem? – JEL

+0

创建'AVPlayer'后您可以使用'AVPlayerLayer'播放视频而不需要'AVPlayerViewController' https://stackoverflow.com/questions/34578839/avplayer-streaming-works-and-yet-it-doesnt – Tiko