[英]Error 849 in livestreaming application on iOS
我正在開發iOS應用程序的直播功能。 我使用了ContainerView中包含的AVPlayerViewController來顯示視頻。
這是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的新手,我對可能出現的問題沒有任何想法,但是如果我不得不猜測,我會說這是音頻和視頻同步的問題。
任何和所有幫助表示贊賞。
您的代碼中有兩個問題非常明顯。
streamPlayer
變量。 AVPlayerViewController
變量應為全局變量 通過將AVPlayerViewController
屬性聲明作為全局變量放入接口擴展中,應該可以解決該錯誤。
代碼看起來像這樣:
@interface ViewController ()
@property (nonatomic) MPMoviePlayerController *mpStreamPlayer;
@property (nonatomic) AVPlayerViewController *avStreamPlayer;
@property (nonatomic) BOOL isPlaying;
@end
@implementation ViewController
- (void)viewDidLoad ... // continue as expected
我認為它將得到解決的原因是由於這個類似的問題,社區中的成員遇到了錯誤849 (其代碼庫為SWIFT)和有效答案。
這可能與iOS 9錯誤有關,將m3u8粘貼到Safari中,可能會遇到相同的問題(中間音頻中斷,音頻/視頻不同步),您的代碼無能為力。
在此處查看一些報告,Apple工程師要求提交錯誤報告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.