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
위에서 제안한 명령을 통해 원본 자료의 샘플 속도에 대한 정보를 얻을 수 있습니다 .