2

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];

この問題は、すでにバッファリングされているポイントにスキップする場合には発生しません。

4

1 に答える 1

1

問題は私のビデオの変換にありました。avconv/の古いバージョンを使用していましたffmpeg。ffmpegを最新バージョン(1.1)にアップデートしたところ、問題は解決しました。

ビデオを変換した後、私はアップルを使用mediafilesegmenterしてビデオを10秒のセグメントに分割しました。ffmpegを更新する前segment does not contain sync frameに、セグメントごとにエラーが発生しました。ffmpegを更新した後、このエラーは消え、ストリーミングの問題も消えました。

于 2013-03-11T22:08:42.537 に答える