
먼저 내 제목에 대해 조금 더 말하고 싶습니다. 업스케일링이 데이터를 추가하지 않는다는 사실(업스케일링할 때 자주 묻는 질문)을 언급하는 것이 아니라 뭔가 다릅니다.
예
원본 비디오 A1(854x480)이 있습니다.
스케일을 무시하고 A1을 B1로 인코딩하므로 854x480을 동일하게 유지합니다.
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 C:\B1.mkv
이 비디오를 플레이어에서 재생하고 플레이어의 창을 확대하여 크기를 조정했습니다. 이제 비디오는 1092x614이고 프레임 88의 스크린샷을 저장합니다.
이제 스케일 1092x614를 지정하여 A1을 C1로 인코딩합니다(우리가 가지고 있는 스크린샷과 같습니다).
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 -filter_complex scale=1092:614 C:\C1.mkv
C1의 프레임 88 스크린샷을 기본 화면 크기(1092x614)로 저장합니다.
두 인코딩 모두에 원시 원본을 사용하고 있기 때문에 두 스크린샷이 동일하게 보일 것이라고 가정했습니다. 하지만 그렇지 않습니다. 업스케일링된 인코딩 C1은 수동 업스케일링된 인코딩 B1에 비해 품질이 훨씬 낮습니다.
나는 플레이어를 사용하여 수동으로 업스케일하고 이미지를 볼 때 ffmpeg가 인코딩하는 동안 동일한 작업을 수행한다고 생각했습니다. 따라서 내가 보는 것과 동일한 이미지를 보고 이를 기반으로 인코딩을 빌드하지만 ffmpeg가 사용하는 렌더링 엔진은 다음과 같습니다. 다르다/좋지 않다.
이 문제를 해결할 수 있는 방법이 있나요?
다른 기술로 유사한 결과를 얻을 수 있습니까? Original Raw A1의 메타데이터를 편집하고 너비:높이를 설정하는 등 모든 플레이어가 해당 크기로 비디오를 열도록 만들어 재생 시 무의식적으로 확대합니다.
이에 대한 사용 사례는 대부분의 주요 비디오 호스트에서 인식되는 크기를 시뮬레이션하려는 것입니다. 임계값 미만의 비디오는 특정 설정을 사용하는 호스트에 의해 인코딩되지 않습니다.
답변1
원본 비디오가 원시 비디오라고 말씀하셨듯이 압축되지 않았음을 의미합니다. 플레이어를 사용하여 수동으로 업스케일하면 여전히 압축되지는 않았지만 보간됩니다. 여전히 최고 품질을 유지한다는 의미입니다. 그러나 -crf 24는 압축률이 높으므로 비디오를 업스케일된 원본 비디오처럼 보이게 하려면 -crf 19 이하를 사용해 볼 수 있습니다.