
mkv를 iTunes 호환 mp4로 성공적으로 재다중화하는 ffmpeg 명령이 있었습니다. 그러나 언어에 관계없이 첫 번째 오디오 스트림만 사용했습니다. 모든 오디오 스트림 또는 최소한 영어 스트림을 리먹싱하고 싶습니다. 5.1도 유지해야 합니다.
지금까지 내가 가진 것은 다음과 같습니다.
ffmpeg -i "input.mkv" -y -f mp4 -vcodec copy -acodec libvo_aacenc -ac 6 "output.mp4"
다음 오류가 발생합니다.
출력 스트림 #0:1에 대한 인코더를 여는 중 오류가 발생했습니다. 비트 전송률, 속도, 너비 또는 높이와 같은 매개변수가 잘못되었을 수 있습니다.
전체 출력은 다음과 같습니다.
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
답변1
[libvo_aacenc @ 037dfb00] Unable to set encoding parameters
libvo_aacenc
아마도 5.1 채널을 인코딩할 수 없으며 일반적으로 인코더가 좋지 않습니다. aac
(with -strict experimental
), libfaac
또는 libfdk_aac
(ffmpeg가 이를 지원하도록 구성된 경우)를 사용하여 채널을 보존할 수 있습니다 . 사용해야 하는 경우 오디오 필터를 libvo_aacenc
추가하거나 -ac 2
사용하여 출력을 두 채널로 변경할 수 있습니다.
-q:a 100
for libfaac
또는 -vbr 5
for 와 같이 오디오의 "품질"을 선언하는 것이 가장 쉬울 것입니다 libfdk_aac
. 그렇지 않으면 으로 오디오 비트 전송률을 선택할 수 있지만 -b:a
비트 전송률은 모든 채널에서 공유되므로 스테레오에 비해 더 높은 값을 지정해야 합니다. 산출. libvo_aacenc
만 받아들입니다 -b:a
.
기본적으로 ffmpeg는 입력에서 "최상의" 비디오, 오디오 및 자막 스트림을 선택하여 잠재적으로 하나의 비디오, 하나의 오디오 스트림 및 하나의 자막 스트림이 포함된 출력을 생성합니다. -map 0
slhck가 언급한 대로 이 기본값을 재정의하고 입력 0
(첫 번째 입력) 의 모든 스트림을 포함하려면 을 추가하세요 . 보다스트림 선택자세한 정보와 "최고"에 대한 설명은 ffmpeg 문서에서 확인하세요.
다음도 참조하세요.