「Flac を Mp3 に変換」の版間の差分
(カテゴリ変更) |
Kusanaginoturugi (トーク | 投稿記録) (→スクリプト: == Packages == を挿入(英語版より)) |
||
6行目: | 6行目: | ||
この記事ではコマンドラインやスクリプトツールを使って FLAC と MP3 の音声ファイルを相互に変換する方法、そして同じことをグラフィカルに行うためのユーティリティを紹介しています。 |
この記事ではコマンドラインやスクリプトツールを使って FLAC と MP3 の音声ファイルを相互に変換する方法、そして同じことをグラフィカルに行うためのユーティリティを紹介しています。 |
||
+ | |||
+ | == Packages == |
||
+ | |||
+ | * {{AUR|whatmp3}} - A small Python script that accepts a list of directories containing FLAC files as arguments and converts them to MP3 with the specified options. |
||
+ | * {{AUR|flac2all}} - Audio converter of FLAC to either Ogg Vorbis or MP3 retaining all tags and metadata. |
||
+ | * {{AUR|flac2mp3-bash}} - Bash script to convert Flac to Mp3 easily. |
||
+ | * {{AUR|audiotools}} - Transcode between different formats and keep tags with {{ic|track2track}}, can encode from CDDA with {{ic|cdda2track}}, has an optional Ncurses GUI. |
||
== スクリプト == |
== スクリプト == |
2021年7月25日 (日) 16:35時点における版
関連記事
この記事ではコマンドラインやスクリプトツールを使って FLAC と MP3 の音声ファイルを相互に変換する方法、そして同じことをグラフィカルに行うためのユーティリティを紹介しています。
目次
Packages
- whatmp3AUR - A small Python script that accepts a list of directories containing FLAC files as arguments and converts them to MP3 with the specified options.
- flac2allAUR - Audio converter of FLAC to either Ogg Vorbis or MP3 retaining all tags and metadata.
- flac2mp3-bashAUR - Bash script to convert Flac to Mp3 easily.
- audiotoolsAUR - Transcode between different formats and keep tags with
track2track
, can encode from CDDA withcdda2track
, has an optional Ncurses GUI.
スクリプト
以下の2例では、カレントディレクトリにある FLAC ファイルを LAME MP3 エンコーダで変換します。どちらのスクリプトもID3 タグを元の FLAC ファイルから作成される MP3 ファイルに移して、MP3 V0 にエンコードします。V0 では可変ビットレートになり、大抵は 220 から 260 kbps の間になります。V0 ファイルの音声は透過的であり、元の音源 (CD あるいはロスレス) と変換後のファイルの違いを聴き分けることはできません。ただし、ファイルのサイズはずっと小さくなります。V0 などの LAME のスイッチや設定に関する詳細情報は Hydrogenaudio LAME Wiki を読んでください。
元の .flac
ファイルは変更されず、同一のディレクトリに .mp3
が作成されます。作業ディレクトリに存在する *.flac
以外の拡張子のファイル (.nfo
, 画像, .sfv
など) は無視されます。
FFmpeg を使う
システムに FFmpeg がインストールされている場合、大抵 flac や lame パッケージもインストールされています。FFmpeg にはエンコードとデコードのあらゆる機能が組み込まれています。
#!/bin/bash for a in ./*.flac; do ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}" done
並列バージョン
LAME はシングルスレッドのエンコーダなので、複数のファイルを同時にマルチコアでエンコードすることで素早く変換することが可能です。並列処理するには、parallel パッケージをインストールして、以下のコマンドを使ってください:
parallel ffmpeg -i {} -qscale:a 0 {.}.mp3 ::: ./*.flac
再帰的増分的に変換を行うための Makefile
make -j$(nproc)
で並列して変換が行えるというだけでなく、既に変換済みのファイルが存在する場合、もう一度変換することがないというメリットがあります:
SOURCE_DIR := flacdir XCODE_MP3_DIR := mp3dir # NOTE: see lame -v option for quality meaning XCODE_MP3_QUALITY := 0 # Find .flac sources and determine corresponding targets flac_srcs := $(shell find $(SOURCE_DIR) -type f -name '*.flac') flac_2_mp3_tgts := $(patsubst $(SOURCE_DIR)/%.flac, $(XCODE_MP3_DIR)/%.mp3, \ $(flac_srcs)) .PHONY: all mp3 flac_2_mp3 all: mp3 mp3: flac_2_mp3 flac_2_mp3: $(flac_2_mp3_tgts) $(XCODE_MP3_DIR)/%.mp3: $(SOURCE_DIR)/%.flac @echo "converting -> $@" @mkdir -p "$(@D)" @ffmpeg -v error -i "$<" -codec:a libmp3lame \ -q:a $(XCODE_MP3_QUALITY) "$(@)"
FFmpeg を使わない
何らかの理由で FFmpeg がインストールされていない・する気もないという場合、flac と lame をインストールしてください。以下では、flac に付属しているメタデータユーティリティを使用してタグの情報を取得して lame に手渡しています。一度 FLAC を WAVE にデコードしてから MP3 エンコーダにかけているので多少変換にかかる時間が多くなります。
#!/bin/bash for a in *.flac; do # give output correct extension OUTF="${a[@]/%flac/mp3}" # get the tags ARTIST=$(metaflac "$a" --show-tag=ARTIST | sed s/.*=//g) TITLE=$(metaflac "$a" --show-tag=TITLE | sed s/.*=//g) ALBUM=$(metaflac "$a" --show-tag=ALBUM | sed s/.*=//g) GENRE=$(metaflac "$a" --show-tag=GENRE | sed s/.*=//g) TRACKNUMBER=$(metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g) DATE=$(metaflac "$a" --show-tag=DATE | sed s/.*=//g) # stream flac into the lame encoder flac -c -d "$a" | lame -V0 --add-id3v2 --pad-id3v2 --ignore-tag-errors \ --ta "$ARTIST" --tt "$TITLE" --tl "$ALBUM" --tg "${GENRE:-12}" \ --tn "${TRACKNUMBER:-0}" --ty "$DATE" - "$OUTF" done
再帰的に変換
上記のスクリプトを拡張して作業ディレクトリの全てのサブディレクトリで再帰的に変換を行うことができます。最初の行 (for .... do
) を以下のように置き換えてください:
find -type f -name "*.flac" -print0 | while read -d $'\0' a; do
使用方法
使いやすいように、スクリプトを PATH
に追加してください。ターミナルを開いて、変換したい FLAC ファイルがあるディレクトリに cd
して、flac2mp3
(あなたがスクリプトに付けた名前) を実行します。ターミナルにデコード・エンコードのプロセスが詳細に表示され、2〜3分は変換に時間がかかります。完了したら、新しい MP3 を mv *.mp3
でどこか好きなところに移動してください。
パッケージ
- whatmp3AUR - 引数として FLAC ファイルが存在するディレクトリのリストを受け取って指定したオプションで MP3 に変換する Python スクリプト。
- flac2allAUR - FLAC から Ogg Vorbis や MP3 に変換するオーディオコンバータ。タグやメタデータは全て移植される。
- flac2mp3-bashAUR - Flac を Mp3 に簡単に変換できる Bash スクリプト。
グラフィカルアプリケーション
- SoundConverter — GNOME デスクトップの音声変換専用のユーティリティ。GStreamer を使用。GNOME Audio Profiles を利用することができマルチスレッド変換が可能です。動画から音声を抽出することもできます。
- soundKonverter — 様々な音声操作プログラムの Qt グラフィカルフロントエンド。変換やリッピングなどの音声操作が行えます。
- WinFF — 強力なマルチメディアコンバータである FFmpeg の GUI。音声変換の専用プロファイルを備えています。
参照
- https://www.xiph.org/flac/
- wikipedia:ja:FLAC
- http://lame.sourceforge.net/
- http://wiki.hydrogenaudio.org/index.php?title=Flac - More information on FLAC.