ffmpeg를 사용하여 mp4를 webm으로 빠르게 변환하는 방법?


20

HTML5 비디오를 사용하는 웹 사이트의 목적으로 76 mp4 파일을 webm으로 변환해야합니다. 10Gb의 mp4 파일에 대해 이야기하고 있습니다 ... ffmpeg에게 다음을 사용하여 간단히 요청할 수 있습니다.

ffmpeg -i input_file.mp4 output_file.webm

물론 나는 그것을 재귀 적으로 할 것입니다 :

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

인터넷에서 찾은 것을 시도해 보았습니다.

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

그러나 일주일도 걸리지 않을 것입니다! 내가 무엇을 잘못하고 있지? 속도를 높일 수있는 방법이 있습니까? ogg로 변환하면 속도가 향상됩니까? 도와주세요!!!



@LordNeckbeard 당신은 그 가이드를 바탕으로 답변을 작성해야합니다. 또한 vpx 인코더는 x264와 비교하여 제정신 설정 등으로도 당밀만큼 느리다는 점에 유의해야합니다. 많은 품질을 기꺼이 희생하지 않으면 조명을 사용하여 매우 빠르게 인코딩 할 수 없습니다.
evilsoup

문제는 호환성에 관한 것입니다. 이것은 약간의 호환성 표입니다 : {x264 : IE (+) Safari (+) Chrome (+) Firefox (-) Opera (-)} {webm : IE (-) Safari (-) Chrome (+) Firefox (+) Opera (+)} 나는 그들이 Safari와 IE가 시장에서 가장 큰 부분을 차지한다고 말하지만, 나는 그것을 의심하고 Firefox와 Opera에 내기를 할 것입니다! ;)
pr.nizar

@ pr.nizar BSD에서 OpenH264를 발표 한 Cisco 덕분에 firefox는 이제 h.264를 지원합니다.
Wyatt8740

답변:


11

비디오 트랜스 코딩에 시간이 걸립니다. 또한 매개 변수 인코딩에 대해 더 많은 지식이 필요합니다. ffmpeg의 기본값은 사용자에게 적합하지 않을 수 있으며 사용 가능한 출력 파일을 작성하지 못할 수도 있습니다.

시작은 다음과 같습니다.

http://blog.pcode.nl/2010/10/17/encoding-webm-using-ffmpeg/

이러한 설정은 특정 평균 비트 전송률 (비디오 비트 전송률 3900kbit)로 인코딩 되므로 비트 전송률이 급상승합니다.

MP4와 WebM은 다른 비디오 코덱을 사용하므로 지름길이 없습니다. 비디오를 트랜스 코딩해야합니다.

물론 인코딩 속도는 프레임 크기, 프레임 속도 및 품질 설정에 따라 크게 달라집니다. 720p 인코딩의 경우 지난 몇 년 동안 CPU에서 대략 1 : 1 (즉, 10 시간 동안 10 시간의 비디오)을 인코딩 할 수있을 것으로 예상 할 수 있습니다. 링크에 제공된 예제와 같이 2 패스 ABR 인코딩을 수행하는 경우 거의 두 배입니다.


8

그 두 배나 반 잘라? 그래서 막 다른 골목입니다 .. 비트 전송률을 가지고 놀지 않을 것입니다. 품질이나 크기에서 무엇을 기대해야할지 전혀 몰랐습니다. 나는 이것에 충실하고 전환이 끝날 때까지 고객을 붙잡을 것이라고 생각합니다.

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

나는 미래의 사용자를 위해 그것을 게시하고 있지만 실제로 속도를 얻었지만 CPU는 지옥처럼 작동합니다 : 각 코어에서 60-80 %! 이제는 시간이 덜 걸릴 것이라고 생각합니다. 6 또는 7 대신 3 일. 고장이 나지 않기를 바랍니다. ^ _ ^

어쨌든 고마워!

편집 : LordNeckbeard 및 neon_overload -sameq 에서 주석 후 스위치 -sameq가 제거되었습니다. 동일한 "품질"을 의미하지 않습니다.


3
-sameq"동일한 품질"을 의미하지 않으며 업스트림에서 제거되었습니다. 사용하지 마십시오. 자세한 libvpx 인코딩 지침은 귀하의 질문에 대한 내 의견의 링크를 참조하십시오.
llogan

2
-sameq는 동일한 양자화기를 의미하지만 h.264와 VP8 간의 양자화를 비교하는 것은 불가능하므로이 방법이 효과가 있어도 실제로 사용하면 결과가 거의 나빠질 수 있습니다.
thomasrutter

2
그것에 관심을 가져 주셔서 감사합니다! 나는 나의 응답을 편집했다.;;) 실제로 나는 그것이 더 느려지는 것을 보았을 때 그 스위치를 사용하지 않았다. 나는 심지어 ffmpeg를 떨어 뜨리고 avconv를 사용했다. 이 작업은 하루 반에 이루어졌습니다 : find ./ -name '* .mp4'-exec bash -c 'avconv -i "$ 0"-vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 " $ {0 %%. mp4} .webm " '{} \; 나는이 의견으로 주제를 바꾸고 있다는 것을 알고 있지만 그만한 가치가 있다고 생각했다. ;)
pr.nizar

품질을 위해 원본 파일과 트랜스 코딩 된 웹 간의 차이점을 알 수 없습니다. 거의 동일한 오디오 및 비디오 품질입니다!
pr.nizar

1
ffmpeg / avconv의 기본값을 사용하는 것과는 반대로 crf 또는 비트 전송률 값을 설정하는 것이 좋습니다.
thomasrutter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.