웹 비디오의 비트 전송률, -maxrate 및 -bufsize를 고려하는 방법


13

ffmpeg를 사용하여 비디오를 웹에 업로드하기 위해 비디오를 인코딩하고 있습니다. ffmpeg 사용에 대한 이 게시물을 보았지만 값을 고려하는 방법에 대해서는 얻지 못했습니다.

길이가 4 분이고 크기가 70MB 인 비디오가 있다고 가정합니다. 어떻게 이러한 플래그에 대한 값을 고려할 것입니다 : -b:v, -maxrate그리고 -bufsize이 명령에 대한?

ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output

또는 crf값이 19-24 와 같은 정상적인 값이 있습니까? 여러분의 도움과지도에 진심으로 감사드립니다.


비디오 인코딩은 예술이며 마스터 할 수백 개의 매개 변수가 있습니다. 2 패스 인코딩은 비트 전송률로 재생하는 것보다 대부분의 시나리오에서 훨씬 나은 품질과 압축을 제공합니다. 일반적으로 최종 크기 및 비디오 비트 전송률은 주로 비디오 출력 크기에 따라 다릅니다. ffmpeg는 일반적으로 동일한 비디오 품질을 유지하도록 지시하면 최대 속도와 비트 전송률을 선택할 수있을 정도로 똑똑합니다. 또한 대부분의 시나리오에서 480px 너비의 비디오를 작성하면 충분하므로 비트 전송률로 재생하는 것보다 훨씬 더 많은 대역폭을 절약 할 수 있습니다.
earizon

1
@earizon 동의합니다. 비디오 인코딩은 예술이며 480이면 충분합니다. 그러나 더 이상 640x480에서 CRT를 사용하지 않기 때문에 더 높은 해상도를 사용하는 것이 좋습니다. 비트 전송률을 사용하는 것보다 크기를 줄이는 것이 더 좋은 방법이지만, 옵션이 마음에 듭니다.
Wyatt8740

답변:


21

실제로 업로드 속도에 따라 다릅니다.

bufsize비트 레이트를 일정하게 유지하는 데 종교적인 ffmpeg가 얼마나 중요한지를 결정합니다. FFmpeg Wiki : 출력 비트 레이트 제한에 따라bufsize 64k 를 설정하면 64KB마다 현재 비트 레이트를 계산하고 그에 따라 조정합니다. 크기가 작을 수록 x264 검사 사이에 갑작스러운 변경을 수행하기에 충분한 공간이 없기 때문에 품질에 해로울 수 있습니다.bufsize

당신 maxrate이 640kbps이고 당신 bufsize이 64k라면, 매초마다 x264가 점검됩니다. 이는 하위 최적 - 는 FFmpeg 위키 : 스트리밍 사이트 인코딩하는 것은 그것을마다 1 ~ 2 초를 실행하는 것이 좋습니다. 이것이 의미가 없다면 maxrate/ bufsize= 점검 빈도 로 생각하십시오 . 경험적으로이 빈도를 1-2 초 사이로 유지하십시오.

당신이 모두를 설정 한 경우 maxratebufsize, 당신은해야한다 :

  • maxrate가장 낮은 업로드 속도로 설정 하십시오 ( ffmpeg wiki 예제 에서는 전체 업로드 속도의 80 %이지만 마일리지는 다를 수 있습니다).
  • 세트 bufsize당신과 같은 사이 어딘가에 maxrate(일초)와 두 번의 maxrate(2 초)입니다. 그래도 여전히 충분하지 않으면을 낮추고 maxrate다시 설정하십시오 bufsize.

그런 다음 약간 놀아야하지만 어딘가에서 시작해야하기 때문에 maxrate약 600k 에서 시작했을 crf것입니다.

원하는 경우 bufsize3-4 초마다와 같이 값을 낮추어 값이 출력물 모양을 어떻게 바꾸는 지 확인할 수 있습니다. 그런 다음 비디오에 대해 얼마나 걱정해야하는지 결정할 수 있습니다.

실제 값은 없습니다. 실제로하는 crf것은 속도가 설정되어있는 것을 유지하기위한 최상의 버퍼 크기라고 생각하는 것에 따라 출력을 최적화하는 것입니다. 파일 크기를 줄이면서도 간혹 스파이크를 발생시키면서 일부 품질을 유지하려고합니다.


1
"최대 속도 (1 초)와 최대 속도의 절반 (2 초) 사이에 bufsize를 설정하지 않아야합니다."최대 속도 (1 초)와 최대 속도의 두 배 (2 초)에 bufsize를 설정해서는 안됩니다. 초) "?
Ely

@Ely 당신이 옳다고 생각합니다. 광산은 매 0.5 초마다 그렇게 할 것입니다. 내가 고칠 게요!
Wyatt8740

@ Wyatt8740 죄송합니다. 매우 바빴습니다. 그래도 하나의 질문입니다. 내가 사용하는 경우 crf, 그때 지정할 필요가 없습니다 bitrate, buffsize그리고 maxrate? 그렇다면 어떤 것이 더 효율적 입니까 (사용 crf또는 bitrate, buffsizemaxrate)?
Robin

@Robin crf와 함께 bufsize 및 maxrate를 사용할 수 있습니다. crf는 특정 품질과 일치하도록 즉석에서 비트 전송률을 조정하며, 비디오의 일부가 매우 복잡한 경우 비트 전송률이 하늘 높이로 촬영되므로 원하지 않을 것이므로 bufsize를 사용하여 "잠금 설정" 최대 속도 (그러나 너무 엄격하지는 않지만 비디오가 쓰레기처럼 보입니다! :))
Ely

@Robin 맞습니다. 다른 것과 함께 crf를 사용할 필요는 없습니다. 그러나 제한하려는 경우 할 수 있습니다. crf는 일정한 품질을 유지하려고 시도합니다 . bufsize그리고와 제한 내에서 강제로 품질을 유지할 수 있습니다 maxrate. bitrate그래도 필요하지 않습니다 . 엘리가 말했듯이 스트리밍에 더 좋을 것입니다.
Wyatt8740
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.