首页 文章

AVPlayer没有播放没有音频的HTTP直播流

提问于
浏览
0

我有一个AVPlayer,它正在流式传输实时HLS流 . 我正在使用以下代码 .

-(void)initPlayer{

self.mPlaybackView = [[AVPlayerPlaybackView alloc] initWithFrame:mPlaybackViewFrame];
[mPlaybackView setVideoFillMode:@"AVLayerVideoGravityResizeAspectFill"];

NSURL *url = [NSURL URLWithString:mCamera.url];
self.playerItem = [AVPlayerItem playerItemWithURL:url];
self.mPlayer = [AVPlayer playerWithPlayerItem:playerItem];

[mPlayer addObserver:self forKeyPath:@"status" options:0 context:AVPlayerPlaybackViewControllerStatusObservationContext];

}

//observer

- (void)observeValueForKeyPath:(NSString*)path ofObject:(id)object change:(NSDictionary*)change context:(void*)context
{

AVPlayer* mPlayer1 = (AVPlayer*)object;
if ([path isEqualToString:@"status"])
{
    NSLog(@"Video Player status %i",mPlayer1.status);
    if (mPlayer1.status == 2)
    {
        [self itemDidFinishPlaying];
    }
    if (mPlayer1.status == AVPlayerStatusReadyToPlay)
    {


        [mPlaybackView setPlayer:mPlayer];
        [mPlayer play];

    }
}
}

参考:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW1

我的问题

如果没有音频 Channels ,AV播放器不播放我的直播视频 . 我正在使用Wowza作为我的媒体服务器 . 直播是相机输入 . 我可以播放多个AVPlayer实例而没有任何问题(带音频) .

媒体验证工具响应

VIDEO 1

mediastreamvalidator: Beta Version 1.1(131115)

Validating http://xx.xx.xx.xx/live/127.stream/playlist.m3u8
Validating child playlist chunklist_w101231837.m3u8 [193.55 kbits/sec]

Segment processing interrupted: chunklist_w101231837.m3u8 - 32 out of 32 segments processed...

--------------------------------------------------------------------------------
http://xx.xx.xx.xx/live/127.stream/playlist.m3u8
--------------------------------------------------------------------------------

Playlist Syntax: 

Warning: (0:-12274) PROGRAM-ID has been deprecated and is no longer a valid attribute for #EXT-X-STREAM-INF
--> #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=193548,CODECS="avc1.66.41, mp4a.40.2",RESOLUTION=640x480

Alternate playlist(s):

--------------------------------------------------------------------------------
chunklist_w101231837.m3u8
--------------------------------------------------------------------------------

Playlist Syntax:    OK

Processed 32 out of 32 segments:

media_w101231837_191.ts:

WARNING: Media segment bandwidth exceeded target playlist bandwidth by 12 % (216.43 kbits/sec vs.193.55 kbits/sec, limit is 10 %).

media_w101231837_192.ts:

WARNING: Media segment bandwidth exceeded target playlist bandwidth by 15 % (221.86 kbits/sec vs.193.55 kbits/sec, limit is 10 %).

 media_w101231837_195.ts:

WARNING: Media segment bandwidth exceeded target playlist bandwidth by 15 % (222.77 kbits/sec vs.193.55 kbits/sec, limit is 10 %).

 Average segment duration: 9.93 seconds
 Playlist target bitrate: 193.55 kbits/sec
 Segment bitrate: Average: 189.54 kbits/sec, Max: 222.77 kbits/sec (exceeds target by 15.10 %)
 Average segment structural overhead: 13.50 kbits/sec (7.13 %)

2 回答

  • 0

    我正在使用Stitched Stream Player在Apple开发人员的示例代码中给出..

    愿你从中得到帮助..

  • 4

    我不知道它是否能解决您的问题,但这是我在播放没有音频的HTTP直播视频时发现的一些重要信息:

    当显示项目的视频图层添加到视图层次结构中时,AVPlayerItem的状态仅会更改为“准备播放” . 如果视频包含音频,则情况并非如此 .

    即使您没有将视频图层添加到视图层次结构中,AVPlayer的状态仍会更改为“准备播放” .

相关问题