FFMPEG/x264: 한 인코딩 세션의 패스 1을 다른 인코딩 세션의 패스 2로 사용할 수 있나요?

FFMPEG/x264: 한 인코딩 세션의 패스 1을 다른 인코딩 세션의 패스 2로 사용할 수 있나요?

질문:

하나의 해상도/비트 전송률에서 소스 비디오의 "패스 1" 인코딩을 동일한 소스의 "패스 2" 인코딩에 대한 입력으로 사용하는 것이 적법합니까?다른해상도/비트레이트? 나는 그것을 시도했고 그것은그렇군요작동하지만 일반적인 경우에는 그렇게 될지 전혀 확신할 수 없습니다. 스트림 프로필(I/P/B 프레임 선택 등)은 두 패스에 대해 동일한 매개변수를 사용하는 것과 다르게 보이지만 "충분히 좋아" 보입니다.

나는 이것에 대해 권위 있는 답변이 필요한 시점에 와 있습니다.

타네이션에 1그렇게 하시겠습니까?

2패스 인코딩은 FFMPEG(실제로는 x264)의 미친 버그를 수정하기 때문에 아마도 곧 수정되지 않을 것입니다. 컴퓨터의 속도에 따라 비디오의 처음 ~1초 정도는 종종 매우 부적절합니다. 비트레이트. 이는 매우 빠른 시스템(예:EC2 c4.8xlarge). 유휴 상태의 i7 쿼드코어 MacBook Pro아니다이 버그를 재현하기에 충분합니다.

그것은 둘 중 하나일 것이다대단히높은:

  • 단일 패스 CBR(없음)VBV지정된

    (VBV가 없는 CBR은 무시하세요.전혀 CBR이 아닙니다)

또는 너무 낮음:

  • 단일 패스 CBRVBV
  • 단일 패스 VBR:QScale~와 함께VBV그리고 최대화

VIFp와 SSIM 품질 측정 모두 더 낮은/높은 비트 전송률이 실제로 불필요하게 감소/증가된 품질(즉, 비트 전송률)에 해당한다는 것을 보여줍니다.해서는 안 된다더 높거나 더 낮았습니다).

2패스 CBR 인코딩 수행이 작동합니다.엄청난시간이 있다면 문제를 해결해 보세요. 안타깝게도 단일 해상도에 대한 2패스 인코딩의 대기 시간을 감당할 수 없습니다.

그럼 당신이 하고 싶은 일은 무엇인가요?

현재 낮은 해상도(480)에서 초기 트랜스코드를 수행하고 있습니다. 여기에는 가능한 한 많은 재생 장치가 포함됩니다. 나는 이것을 패스 1로 사용하고 싶습니다. 어쨌든 480 해상도는 형편없기 때문에 비디오의 첫 번째 순간의 어리석은 비트 전송률에 관계없이 패스 1 비디오를 내 480으로 게시할 수 있습니다.

그런 다음 사용하고 싶습니다480 패스 1 정보더 높은 해상도에서는 2번만 통과하세요. CBR/VBV의 경우 이는 다음과 같습니다.

ffmpeg -i source.mp4 -pass 1 -vf  scale=852:480 -c:v libx264 -b:v 1000k ... 480.mp4
ffmpeg -i source.mp4 -pass 2 -vf scale=1280:720 -c:v libx264 -b:v 2500k ... 720.mp4

바니 구글

관련 정보