모든 오디오 트랙을 AAC로 변환하는 동안 FFmpeg MKV에서 MP4 remux로


3

mkv를 iTunes 호환 mp4로 성공적으로 remux하는 ffmpeg 명령이 있습니다. 그러나 언어에 관계없이 첫 번째 오디오 스트림 만 사용했습니다. 모든 오디오 스트림 또는 최소한 영어 스트림을 remux하고 싶습니다. 또한 5.1을 유지해야합니다.

여기까지 내가 가진 것입니다 :

ffmpeg -i "input.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "output.mp4"

다음과 같은 오류가 발생합니다.

출력 스트림 # 0 : 1을 위해 인코더를 여는 동안 오류가 발생했습니다. bit_rate, rate, width 또는 height와 같은 잘못된 매개 변수

전체 출력은 다음과 같습니다.

C:\Program Files\ffmpeg\bin>"C:\Program Files\ffmpeg\bin\ffmpeg.exe" -i "E:\movies\A film.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "E:\iTunes\Automatically Add to iTunes\A film.mp4"
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:21:26 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enab
le-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libop
encore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libop
enjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheo
ra --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-lib
vpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52.  9.100 / 52.  9.100
  libavcodec     54. 77.100 / 54. 77.100
  libavformat    54. 37.100 / 54. 37.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.102 /  3. 23.102
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 17.101 /  0. 17.101
  libpostproc    52.  2.100 / 52.  2.100
Input #0, matroska,webm, from 'E:\movies\Pitch Perfect.mkv':
  Duration: 01:52:07.11, start: 0.000000, bitrate: 9765 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p, 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Stream #0:2(eng): Subtitle: subrip
[libvo_aacenc @ 037dfb00] Unable to set encoding parameters
Output #0, mp4, to 'E:\iTunes\Automatically Add to iTunes\Pitch Perfect.mp4':
    Stream #0:0(eng): Video: h264, yuv420p, 1920x1040 [SAR 1:1 DAR 24:13], q=2-31, 23.98fps, 90k tbn, 1k tbc (default)
    Stream #0:1(eng): Audio: aac, 48000 Hz, 5.1, s16, 128 kb/s (default)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dca -> libvo_aacenc)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height

예, libfaac대신 시도해 libvo_aacenc보고 작동하는지 확인하십시오. 그렇지 않은 경우 질문을 편집 하고 해당 코드도 추가하십시오. 가능하면 현장 코드를 여기에 포함하십시오. 조금 길어도 걱정하지 마십시오.
slhck

안녕하세요, 팁 주셔서 감사합니다. 전체 uncut 명령은 pastebin.com/RAraHr7h에서 찾을 수 있습니다 . 실제로 여러 스트림이있는 예제 파일이 없으며 테스트 할 때 까지이 작업을 수행하기를 바랐습니다.
Simon Stevens

당신은 libfaac대신 시도 했습니까 ? 여러 스트림을 하나의 출력으로 매핑하는 경우 FFmpeg는 -map 0옵션에 추가하지 않으면 자동으로 수행해야합니다 .
slhck

답변:


4

[libvo_aacenc @ 037dfb00] Unable to set encoding parameters

libvo_aacenc아마도 5.1 채널을 인코딩 할 수 없으며 일반적으로 엔코더가 좋지 않습니다. 당신은 사용할 수 있습니다 aac(과 -strict experimental), libfaac또는 libfdk_aac(귀하는 FFmpeg가 구성된 경우를 지원하기는) 당신의 채널을 유지하기 위해. 당신이 사용해야하는 경우 libvo_aacenc에는 추가 할 수 있습니다 -ac 2또는 두 개의 채널 출력을 변경하는 오디오 필터를 사용합니다.

오디오에 대해 "품질"을 선언하는 것이 -q:a 100for libfaac또는 -vbr 5for 와 같이 가장 쉬운 방법 일 libfdk_aac수 있습니다. 그렇지 않으면을 사용하여 오디오 비트 전송률을 선택할 수 -b:a있지만 비트 전송률은 모든 채널에서 공유되므로 스테레오보다 높은 값을 제공합니다. 산출. libvo_aacenc만 받아들 -b:a입니다.

기본적으로 ffmpeg는 입력에서 "최고의"비디오, 오디오 및 자막 스트림을 선택하여 잠재적으로 하나의 비디오, 하나의 오디오 스트림 및 하나의 자막 스트림이있는 출력을 생성합니다. -map 0slhck에서 언급했듯이이 기본값을 무시하고 입력 0(첫 번째 입력)의 모든 스트림을 포함 시키려면을 추가하십시오 . 자세한 내용 및 "best"에 대한 설명은 ffmpeg 설명서에서 스트림 선택 을 참조하십시오 .

참조 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.