2016-01-07 60 views
2

我正在研究iOS應用程序的直播功能。我使用了ContainerView中包含的AVPlayerViewController來顯示視頻。iOS上的直播應用程序中的錯誤849

Storyboard Screenshot

這裏是對的ViewController

@interface ViewController() 

@property MPMoviePlayerController* streamPlayer; 
@property BOOL isPlaying; 

@end 

AVPlayerViewController *streamPlayer; 

@implementation ViewController 


- (void)viewDidLoad { 

[super viewDidLoad]; 

self.isPlaying = NO; 

NSURL *streamURL = [NSURL URLWithString:@"http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/appleman.m3u8"]; 

streamPlayer = [[ UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"StreamPlayer" ]; 


streamPlayer.player = [ AVPlayer playerWithURL:streamURL ]; 

} 

- (IBAction)playVideo:(id)sender{ 


    if (!self.isPlaying){ 

    [ streamPlayer.player play ]; 

    [self.button setTitle:@"Stop" forState:UIControlStateNormal ]; 

     self.isPlaying = YES; 
    } else { 

     [ streamPlayer.player pause ]; 

     [self.button setTitle:@"Play" forState:UIControlStateNormal ]; 

     self.isPlaying = NO; 
    } 

} 

相關代碼(您可以忽略IsPlaying模塊變量,它只是爲了看看我能控制)

流啓動並正常工作幾分鐘,然後停止/緩衝(我認爲)幾秒鐘,並顯示一個錯誤:

ERROR: 849: AudioQueue: request to trim 4291961269 + 0 = 4291961269 frames from buffer containing 21504 frames 

在此之後流繼續,但沒有音頻。

偶爾會有一兩個音頻,但立即再次顯示錯誤,並且數據流將保持靜默。 (當Pitbull視頻正在播放時,我很高興)。

如果我暫停播放並播放它,音頻會返回幾分鐘,然後再次關閉。

我已經搜索了這個錯誤,但還沒有找到任何東西來幫助我解決這個問題。對於iOS和HLS相對來說比較陌生,對於問題可能是什麼,我沒有任何想法,但是如果我不得不猜測我會說這是音頻和視頻同步的問題。

任何和所有的幫助表示讚賞。

回答

2

代碼中有兩個問題立即脫穎而出。

  1. 你有兩個streamPlayer變量。
  2. AVPlayerViewController變量應該是一個全局變量

把你AVPlayerViewController財產申報的接口擴展內部爲全局變量錯誤應該可以解決。

的代碼會是這個樣子:

@interface ViewController() 

@property (nonatomic) MPMoviePlayerController *mpStreamPlayer; 
@property (nonatomic) AVPlayerViewController *avStreamPlayer; 

@property (nonatomic) BOOL isPlaying; 

@end 

@implementation ViewController 


- (void)viewDidLoad ... // continue as expected 

我假設它會得到解決的原因是因爲this類似的問題在社區的成員與錯誤849(他們的代碼庫經歷是SWIFT)和答案工作答案。

2

這可能與iOS 9的bug有關,將你的m3u8粘貼到Safari中,你可能會遇到同樣的問題(中間音頻中斷,音頻/視頻不同步),你可以用你的代碼。

查看一些報告here,蘋果工程師要求提交錯誤報告。