FFMPEGカバー画像を含むFLACをOPUSに変換

FFMPEGカバー画像を含むFLACをOPUSに変換

FLACをOPUSファイルに変換する大規模なスクリプトがありますが、特定の問題で問題が発生しています。カバー画像を変換してコピーしようとするとエラーが発生します。プロローグ、変換を処理するスクリプト部分は次のとおりです。

find $DIRECTORY -type f \
    \( -iname "*${EXTENSIONS[0]}" $(if [ ${#EXTENSIONS[@]} -gt 1 ]; \
    then printf -- '-o -iname *%s ' "${EXTENSIONS[@]:1}"; fi) \) \
    -print0 | \
    xargs -0 -P $THREADS -I {} \
        ffmpeg -i "{}" \
        $(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
        -map 0:a \
        -c:a libopus -map_metadata 0 -map_metadata:s:a 0:s:a \
        -b:a $BITRATE \
        -map 0:v \
        -c:v copy -map_metadata 0 -map_metadata:s:v 0:s:v -disposition:v:1 attached_pic \
        -y "{}.opus"

次のエラーが発生します。

Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> opus (libopus))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[opus @ 0x562a9db664c0] Unsupported codec id in stream 1
[out#0/opus @ 0x562a9db64580] Could not write header (incorrect codec parameters ?): Invalid argument
[aost#0:0/libopus @ 0x562a9db68540] Error initializing output stream: 

しかし、これはここで動作します。

ffmpeg -i "{}" \
  $(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
  -map 0:a \
  -c:a libopus -map_metadata 0 -map_metadata:s:a 0:s:a \
  -b:a $BITRATE \
  -y "{}.opus"

そしてこれはここにあります:

ffmpeg -i "{}" \
  $(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
  -map 0:a \
  -map_metadata 0 -map_metadata:s:a 0:s:a \
  -b:a $BITRATE \
  -map 0:v \
  -c:v copy -map_metadata 0 -map_metadata:s:v 0:s:v -disposition:v:1 attached_pic \
  -y "{}.mp3"

唯一の違いは、後者は画像をコピーしないか、作品の代わりにMP3を出力することです。したがって、ffmpegコマンド自体は正確でなければなりません。これは、ビデオストリーム(OPUSとMP3に)が含まれていないと画像がコピーされないためです。

これは非常に奇妙な動作であり、今すぐどのように修正することができるのか分かりません。この内容はどこかに文書化されていますか?リボプス問題のようですが、なぜリボプスは映像まで見て、そうでなければなぜエラーが発生するのでしょうか?

PS:ffprobeが役に立つかもしれないことに気づきました。サムネイルを含むOPUSファイルの場合(Kid3で製作)と同じ曲のflacファイルの場合

PPS:誰かが私を凌駕する前に、はい。私はforループを使ってこれを行うことができます。どちらも可能な便利なスクリプトではなく挑戦を望んでいます。はい、手動で行うことができます。毎月少なくとも1枚のアルバムを購入します。私は手動でJelyfinにflacを追加したくありません。

ベストアンサー1

現在、FFMPEGはOGGコンテナのカバーアートをサポートしていません。ogg / opusメタデータに含まれるアルバムカバーアート画像の作成をサポート - コメント11

パラメータを使用して、画像をカバーアートとして手動で追加できます-metadata:s:a METADATA_BLOCK_PICTURE=...

手動の解決方法については、以下を参照してください。OGGオーディオファイルに芸術的なカバーを追加するスーパーユーザー

おすすめ記事