
내 Canon 60D는 비디오를 녹화할 때 .MOV 파일을 생성하는데 .MOV 컨테이너에 H264 비디오 스트림과 PCM 오디오 스트림이 있다는 것을 알게 되었습니다.
ffmpeg와 GSpot을 사용하여 내 동영상 중 일부를 살펴본 결과 비트 전송률이 꽤 높은 것 같습니다(640x480의 경우 22,000kbps, 1920x1080의 경우 45,000).
파일 크기를 줄이되 품질을 상당히 높게 유지하고 싶습니다. 저는 제가 생각할 수 있는 가장 간단한 방법인 비트 전송률을 낮추는 방법을 시도해 보았는데 예상했던 대로 이루어졌습니다. 즉, 비트 전송률을 절반으로 줄이면 파일 크기도 약 절반이 됩니다. 그러나 "좋은" 목표 비트 전송률을 결정할 수 있는 방법이 있는지 또는 가변 비트 전송률을 시도하는 데 어떤 의미가 있는지 궁금합니다.
답변1
그런데 "좋은" 목표 비트 전송률을 결정할 수 있는 방법이 있는지 궁금합니다.
좋은 목표 비트 전송률은 다음 중 하나에 해당하는 비트 전송률입니다.
- 자료를 스트리밍하는 네트워크(예: 3G 네트워크, 가정용 Wi-Fi 등)에서 지원되며 이는 계산하기가 매우 쉽습니다.
- 좋아 보인다너, 이는 매우 주관적인 척도입니다.
22Mbit/s 또는 45Mbit/s는 일반 사용자의 경우 실제로 상당히 높으며, 특히 h.264와 같이 이미 압축된 비디오의 경우 더욱 그렇습니다. 항상 감당할 수 있는 저장 용량과 품질 손실을 고려하여 비트 전송률을 "정상적인" 값으로 줄일 수 있습니다.
크기가 실제로 필요하지 않거나 편집할 처리 기능이 없는 경우 1080p 비디오의 크기를 720p로 조정할 수도 있습니다.
... 또는 가변 비트 전송률을 시도하는 데 어떤 의미가 있는 경우
일정한 비트 전송률의 요점은 전송된 비디오의 최대 비트 전송률을 제한하는 병목 현상이 있는 스트리밍 미디어 시나리오에 적응하는 것입니다. 오늘날의 멀티미디어 세계에서는 이것이 더 이상 의미가 없습니다.
비디오를 초당 일정한 양의 비트로 압축하면 기본적으로 인코더에 항상 동일한 양의 비트를 사용하여 동일한 시간 프레임을 인코딩하도록 지시하는 것입니다. 그게 최선의 접근 방식인가요? 지금쯤 짐작하셨겠지만, 그렇지 않습니다. 인용하면CRF 가이드Handbrake에서(나중에 이에 대해 다시 설명하겠습니다):
눈은 움직일 때보다 정지된 물체에서 더 많은 세부 사항을 인식합니다. 이 때문에 비디오 압축기는 사물이 움직일 때 더 많은 압축을 적용하고(더 많은 디테일 삭제) 사물이 정지할 때 더 적은 압축을 적용(더 많은 디테일 유지)할 수 있습니다. 주관적으로는 영상의 품질이 더 좋아 보입니다.
그래서하다가능할 때마다 가변 비트 전송률을 사용하는 것이 좋습니다. 일정한 비트 전송률의 비디오와 동일한 파일 크기에서도 비디오가 더 좋아 보입니다.
더욱이 대부분의 인코더 – 가장 유명한 것은x264– 자주 수행매우일정한 비트 전송률을 사용하라고 말하면 좋지 않습니다. 프레임에 얼마나 많은 비트를 소비하고 싶은지에 대한 의미에서 좀 더 "자유"를 주는 것이 좋습니다. 결국 그것은 인코더의 일이지 당신이 할 일은 아닙니다. 그리고 그것은 "일관된 품질"이라고 불립니다.
이제 충분합니다. 이것이 실제로 무엇을 의미합니까? FFmpeg를 사용하여 비디오를 인코딩한다면 이미 충분히 좋은 도구를 사용하고 있는 것입니다. 이제 x264도 설치되어 있고 두 가지 모두의 최신 버전을 사용한다면 현재 무료로 제공되는 최고의 인코더 중 하나를 사용하고 있는 것입니다. 고정된 비트 전송률로 인코딩하는 대신 x264가 지출할 금액을 선택하도록 합니다. 다음을 사용하여 이 작업을 수행합니다.일정한 비율 인자옵션.
매우 간단한 경우 이는 17에서 23 사이의 값을 설정하는 것을 의미합니다. MOV 대신 MP4를 출력 컨테이너로 선택했습니다.더 나은 도구재다중화에 사용 가능:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
값이 낮을수록 품질이 좋아지고 출력이 커집니다. 반대로 높을수록 품질은 낮아집니다. 동시에 필요한 평균 비트 전송률도 물론 줄어듭니다. 확인하다x264 인코딩 가이드에 대한 자세한 내용을 확인하세요 ffmpeg
.
이제 귀하의 임무는 다음과 같은 CRF 값을 찾는 것입니다.
- 감당할 수 있는 수준까지 전체 비트 전송률을 줄입니다.
- 품질이 너무 떨어지지 않으므로 비디오가 여전히 좋아 보입니다.
예, 여기에는 많은 인코딩과 시행착오가 포함되지만 비디오를 조정하고 인코딩할 때 이는 일상적인 업무입니다.
아, 그리고 명령줄이 마음에 들지 않는다면,수동 브레이크동일한 기능을 수행하는 무료 크로스 플랫폼 도구입니다. CRF 슬라이더도 있습니다.
답변2
HandBrake CLI를 사용해 보세요
일부 MOV 파일을 축소하고 싶었지만 비디오 옵션에 대한 모든 세부 정보를 배우고 싶지 않았습니다.핸드브레이크 CLI내가 사용한 것입니다. 사전 설정이 좋습니다.
HandBrake는 MacGui에 내장된 사전 설정과 정확히 동일한 하드 코딩된 공장 출하 시 사전 설정을 제공합니다.
내 경우에는 이것이 잘 작동했습니다.
HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"
사전 설정이 없으면 출력이 매우 작았지만 품질이 좋지 않았습니다. 나에게는 "일반" 사전 설정이 좋아 보였지만 HandBrakeCLI --preset-list
원하는 경우 를 사용하여 사용 가능한 다른 사전 설정을 보거나 모든 옵션을 직접 조정할 수 있습니다.