2013-03-10 3 views
0

MKV 나 AVI 같은 비디오 파일을 MP4로 바꾸고 웹 스트리밍에서 그들을 준비하는 스크립트를 작성하고 있습니다. 내 작품에 H.264 및 AAC 코덱을 사용하고 싶습니다.FFmpeg가 불필요한 muxing을합니다

지금까지 내 명령은 다음과 같습니다 그러나

ffmpeg -i input.mkv -vcodec h264 -acodec aac -ab 128k -ac 2 -strict -2 output.mp4 

, 이미 코덱이 여전히 그것을 멀티플렉서 H.264의 경우, 그것은 말한다 : (H264 -> libx264을).

'-vcodec copy'로 바꾸면 코덱이 H.264 일 때 속도가 훨씬 빨라지지만 입력 파일에 다른 코덱이 있으면 코덱이 변경되지 않습니다.

FFmpeg가 코덱이 거의 동일하므로 비디오 스트림을 멀티플렉싱하지 않지만 원본이 H.264가 아닌 경우 비디오 코덱을 변경하는 방법이 있습니까?

+1

ffmpeg에 전달하기 전에 비디오를 분석해야합니다. 이미 h264이면 멀티플렉서, 트랜스 코딩하지 않은 경우. – BlueVoodoo

답변

0

No. FFmpeg는 비트 스트림 또는 인 코드 만 복사 할 수 있습니다. 특정 코덱을 유지할 것인지를 추측 할 수 없습니다. 파일 정보를 구문 분석 한 다음 복사할지 여부를 결정해야합니다. 다음과 같습니다 수행하는 방법의

몇 가지 예 : 기본적으로 MKV to MP4 transcoding script issues

, 당신은 (이 @evilsoup에서 뻔뻔한 플러그)이 작업을 수행 할 수 있습니다 :

ffprobe input.mkv 2>&1 | sed -n '/Video:/s/.*: \([a-zA-Z0-9]*\).*/\1/p' | sed 1q' 

이 것 인 H.의 출력 h264 264 비디오 스트림.

사소한 팁 : 원하는 정확한 인코더를 지정하는 데 익숙해 져보십시오. h264은 실제로 FFmpeg 용 인코더가 아닙니다. 기본값은 libx264입니다. 따라서 -c:v libx264을 사용하십시오.
한 가지 더 : aac은 FFmpeg의 내장 AAC 인코더입니다. libfdk_aac 또는 libfaac과 같은 타사 인코더는 VBR 인코딩 모드를 제공하며 일반적으로 aac보다 우수한 품질을 제공합니다.

+0

나는 수표를 써야 할까 봐 걱정했다. 그러나 팁을위한 많은 감사합니다!! – Mattis

관련 문제