今朝オーディオブックを聴きたかったのですが、問題はipodで聴きたいということですが、m4b形式ではどこにも見つからず、mp3だけでした。
長いグーグル検索の後、これを行う方法に関するアイデアを含む
投稿が見つかりましたが、通常の実装はありません。 私は自分の考えや決定をこの投稿の著者と共有することができましたが、彼はしばらくして、何らかの理由でそれらをこすりました。
一番下の行は、.m4bはmp4コンテナー内のAACファイルですが、ブックマークが付けられ、名前が変更されていることです。 したがって、aacのすべてのmp3を追い越し、quicktime形式のチャプターファイルを生成してから、すべてをmp4コンテナーに入れる必要があります。
Linuxでは、通常のAACエンコーダーは
NeroAacEncoderのみです。 コードは閉じられていますが、無料で動作します。
ffmpegに代わるものがありますが、非常に生です。
ffmpegにもalacエンコーダーとデコーダーがありますが、ビットレートはまったく制御されません-10メートルのmp3は100 MBのモンスターに変わります。
最初は、
gpacパッケージに含まれている
MP4Boxを使用してコンテナに詰め込むことが計画されていました。 また、チャプターファイルのタグ付けと処理に
libmp4v2を使用します(trunk-r355スナップショット
を使用するだけで、多くのバグ修正があり、安定版はまだ正しく動作しません)。
そして、MP4Boxには1つのコンテナに詰め込むのに制限があることが判明しました-20個のファイル(理由と理由は不明です)。 はい。このアプローチでは、チャプターファイルを作成する必要があります。 その結果、この
スクリプトには140行といくつかの問題がありました。
少し後で、mp3をwavに転送し、次にNeroAacEncを使用してまとめて転送することで、チャプターを生成する方法を知っており、着信ファイルの数に制限がない、はるかに最適なソリューションが見つかりました。 タグはNeroAacTag(バンドルされている)によって1行に配置できますが、これはより正確で正確になるとの意見があります。 確かに、これは、neroブックマークをquicktimeブックマークに変換するためのmp4chaps(libmp4v2から)の使用を排除しません。
UPD:これはかなり明白ですが、それでも-ファイルには正しい名前と番号が付けられている必要があります。そのため、 `ls -1`はそれらを正しい順序で表示します。 1..12ではなく、たとえば01..12です。
または、
xn__p2aが正しく指摘
したように 、「ls -1v」を使用します(出力1..12用)。
もちろん、ネジはaacではなく、後で殺す必要がある巨大なwavであり、fifoを介して(最初のスクリプトのように)多少エレガントになりましたが、すべてがずっとシンプルになりました。
UPD: mplayerを使用してmp3からwavを取得するのはやり過ぎだという意見があります。
いくつかの選択肢:
ffmpeg -i input.mp3 output.wav mpg123 -w output.wav input.mp3 lame -decode input.mp3 output.wav
新しく作成されたm4bファイルでは、チャプターの名前は「Chapter 01」タイプになりますが、ブックマークファイルを編集することで簡単に修正できます。
編集方法および編集方法-選択。
gtkpod-1.0.0とlibgpod-0.8.0は第5世代のipod nanoをサポートすることを学んだので、それらを使用します。
UPD: xn__p2aとの長い対応の後、スクリプトの3番目のバージョンが登場しました。
このオプションは、よりエレガントであると認識されています。 0B fifoをクリーニングするだけです:
`find -maxdepth 1 -type p -exec rm {} +`
PS: mplayerの排出ガスをneroAacEncの入力にラップできないのは残念です。そうしないと、彼はそれらを別々のファイルに取り込んでしまいます(そうしないと、自動マーキングは行われません)。PPS:システム全体のlibmp4v2トランク335をインストールし
ないでください -このlibに応じて1つから2つ飛び去り、gtkpodはm4a \ m4bファイルを理解する方法を忘れます。
PPPS:個々のaacを個別のmp4にラップし、ipodで音楽をロスレスにしたい場合はm4aに名前を変更できます。