Avplayer不会在没有音频的情况下播放HTTP实时流



我有一个正在流式HLS流的Avplayer。我正在使用以下代码。

-(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://develveper.apple.com/library/ios/documentation/audiovideo/conepteual/coneptual/avfoundationpg/articles/02_playback.htmlback.htmll#/apple/apple_reff/doc/doc/uid/tp40010188-ch3-sw3-sw1

我的问题

如果其中没有音频频道,Avplayer不会播放我的现场流视频。我正在使用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 %)

我正在使用苹果开发人员的示例代码中给出的缝合流播放器。

您可能会从中获得帮助。

我不知道它是否在您的情况下解决了问题,但这是我在没有音频的HTTP实时流视频时发现的一些重要信息:

当添加了显示该项目的视频层时,AvplayerItem的状态只会更改为"准备播放"。如果视频包含音频,则不是这种情况。

即使您不在视图层次结构中添加视频层,Avplayer的状态仍然更改为"准备播放"。

相关内容

最新更新