FFmpeg MKV 到 MP4 重新混合,同時將所有音軌轉換為 AAC

FFmpeg MKV 到 MP4 重新混合,同時將所有音軌轉換為 AAC

我有一個 ffmpeg 命令,可以成功地將 mkv 重新混合到 iTunes 相容的 mp4。然而,無論語言如何,它只獲取第一個音訊串流。我想重新混合所有音訊串流,或至少是英語串流。我還需要保留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(與-strict experimental)、libfaaclibfdk_aac(如果您的 ffmpeg 配置為支援它)來保留您的通道。如果必須使用,libvo_aacenc您可以新增-ac 2或使用音訊濾波器將輸出變更為兩個通道。

聲明音訊的「品質」可能是最簡單的,例如-q:a 100forlibfaac-vbr 5for libfdk_aac,否則您可以使用 選擇音訊位元率-b:a,但請注意,位元率將在所有通道之間共享,因此給它一個比立體聲更高的值輸出。libvo_aacenc只接受-b:a.

預設情況下,ffmpeg 將從您的輸入中選擇「最佳」視訊、音訊和字幕串流,從而產生可能包含一個視訊、一個音訊串流和一個字幕串流的輸出。-map 0正如 slhck 提到的那樣,添加以覆蓋此預設值並包含來自輸入0(第一個輸入)的所有流。看流選擇在 ffmpeg 文件中了解更多資訊和「最佳」的解釋。

另請參閱:

相關內容