ios - iOS 上的直播应用程序出现错误 849

标签 ios objective-c iphone audio http-live-streaming

我正在开发 iOS 应用程序的直播功能。我使用了 ContainerView 中包含的 AVPlayerViewController 来显示视频。

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

此后流继续,但没有音频。

偶尔会有一两秒的音频,但立即错误再次出现,并且流继续安静。 (当比特犬视频被播放时,我很高兴。)

如果我暂停流然后播放,音频会返回几分钟,然后再次关闭。

我已搜索此错误,但没有找到任何可以帮助我解决此问题的内容。作为对 iOS 和 HLS 相对较新的人,我不知道问题可能是什么,但如果我不得不猜测,我会说这是音频和视频同步的问题。

感谢任何和所有帮助。

最佳答案

您的代码中有两个问题很明显。

  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)和答案工作答案中遇到了类似的问题。

关于ios - iOS 上的直播应用程序出现错误 849,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648992/

相关文章:

iphone - iPhone 屏幕顶部状态栏的确切尺寸是多少?

ios - 快速播放录制的音频

objective-c - if else 语句不起作用!

ios - 归档发布时出现 armv7s 和 armv7 错误

ios - NSData 到数据 swift 3

ios - ccDrawline 直到触摸位置的一半 cocos2d

objective-c - Objective-C 中单例类的严格实现

ios - 如何设置核心数据实体对象的关系

iphone - 更改 CALayer 的 anchor 会移动 View

iphone - NSManagedObjectContext 批量保存限制