ffmpeg / avconv를 사용하여 비디오를 WebM으로 변환


18

홈 비디오의 크기를 최적화하는 동안 Xubuntu의 Pitivi를 사용하여 일부 비디오를 테스트로 WebM으로 변환했습니다. 크기 차이가 중요합니다. 결과 webm 파일은 원본 파일의 약 10 %에 불과하지만 화질은 나에게 거의 동일하게 보입니다.

또한 avconv스크립트를 사용할 수 있도록 변환을 시도 했지만 결과 파일이 실제로 엉망이되었습니다. Pitivi의 렌더링 설정을 본 후 몇 가지 매개 변수를 시도 avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webm했지만 품질은 여전히 ​​엉뚱한 것처럼 보이므로 잘못된 매개 변수가 누락되었거나 사용중인 것 같습니다. 누군가 h264 동영상을 webm으로 변환하고 Pitivi와 동일한 품질을 얻는 데 사용할 올바른 매개 변수가 무엇인지 알고 있습니까?

Pitivi의 설정은 다음과 같습니다. Pitivi 프로젝트 만들기 webm으로 렌더링 (html5 비디오) 코덱 구성

답변:


53

참고 : 이 정보는 VP9 인코딩 의 FFmpeg Wiki를 기반으로합니다 . 자세한 내용은 해당 기사를 참조하십시오. 지속적으로 유지 관리됩니다. 최상의 결과를 얻으려면 당신의 최신 버전을 사용해야 ffmpeg에 의해 자신의 웹 사이트에서 다운로드 (정적 빌드가 충분합니다, 그것은 포함 libvps-vp9인코더).

가변 비트 레이트

인코더는 프레임에 할당 할 비트 수를 자유롭게 선택할 수 있으므로 VBR 인코딩은 최적의 전체 품질을 제공합니다. 고정 비트 전송률의 스트리밍 비디오를 준비하지 않는 한이 모드를 선택하십시오.

옵션 1 : 일정한 품질의 인코딩

일반적으로 특정 파일 크기를 대상으로하지 않으려면 비트 전송률을 자유롭게 변경해야합니다. 이렇게하면 최고 품질로 이어질 수 있습니다. 비트 전송률을 0으로 설정하고 고정 속도 인자 ( CRF )를 대상 품질 수준으로 설정하면됩니다.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm

CRF 값은 0-63입니다. 값이 낮을수록 품질이 좋아집니다. 권장 값의 범위는 15-35이며 1080p HD 비디오에는 31이 권장됩니다. Google에 자세한 정보 가있는 가이드가 있습니다 .

옵션 2 : 대상 비트 전송률을 사용한 2 패스 인코딩

파일이 특정 대상 비트 전송률 또는 파일 크기를 갖도록하려면 속도를 지정하고 2 패스 인코딩을 사용해야합니다 (최적의 품질 분포를 보장 함). 여기서는 5MBit / s를 선택하여 1080p 콘텐츠에 충분합니다.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm

Windows 사용자는 사용할 필요가 NUL대신 /dev/null하고, ^대신 \.

일정한 비트 레이트

우선 libvpx 는 고정 비트 전송률 및 가변 비트 전송률 인코딩 모드를 제공합니다 . 특정 파일 크기 나 스트리밍 시나리오를 대상으로하지 않는 한 가능한 한 일정한 비트 전송률을 피해야합니다. 그래도 1MBit / s와 같이 다른 방법이 없다면 일정한 비트 전송률을 설정해보십시오.

ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm

출력을보고 원하는대로 비트 전송률을 늘리거나 줄입니다 (또는 파일 크기 제한). 예를 들어 500K또는 5M등을 사용할 수 있습니다 .

당신은 지정해야합니다 -minrate, -maxrate그리고 비트 레이트 -b:v인코더에 대한 순서는 CBR을 사용합니다. 모두 동일한 값을 가져야합니다. 그렇지 않으면 대신 다른 대상 비트 전송률을 선택하고 VBR 인코딩을 수행하지만 품질이 떨어집니다.

오디오

VP9 인코딩에 선택된 현재 오디오 코덱은 Opus입니다. FFmpeg는 기본적으로 필요한 인코더와 옵션을 선택합니다. 명시 적으로 설정 -c:a libopus하려면 그렇게 할 수도 있습니다. 추가 옵션 에 대해서는 libopus설명서 를 참조하십시오 .


4
현재 인터넷 전체에서 VP8을 인코딩하는 데 가장 적합한 단일 가이드입니다. 잘 했어, 한번 더 투표 할 수 있으면 좋겠다!
evilsoup

@evilsoup 감사합니다. 나는 아직도 그것을 조정하고 있으며 나중에 FFmpeg 위키에 새 페이지를 추가 할 것입니다.
slhck

이것은 정말 훌륭한 답변입니다! 나는 항상 항상 기본 256 kBit / s를 사용했기 때문에 비디오의 품질이 항상 같은 이유를 이해합니다. 대단히 감사합니다!
jeroen

원래 mp4와 변환 된 webm의 크기 차이는 무엇입니까?
스위스

1
@Dan 나는 방금 가이드를 업데이트했다 – 조금 구식 인 것을 알았다. 도움이 되셨 다니 다행입니다.
slhck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.