HTML5 호환“모든 사람을위한 비디오”를 얻으려면 어떤 ffmpeg 스크립트가 필요합니까?


12

나는 모든 권리 형식의 동영상을 사용하는 얻을 수는 FFmpeg / mencoder / some_other_CLI_app의 명령 어떤 목록을해야 모두에 대한 비디오를 ?

즉, 기계적인 튜토리얼이 존재하지 못하게하는 미묘함이 있습니까?

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

그런 다음 모든 사용자를위한 비디오 코드를 복사하여 페이지에 붙여 넣습니까?

나의 목표는 내가 주최하는 개인 웹 페이지에 비디오를 포함시키는 것입니다. 플래시 폴백 기능이있는 HTML5가 선호되므로 가장 간단한 방법은 모두를위한 비디오 인 것 같습니다. 그러나이 페이지는 비디오를 모든 다른 형식으로 인코딩하고 비디오 형식에 대한 길고 완전한 기사를 읽음으로써 독자에게 가장 복잡한 부분을 남깁니다 . 반드시 필요한 것은 아닙니다. 사용자가 오디오 파일을 여러 다른 형식으로 맹목적으로 변환하는 명령 목록을 제공 할 수 있습니다. ffmpeg 전문가가 비디오에 대해서도 동일한 작업을 수행 할 수 있기를 바랍니다.


1
의사 코드 예제에 대한 사소한 의견 : .movHTML5 비디오는 없으며 h.264확장명도 없습니다. 가 이다 .264 NAL 단위의 원시 부속서 B의 바이트 스트림이다. 비디오 인코딩은 로켓 과학이 아니지만 개념을 이해하려면 약간의 시간을 투자해야합니다.
slhck

답변:


21

참고 : 이 답변은 원래 게시 이후 크게 편집되었습니다. 지금은 2017 년입니다. 스트리밍은 예전과 다르게 작동합니다. 이 가이드에서는 적응 형 스트리밍이 아닌 특정 해상도에서 하나의 비디오 스트림을 점진적으로 다운로드하는 것으로 가정합니다.

요구 사항

먼저 최신 ffmpeg버전다운로드 하십시오 (정적 빌드 다운로드, 호출하지 마십시오 apt-get install ffmpeg). 이상적으로는 직접 컴파일하십시오 . 너무 오래 걸리지 않습니다.

대부분의 브라우저에서 지원하는 비디오를 생성하려면 항상 최신 호환성 표를 확인하십시오 . 모든 브라우저에서 작동하는 단일 코덱 / 형식은 없지만 WebM에서 MP4로 H.264를 생성하고 WebM에서 VP9를 생성하는 경우 해당 오디오 코덱으로 Chrome, Firefox, Safari 및 일부 버전의 IE를 지원합니다.

WebM (VP9 / Vorbis)

FFmpeg VP9 안내서 의 권장 사항을 따르고 속도 제한이있는 2 패스 인코딩 방식을 사용하십시오.

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm

대상 비트 전송률은 해상도, 프레임 속도, 내용 유형 및 원하는 품질에 따라 다릅니다. 30fps에서 HD 비디오의 경우 2.5MBit / s가 적합합니다. 몇 가지 권장 사항 은 이 Google 가이드 를 참조하십시오 .

MP4 (H.264 / AAC)

FFmpeg H.264 안내서 의 권장 사항을 따르고 속도 제한이있는 2 패스 인코딩 방식을 사용하십시오.

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4

여기서 H.264는 그다지 효율적이지 않기 때문에 대상 비트 전송률이 VP9 비디오보다 약 50 % 높아야합니다. -movflags faststart비디오의 초기 로딩 속도를 높이려면 두 번째 패스에 옵션을 추가하십시오 .

오디오 옵션을 설정하려면 AAC 인코딩 안내서를 참조하십시오 .


1
단락 중 하나의 2013-12-19 버전은 문장 중간에서 잘립니다. "128 Kbit에서에 오디오 기본 설정 / 다시이야,하지만 당신은 Q를 설정할 수도 있습니다 : a 값이 500 0에서 100까지의 범위 가변 비트 레이트에 대한 기본 및 높은 수단 나은 경우입니다."
앨런 드 스멧는

@slhck은 많은 의미가 있지만, 2 센트는 Ogg를 버리고 mpegts / m3u8로 바꿔 모든 iOS 장치 또는 HLS를 허용하는 장치를 지원한다는 것입니다. .mp4 파일을 재사용하고 ffmpeg에서 mpeg-ts 처리를 추가 할 수 있습니다.
Paul Gregoire

@Mondain 실제로 MPEG-TS / .m3u8은 일반적으로 HTML5 호환 비디오가 아닙니다. HLS 서버가 필요하며 스트리밍에 대해 조금 더 알아야합니다. 실제로이 질문의 범위에 포함되지 않습니다.
slhck December

좋은 지적이지만, 지금까지 내 경험으로는 간단한 http 서버가 m3u8을 비디오 태그에 제공 할 수 있습니다. 일반적으로 m3u8 및 ts에 대한 MIME 유형을 해당 서버 구성에 추가하면됩니다.
Paul Gregoire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.