2015年2月9日月曜日

MM: ハイレゾ音源からCDを作成: コマンドライン編(ffmpeg を使う場合)

今回は,マルチチャンネルのハイレゾ音楽データを,ffmpeg をコマンドラインで使って,CD形式(2ch/44.1KHz/16bits)の wav データに変換してみる.

以前の記事「MM: ハイレゾ音源からCDを作成(データは PCM, OS はwindows の場合)」で,シェアウェアの xrecode II を使ってハイレゾ・マルチチャネルの flac を CD 形式の wav に変換する方法を述べた.今回はフリーウェアの ffmpeg を使う.やってみれば別に難しいものでもないですよ.
  1. マルチチャンネル・ハイレゾ音楽データの入手
  2. ffmpeg の入手とインストール
  3. マルチチャンネル・ハイレゾ→CD形式 wav への変換
  4. 補足
ずばり要約すると,
ffmpeg.exe -i example1.flac -bits_per_raw_sample 16 -ac 2 -ar 44100 example1.wav
で変換できるという話である.

では,行ってみよう.


1. マルチチャンネル・ハイレゾ音楽データの入手

すでに持っていればそれでよし.手持ちがなくて適当なサンプルがほしい場合,LINN Records のダウンロードページで,「FLAC Studio Master Surround 5.1 channel test」を選んでダウンロード.ファイル名は surround88.flac である.ここでは,
c:\work\surround88.flac
のように置いたとする.

2. ffmpeg の入手とインストール

Windows では,Zeranoe のビルドがメジャーなようだ.Zeranoe FFmpeg のビルドページで,64-bit (環境によっては32-bit) の static ビルドを選んでおけば間違いないだろう.ダウンロードしよう.
ffmpeg-20150209-git-c0367f7-win64-static.7z
のようなファイルが得られる.なお,Zeranoe のページは,ffmpeg 公式のダウンロードページから windows builds を選ぶと行ける.

ファイルは 7zip のアーカイブなので,解凍できない場合は 7zip 公式から 7zip をダウンロード&インストールすればよい.7z 形式のほか,lha や rar にも対応していて便利なので,筆者のデフォルト圧縮解凍ツールになっている.

インストーラは特になく,単に圧縮ファイルを解凍すればよい.ffmpeg-ごにょごにょ-static.7z を解凍すると,

ffmpeg-ごにょごにょ-static\
bin\
doc\
licenses\
presets\
ff-prompt.bat
README.txt

という内容が展開される.ffmpeg-ごにょごにょ-static フォルダを,どこかよい場所に移動して(フォルダ名を変更した方が便利という人は変更して)おこう.ここでは,
c:\ffmpeg\bin\ffmpeg.exe
c:\ffmpeg\ff-prompt.bat
のように移動&フォルダ名変更したとする.

3. マルチチャンネル・ハイレゾ→CD形式 wav への変換

コマンドプロンプトを開いて,c:\work に移動し,ffmpeg をオプション・入力ファイル・出力ファイルを指定して実行すれば変換できる.具体的には以下のようになる.
  • コマンドプロンプトを開く.
    • windows 7 なら,スタート→すべてのプログラム→アクセサリ→コマンドプロンプト
    •  あるいは,ファイル名を指定して実行→cmd→Enterキー
  • 次のようになる.
Microsoft Windows [Version 6.1.7601]Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\だれそれ>
  • データのあるディレクトリに移動する.
C:\Users\だれそれ>cd c:\work

c:\work>
  • ffmpeg で変換する.
c:\work>c:\ffmpeg\bin\ffmpeg.exe -i surround88.flac -bits_per_raw_sample 16 -ac 2 -ar 44100 surround88.wav

オプション順を変えるとエラーが出ることがあるように思う.とりあえず上記の順で動いた.
 -i surround88.flac: 入力ファイル名
-bits_per_raw_sample 16: 量子化ビット数.CD は16ビット
-ac 2: チャンネル数.CD はふつう 2ch のステレオ
-ar 44100: サンプリング周波数.CD は 44.1KHz = 44100Hz
surround88.wav: 出力ファイル名.好きな名前にされたし.拡張子で出力形式を自動決定しているようだ.
  • 実行すると,以下のようになる.(強調は筆者による)
ffmpeg version N-69659-gc0367f7 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      54. 18.100 / 54. 18.100
  libavcodec     56. 21.102 / 56. 21.102
  libavformat    56. 19.100 / 56. 19.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5.  9.104 /  5.  9.104
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, flac, from 'surround88.flac':
  Duration: 00:00:56.34, start: 0.000000, bitrate: 999 kb/s
    Stream #0:0: Audio: flac, 88200 Hz, 5.1, s32 (24 bit)
Output #0, wav, to 'surround88.wav':
  Metadata:
    ISFT            : Lavf56.19.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16
 (24 bit), 1411 kb/s
    Metadata:
      encoder         : Lavc56.21.102 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=    9706kB time=00:00:56.34 bitrate=1411.2kbits/s
video:0kB audio:9706kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 0.000785%

c:\work>
  • surround88.wav は,目標としていた CD 形式の wav ファイルになっている.
あとは,surround88.wav の情報を見れば,期待通りの形式になっているのが確認できるはず.確認できたら,適当なプレーヤーで聞いて,5.1ch が 2ch にミックスダウンされているのも確認しておこう.surround88 なら,left, right, center, rear-left, rear-right の声が,各々適切な位置から聞こえればOKだ.これで完了である.

4. 補足
  •  ff-prompt.bat を実行すると,ffmpeg の実行フォルダにパスの通った状態でコマンドプロンプトが立ち上がるので,ちょっとだけ便利.
  • 変換用バッチファイルを作っておくと便利.
たとえば,cvt2wav.bat というファイルを作り,中身を
@echo off
set FFMPEG="c:\ffmpeg\bin\ffmpeg.exe"
set SPEC=-ar 44100 -ac 2 -bits_per_raw_sample 16
echo on
%FFMPEG% -i "%1" %SPEC% "%1.wav"
dir "%1.wav"
pause
とする.すると,flac なりのファイルをこのバッチファイルにドラッグ&ドロップすれば,CD形式のwavが元データと同じディレクトリに生成される.元データが a.flac なら,それと同じディレクトリに新たに a.flac.wav というファイルができる.拡張子は a.wav のようにもできる.やり方はバッチファイルの説明を web で検索されたし.
  • 今回はハイレゾ・マルチチャンネルの flac ファイルを入力にしたが,その他多くの形式のファイルを同様の手順で変換可能.ffmpeg の対応入力フォーマットは非常に豊富なので,日常的に接するほとんどのファイルが変換できるだろう.
  • 出力も,wav でなく,mp3 などにすることもできる.その場合はオプションの指定が変わるのでご注意.そのうち記事にするかも.
  • 音質面では,サンプリングレートの変換やビットの丸めなどをどううまくやっているかが影響するはず.CD に焼くとなると,そこそこ質のいい変換をしてもらいたいものだけれど,ffmpeg が他の実装と比較して高品質かどうかまでは未調査.
    • サンプルレート変換の質にこだわった変換法を新たに記事にしました.

~おまけ・小型スピーカーのノスタルジー~

TEAC S-200. 画像は「オーディオの足跡」様より無断借用‥.そのうち自前の写真撮ってアップするかも
我が家では,サブシステムとして,1990年ごろに確か \12,800 で購入した TEAC S-200 という小型スピーカーをいまだに使っている.兄弟機 S-300 の小型版だが,同軸2wayという特徴は継承している.参考: 「オーディオの足跡」の記事

音の印象としては,ちょっと独特なハイ上がりのバランスだが,いろんな曲を結構気分よく聞けてきたと思う. 昔の某社のミニコンポについていた,大きいけど軽いペコペコした感じの 3way スピーカーに比べると,容積はずっと小さいのが音の密度感では遥かに上だった.S-200 はかなり能率の低いスピーカーで,出力音圧レベルは 81dB/w/m である.よい音にしようと思うと,アンプにはかなりの駆動力が要求されるはず.昔ある時,実家の主力アンプ(DENON PMA-S1)に繋いでみたら,美しく力強い音が出て驚いた.最近(購入後20数年)では,ユニットの一部のウレタンか何かがヤバげにも見えるので,何かしら補修は必要かもしれない.

さて,このシリーズ,というか S-300 の系譜は,なんと現在でも継続されている.現行機は S-300NEOTEAC のページ)といって,店によってはペア3万円強で買えるようだ.

TEAC S-300NEO-CH コアキシャル2ウェイスピーカーシステム チェリー
ティアック (2011-11-01)
売り上げランキング: 21,581

Amazon での評判は上々となっているし,受賞も多い.TEAC のこだわりだろうか,新開発コアキシャルユニット搭載,バイワイヤリング対応で仕上げも高級と,結構力が入っている.能率も 86dB/W/m と,S-200 よりは鳴らしやすそうだ(とはいえ割と低能率ではある.小型の宿命か).一度我が家の年代物 S-200 と聴き比べてみたいものだ.


0 件のコメント:

コメントを投稿