LIBFAAC 無法對頻道重新取樣

LIBFAAC 無法對頻道重新取樣

我用來avconv將視訊檔案轉換為 MP4,但每當我嘗試使用 6 或 8 通道將檔案編碼為 2 通道時,libfaac我都會收到以下錯誤訊息:

Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

編輯:訊息的完整輸出可以在這裡找到:http://pastebin.com/UXGrBy1D

這些是我們安裝的編解碼器avconvhttp://pastebin.com/hyQrqXqW

這是我正在運行的命令:

avconv -y -i input.mp4 -vcodec libx264 -bufsize 20M -maxrate 4000k -threads 12 -same_quant -acodec libfaac -ac 2 -ar 44100 -ab 128k output.mp4

難道我做錯了什麼?

或者,有沒有其他libfaac選擇將要將 8 個通道重新採樣為 2 個通道?

我需要能夠在 ubuntu 12.04 伺服器上透過命令列執行此操作。

答案1

首先,如果您還沒有這樣做,請查看這個 ffmpeg h.264 編碼指南- 它也適用於 avconv,只需將每個實例變更ffmpegavconv。另外,考慮升級到更新版本的 avconv 或 ffmpeg - 因為你使用的是 Ubuntu,所以你可以使用這個購電協議, 或者自己編譯一下(最後一個選項將使您能夠訪問fdk_aac,這是比 FAAC 更好的 AAC 編碼器)。

除非您確切知道自己在做什麼並且有特定的原因,否則您可能不應該使用-bufsize 20M -maxrate 4000k -threads 12 -same_quant.事實上,根據 Pastebin 中的輸入,您可能應該只使用-codec:v copy,它不會接觸視訊串流。

至於你所說的問題......我不認為 libfaac 是你的問題。看這裡(來自你的貼箱):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/var/www/up/up50eefce404e4f.mp4\':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2007-12-08 19:28:08
  Duration: 00:46:47.64, start: 0.000000, bitrate: 308 kb/s
    Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 111 kb/s
    Metadata:
      creation_time   : 2007-12-08 19:28:08
    Stream #0.1(und): Video: h264 (Baseline), yuv420p, 320x240 [PAR 1:1 DAR 4:3], 195 kb/s, 11.99 fps, 11.99 tbr, 11988 tbn, 23976 tbc
    Metadata:
      creation_time   : 2007-12-08 19:28:11

FFmpeg 認為您的輸入音訊是立體聲。很久以後:

Input stream #0:0 frame changed from rate:44100 fmt:s16 ch:2 to rate:44100 fmt:s16 ch:8
Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

視訊串流也拋出了大量錯誤。我懷疑您的輸入可能已損壞。

它是可能的以下命令將起作用:

avconv -ac 8 -i input.mp4 -c:v copy -c:a libfaac -b:a 128k -ac 2 output.mp4

-ac設定音訊通道數:如果AAC 流沒有損壞,容器格式可能只是向 avconv 提供了不正確的數據,並且放在-ac 8輸入之前會覆蓋 MP4 容器提供的設置(放在-ac 2輸出之前會告訴 ffmpeg 輸出到 2 個音頻通道) 。

相關內容