web-dev-qa-db-ja.com

FFmpegはmp3ファイルを完全にm4aに変換できますか?つまり、オーディオストリームとビデオストリーム(jpegカバー)の両方をコピーできますか?

私はFFmpegのZeranoeビルドを使用しています。オーディオストリームに関しては、mp3ファイルをm4aファイルに問題なく変換しますが、ffmpegが何らかの理由で認識している曲のアルバムカバーjpegを保持する方法がわかりません。

Stream #0:1: Video: mjpeg, yuvj420p, 200x200 [SAR 120:120 DAR 1:1]

output.m4aファイルに含まれています。次のコマンドラインを使用する場合:

ffmpeg.exe -i 09.mp3 -map 0 -codec:a libvo_aacenc -ab 320k -ar 44100 -ac 2 -codec:v copy output.m4a

no tag, codec not currently in the containerエラーが発生します。それでも、iTunesで処理された.m4aファイルを使用してffprobeを実行すると、次のようになります。

Stream #0:1: Video: mjpeg, yuvj420p, 350x350 [SAR 72:72 DAR 1:1]

それで、ffmpeg変換で曲のカバーもコピーする方法はありますか?

2
user182551

私に関する限り、通常AACオーディオ(.m4a)に使用するMP4コンテナのアルバムアートワークを設定するようにFFmpegに指示する簡単な方法はありません。ただし、 AtomicParsley を使用して、後でコマンドラインからアートワークを追加できます。

AtomicParsleyをインストールする方法は次のとおりです。

  • すべてのオペレーティングシステムには、 SourceForgeページ のバイナリがあります。
  • Linuxディストリビューションでは、パッケージに含まれている可能性があります。つまり、apt-get install atomicparsley
  • OS Xから Homebrew with brew install atomicparsley

ただし、最初に、アートワークを抽出する必要があります。 JPEGファイルとして:

ffmpeg -i input.mp3 artwork.jpg

次に、AtomicParsleyを使用してアルバムアートワークを追加できます。

AtomicParsley output.m4a --artwork artwork.jpg 

これは元のファイルを上書きしませんが、代わりに一時ファイルを作成します。 output-temp-15274.m4a。オリジナルを上書きする場合は、コマンドに--overWriteオプションを追加します。例:

AtomicParsley output.m4a --artwork artwork.jpg --overWrite

そしてvoilà:

6
slhck

便利なWindowsバッチファイル:

@ECHO OFF
REM Extracting album cover art and resizing to 300x300 into temporary file in PNG format
REM because FFMPEG can’t handle properly cover art directly...
ffmpeg -i %1 -an -vcodec png -vf scale=300:-1 __arttemp__.png -y
REM timeout 30

REM Converting audio to AAC LLC into .M4A container (Apple "Signed")
REM The FFMPEG does not apply LowPass filter, but there is not so 
REM much control over other parameters, but in tests was the righest
REM VBR rate (350~400 Kbps)...
ffmpeg -i %1 -acodec aac -ab 512k -ac 2 -vn %2 -y
REM timeout 30

REM Applying already cover art image extracted from original file
REM with this new "AtomicParsley"...
AtomicParsley %2 --artwork __arttemp__.png --overWrite
REM timeout 30

REM Deleting temporary cover art file...
del __arttemp__.jpg 
REM timeout 30
0

FFmpegにはこの機能に関する 未解決の問題 があります。それまでの間、カバーは TagEditor project で追加できます。たす:

tageditor -s cover=ju.jpg --max-padding 100000 -f ki.m4a

削除する:

tageditor -s cover= --max-padding 100000 -f ki.m4a
0
Steven Penny