2013-03-08 3 views
2

내 ios 앱에서 http 라이브 스트리밍을 사용하여 동영상을 재생하려고합니다. 스크러버를 사용하기로 결정하고 아직 버퍼링하지 않은 지점으로 건너 뛰기 전까지는 잘 진행됩니다. 그 순간부터 오디오는 계속되지만 비디오는 검게됩니다.ios http live 검은 색 화면

나는 다음과 같은 명령을 내 .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)으로 업데이트하여 문제를 해결했습니다.

비디오를 변환 한 후 Apple의 mediafilesegmenter을 사용하여 10 초 세그먼트로 비디오를 분할했습니다. ffmpeg를 업데이트하기 전에 각 세그먼트에 대해 segment does not contain sync frame 오류가 발생했습니다. ffmpeg를 업데이트 한 후이 오류가 사라지고 스트리밍 문제가 발생했습니다.

관련 문제