2011-01-17 2 views
0

현재 작업중인 프로젝트는 Silverlight 기반 플레이어를 사용하여 WME를 통해 인코딩 된 wmv 비디오를 스트리밍합니다. 그러나 향후 실버 라이트와 HTML5의 비디오 태그로 옮길 수 있기를 원한다. 따라서 우리의 비디오를 mp4 컨테이너의 H.264로 인코딩해야한다.Silverlight의 일부 H.264 비디오에서 다운로드 한 데이터 이상으로 검색 할 수 없습니다.

작은 문제를 제외하고는 모두 문제가 없습니다. 다운로드 한 것 이상을 검색 할 수는 없습니다. 적어도 저품질 인 코드는 아닙니다. 테스트 파일 중 하나는 FFmpeg를 사용하여 2Mbit, 1Mbit 및 0.5Mbit까지 인코딩하고 moov 원자를 재정렬하기 위해 mp4box를 사용하는 HD wmv 비디오입니다.

2 및 1Mbit 인코딩 모두 Silverlight MediaElement는 다운로드 한 것 이상으로 검색을 인식하고 비디오 데이터를 요청하고 검색 지점에서 재생을 시작합니다.
그러나 0.5 Mbit 비디오는 발생하지 않으며 대신 비디오가 정상적으로 다운로드되는 동안 비디오가 정지됩니다.

Youtube의 저품질 H.264 비디오를 사용하므로 FFmpeg의 매개 변수가 문제인지 다른지 알 수 없습니다.

ffmpeg -y -i fooHD.wmv -an        -vcodec libx264 -vpre slow -level 41 -b 2000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 1 -f rawvideo nul 
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 2000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar2000k.mp4 
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 1000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar1000k.mp4 
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 500k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar500k.mp4 

mp4box.exe -inter bar2000k.mp4 
mp4box.exe -inter bar1000k.mp4 
mp4box.exe -inter bar500k.mp4 

fooHD.wmv 2:17 길고 29.97 FPS @ 8 메가 비트/s의 실행이다 :

다음은 인코딩 명령 줄입니다.

답변

0

필자는 현재 키 프레임이 부족하다는 문제를 겪었지만 모든 인코딩 설정에 대해 -g 250을 보았습니다. 그러나 저 대역폭에서 I- 프레임 설정을 사용하여 인코더가 빠르게 느슨해 진 과거의 문제를 기반으로 I- 프레임/키 프레임 통계를 다시 읽음으로써 500k 파일이 사용자가 요청한 방식으로 인코딩되지 않았는지 확인하는 것이 좋습니다.

+0

I- 프레임이 올바른 것처럼 보이며 요청한 번호를 얻습니다. 나는 해상도를 많이 떨어 뜨리는 미숙 한 해결책을 발견했다. 그러나 확실히 바람직하지는 않으며, 그렇게하기 전에 다른 옵션을 다 써 버릴 것입니다. 테스트하는 동안 나온 것은 비록 파일을 찾는 데 문제가있는 Silverlight가 아니라는 것입니다. html5 비디오 태그, VLC 및 WMP조차도 파일을 스트리밍 할 때 문제가있었습니다. – Jack

관련 문제