2013-03-08 97 views
2

在我的ios應用程序中,我嘗試使用http實時流播放視頻。比賽進行得很順利,直到我決定使用洗滌器並跳到尚未緩衝的點。從那一刻開始,音頻會繼續播放,但視頻會變黑。ios http現場黑屏

我已經轉換我.MP4視頻用下面的命令:

avconv -y -i video.mp4 -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -b 64k -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 64k -bufsize 64k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect 640:480 -g 30 -async 2 sample_64.ts 

我沒有這與多個比特率(64,150,240,440和640)和創建一個.m3u8包含不同流。轉換後,我使用mediafilesegmenter將視頻分割成10秒。

在輸出窗口擦洗以下後出現:

2013-03-08 17:30:21.827 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Disabling autoplay for pause 
2013-03-08 17:30:21.827 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Disabling autoplay 
2013-03-08 17:30:21.977 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamUnlikelyToKeepUp: 1 -> 0 
2013-03-08 17:30:21.978 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0) 
2013-03-08 17:30:21.978 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamRanDry: 0 -> 1 
2013-03-08 17:30:21.980 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Took background task assertion (32) for playback stall 
2013-03-08 17:30:21.981 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0) 
2013-03-08 17:30:22.634 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamUnlikelyToKeepUp: 0 -> 0 
2013-03-08 17:30:22.634 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: _streamRanDry: 0 -> 1 
2013-03-08 17:30:22.667 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0) 
2013-03-08 17:30:22.769 Geschiedenis Trainer[88129:19a03] [MPAVController] Autoplay: Ending background task assertion (32) for playback stall 

我的錄像機代碼:

self.streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; 
[self.view addSubview:self.streamPlayer.view]; 
[self.streamPlayer setFullscreen:YES animated:YES]; 

跳到已經被緩衝的一個點時,不會發生此問題。

回答

1

問題在於我的視頻轉換。我使用的是過期版本avconv/ffmpeg。我更新了ffmpeg到最新版本(1.1)並解決了這個問題。

轉換完視頻後,我用蘋果的mediafilesegmenter將視頻分割成10秒。在更新ffmpeg之前,它會爲每個段生成一個錯誤:segment does not contain sync frame。更新ffmpeg後,此錯誤消失,流式傳輸問題也消失了。