MkvをiTunes互換のmp4に正常に再多重化するffmpegコマンドがありました。ただし、言語に関係なく、最初のオーディオストリームのみが必要でした。すべてのオーディオストリーム、または少なくとも英語のストリームをリマックスしたいと思います。 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
[libvo_aacenc @ 037dfb00] Unable to set encoding parameters
libvo_aacenc
はおそらく5.1チャネルをエンコードできず、一般的に貧弱なエンコーダーです。 aac
(-strict experimental
を使用)、libfaac
、またはlibfdk_aac
(ffmpegがそれをサポートするように構成されている場合)を使用して、チャネルを保持できます。 libvo_aacenc
を使用する必要がある場合は、-ac 2
を追加するか、オーディオフィルターを使用して出力を2つのチャネルに変更できます。
オーディオの「品質」を宣言するのはおそらく最も簡単です。たとえば、libfaac
の場合は-q:a 100
、-vbr 5
の場合はlibfdk_aac
です。それ以外の場合は、-b:a
でオーディオのビットレートを選択できますが、ビットレートはすべてのチャネルで共有されることに注意してください。ステレオ出力の場合よりも高い値です。 libvo_aacenc
は-b:a
のみを受け入れます。
デフォルトでは、ffmpegは入力から「最良の」ビデオ、オーディオ、および字幕ストリームを選択し、1つのビデオ、1つのオーディオストリーム、および1つの字幕ストリームを含む出力を生成します。 slhckが述べたように、-map 0
を追加して、このデフォルトをオーバーライドし、入力0
(最初の入力)からのすべてのストリームを含めます。詳細と「最良」の説明については、ffmpegドキュメントの ストリーム選択 を参照してください。
参照: