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

时间:2014-01-23 05:54:41

标签: ios audio video avplayer http-live-streaming

我有一个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

我的问题

如果没有音频频道,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 :(得分:4)

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

愿你从中获得帮助..

答案 1 :(得分:0)

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

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

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