我花了几个小时谷歌搜索它,但找不到任何东西.
我创建了一个小项目来证明这一点:
github project.它为两个不同的视频流设置两个AVPlayer,并更新UI以显示玩家的AVPlayerItem的loadedTimeRanges.对于第一个视频,它只缓冲~60秒,这很好,但对于第二个视频,它保持缓冲.
self.player1 = [AVPlayer playerWithURL:url1]; self.player2 = [AVPlayer playerWithURL:url2];
self.data1.text = [NSString stringWithFormat:@"Player 1 loadedTimeRanges: %@",self.player1.currentItem.loadedTimeRanges]; self.data2.text = [NSString stringWithFormat:@"Player 2 loadedTimeRanges: %@",self.player2.currentItem.loadedTimeRanges];
也许这可能很重要:过度缓冲的视频没有音轨,只有视频.
更新:我使用MPMoviePlayerController而不是AVPlayer重现了问题,并检查了playableDuration属性.随着第一部电影它停止大约60秒,第二部电影继续前进,然后内存不足.
UPDATE2:我收到了实际的视频文件,并把它们放到了DropBox上,并试图传播这些文件:然后我没有问题!它缓冲整个电影,但它不会耗尽内存.如果我从原始站点(我们的视频共享站点)流式传输它,它只会耗尽内存. URL存在于github项目中.
我真的很期待任何可能导致这种情况的提示.
谢谢!
解决方法
为验证此问题,我创建了一个没有音轨的5分钟视频文件.
mplayer -nolirc -vo null -ao null -frames 0 -identify test_60.mp4 ... opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) ========================================================================== ID_VIDEO_CODEC=ffh264 Audio: no sound Starting playback... ...
MP4Box -new -add test_60.mp4 -add test_music.mp3 test_60_music.mp4
并确认确实存在音轨.
mplayer -nolirc -vo null -ao null -frames 0 -identify /tmp/test_60_music.mp4 ... AUdio: 44100 Hz,2 ch,floatle,320.0 kbit/11.34% (ratio: 40000->352800) ID_AUdio_BITRATE=320000 ID_AUdio_RATE=44100 ID_AUdio_NCH=2 Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio) ========================================================================== AO: [null] 44100Hz 2ch floatle (4 bytes per sample) ID_AUdio_CODEC=ffmp3float Starting playback... ...
然后,我将test_60.mp4和test_60_music.mp4放在Wowza内容目录中,并对它们进行测试.我实际上写了一个类似于你的小测试应用程序来检查loadedTimeRanges,但只是从设备通过safari加载视频应该足以看出差异.
我打开wowza_server:1935 / vod / mp4:test_60.mp4 / playlist.m3u8并在开始播放时按下暂停.缓冲区指示器持续增加,直到加载完整的5分钟视频.
然后,我打开了wowza_server:1935 / vod / mp4:test_60_music.mp4 / playlist.m3u8并做了同样的事情,但只加载了第一个1/5(大约1分钟).
所以Wowza服务器的打包似乎是一个问题 – 注意在adobe(flash)媒体服务器5.0上我不会遇到这个问题.无论视频是否包含音轨,都只缓冲60秒.
希望这很有帮助.我在Wowza forums请求了Wowza人的输入