길이가 60 초인 비디오를 대상 또는 최대 크기 인 10MB 로 인코딩하고 싶습니다 .
내가 아는 두 가지 접근 방식이 있습니다. 하나는 FFMPEG-Wiki에 설명되어 있고 다른 하나는 문서에서 발견되었습니다. 불행히도, 나는 언제 어떤 방법을 사용 해야하는지에 대한 설명을 찾지 못했습니다.
이러한 방법 중 권장되는 방법이 있습니까? 그렇지 않다면, 각 방법의 단점은 무엇입니까?
1) ffmpeg-wiki에 설명 된대로 비디오의 길이와 일치하도록 비트 전송률을 계산하고 설정하십시오.
(10MB * 8192 [MB를 킬로 비트로 변환]) / 60 초 = ~ 1365kbits / s 총 비트 전송률 1365k-128k (원하는 오디오 비트 전송률) = 1237k 비디오 비트 전송률
ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4
2) -fs
매개 변수를 사용하고 ffmpeg가 알아 내도록하십시오.
ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4
이것은 나를 위해 도움이되었다 : stackoverflow.com/a/34547102/470749
—
Ryan
libx264
합니다c:v
. 이fs
예 에서는 비디오-c:v copy
가 사용 되므로 비디오를 트랜스 코딩하지 않습니다 . 따라서preset
및crf
효과도 없습니다.