FFMPEG를 사용하여 FLV를 MP4로 변환하고 품질 유지

FFMPEG를 사용하여 FLV를 MP4로 변환하고 품질 유지

iOS 기기에서 재생하기 위해 ffmpeg를 사용하여 flv 파일을 mp4로 변환하려고 하는데 변환된 비디오의 품질이 원본보다 훨씬 나쁩니다.

내가 사용하는 명령은 다음과 같습니다.

ffmpeg -i input.flv -ar 22050 output.mp4

누군가 flv에서 mp4로 변환하는 데 가장 적합한 설정을 제공할 수 있다면 정말 감사하겠습니다.

답변1

FLV에 사용된 코덱에 따라 mp4 컨테이너에 다시 포장하기만 하면 문제가 해결될 수도 있습니다. H.264비디오 MPEG4 simple profile와 오디오가 필요합니다 AAC. 다음을 사용하여 소스 파일에 대한 일부 정보를 찾을 수 있습니다.ffmpeg -i input.flv

단순히 H.264/MPEG4 Simple + AAC를 사용하는 것만으로도 충분한지, 아니면 지원되는 코덱에 대한 특정 옵션이 있는지 잘 모르겠습니다. 테스트하는 것은 충분히 쉽습니다:

사용해 보세요

ffmpeg -i input.flv -c copy -copyts output.mp4

-copyts이다 copy timestamps. 오디오 동기화에 도움이 됩니다.

그래도 작동하지 않으면 오디오 및 비디오 코덱을 강제 적용해 보십시오. 그러면 파일이 다시 인코딩됩니다.

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4

오디오만 변경하거나 비디오 코덱만 변경하고 싶다면 유지하고 싶은 코덱을 사용 -c:a copy하거나 복사하면 됩니다.-c:v copy

트랜스코딩 시 사용되는 비디오 품질을 향상시키려면 더 낮은 CRF 값(예: 18 이하)을 사용할 수 있습니다. 더 작은 파일을 얻으려면 더 높은 CRF를 사용하십시오. 그러나 이렇게 하면 품질이 저하된다는 점에 유의하십시오.

오디오 품질을 향상시키려면 더 높은 비트 전송률(위 예에서는 160k)을 선택하십시오.

오디오 품질과 비디오 품질 모두 소스 품질에 따라 결과가 달라집니다. 원본 소스로 할 수 있는 작업에는 한계가 있다는 점을 기억하세요. 기껏해야 소스와 동일한 품질을 얻을 수 있을 것입니다. 다양한 품질 수준 및/또는 비트 전송률을 실험해 보는 것은 확실히 가치 있는 일입니다.

FFMPEG aac 인코딩에 대한 추가 정보(저는 ffmpeg 사이트에 설명된 "네이티브" 인코더를 언급해 왔습니다.)


질문에 제안된 ffmpeg 명령과 관련하여 ...

-ar오디오 샘플링 속도를 나타냅니다. 이 매개변수를 전혀 조작하지 않는 것이 좋습니다. 오디오 인코딩으로 재생하려면 비트 전송률( -b:a 160k위)을 조정하고 인코더가 이에 따라 수행할 작업을 선택하도록 합니다.

그러나 배경의 경우 CD 품질은 44100Hz 샘플링입니다. 일반적인 비디오는 48000Hz를 사용합니다.

원래 질문의 예에서 22050은 CD 품질 샘플 속도의 1/2이라는 점을 알 수 있습니다. CD 자료를 다운컨버팅하는 경우 이는 좋은 선택이 될 것입니다. 48KHz 소스로 시작하는 경우 대신 24Khz를 사용합니다. (그러나 다시 한 번 말씀드리지만, 목표 비트 전송률을 선택하고 필요한 경우 인코더가 샘플링 속도를 변경하도록 하는 것이 좋습니다.)

ffmpeg -i위에서 제안한 명령을 통해 원본 자료의 샘플 속도에 대한 정보를 얻을 수 있습니다 .

관련 정보