息抜き:FLV - AAC - M4A 変換


Radiko を録音するのに、『Radika』使ってます。これはとても良いソフトでずいぶん助かります。 NHK や FM サイマルは接続・録音には問題ないんですが、民放の場合、Radiko.jp の仕様によって、キーが取得できないとか切断されたとかのメッセージが出るときがあります。

そういうときは、ずいぶん前に購入した『ラジ録2』を使って録音します。 逆に購入したのになぜ普段は使わないかというと、録音スケジュールの設定とか、聴く場合にはブラウザ (Radiko.jp) と連動するとか、使い勝手が少々・・・。

いちばん敬遠するところはファイル保存です。

保存形式で、FLV・AAC・MP3 とかを選べて、その中でAAC・MP3には最低〜高音質を設定できます。 AAC・MP3 で保存する場合、予約が連続したり重複していると、その変換作業に能力を使われ、DELL Latitude ST (ATOM Z670) というPCではエクスプローラが止まってしまうときがあります (この辺りは自分の PC の問題だろう)。最高音質で保存するとどうなることか。

CPU への負担を減らそうと最低音質の設定にすると、元の FLV とほぼ同等のファイルサイズに関わらず、ほんとうに音が最低になる。 普通の音質では倍のファイルサイズになってしまう。

それが Radika では HE-AAC でファイルサイズもほぼ変わらず M4A 保存してくれる。連続・重複予約しても、同じ PC でも余裕で処理してくれる。

そこで『ラジ録2』は FLV 保存にして、AAC や MP3 には変換しないことにするが、これでは FLV を再生できるプレーヤーでしか再生できないし、タイムシークスライダーも使えない。 かといって、FLV から他フォーマットにいちから変換するのは時間がかかる。

『ラジ録2』は保存形式で「FLV」を指定できたが、最新の『Radikool』にはなかった(古いバージョンでは「Raw data」とかいう指定があったような)。
そこで、録音形式の設定で ffmpeg の引数に、


-metadata genre="radio" -acodec copy

を追加すると変換せずに元データのまま保存してくれた。

そういったことで、元データのままで、いかに簡単に FLV から M4A に変換できるかを考えた。


色々とページを探してみると、Radiko の音声変換について記しているページはたくさんあって(特に HE-AAC が iTunes で再生できない件)、その中から下の2つのソフトウェアが有効であることがわかった。

  1. FLV から音声や動画を抽出する 「FLV Extract」(これで音声 AAC ファイルが作れる):http://moitah.net/
  2. AAC を M4A とかに変換する 「MP4Box」:http://kurtnoise.free.fr/mp4tools/

これらを使えば、M4A にすることができる。 しかもいちからファイル変換するのではなく、元のデータはそのままに、それを包んでいるコンテナを変えるらしいので、変換に要する時間が非常に短い。

しかし、ファイルをひとつずつ変換するのは非常に面倒。 特に MP4Box の場合は、コマンドラインでの実行だけのようだ。

一括処理といえばバッチファイルなのですが、ドライブやファイルパス取得といった引数やら、バッチファイルについてあまり深く考えたことがないので、色々調べるのが・・・ そこで VB Script を使ってみることにした。

イメージとしては、

  1. 色々なファイルの入っているフォルダの中の FLV ファイルだけをリストして、
  2. それらを連続して AAC に変換、さらに M4A に変換 する

といったところ。

幸い、OKWave で、フォルダをVBSファイルにドラッグ&ドロップしてファイルをリストする、とても便利なスクリプトを見つけました。

この中に、上記のイメージのスクリプトを追加したらいいんではないかと考えて、下記のように直してみた。


  'VBSファイルがある、ファイル名を含んだフルパスを取得
  strScriptFullName = Wscript.ScriptFullName
  'VBSファイル名
  strScriptName = Wscript.ScriptName
  'VBSファイル名を消してVBSファイルのあるパスを取得
  strScriptPathName = replace(strScriptFullName,strScriptName,"")
  
  'フォルダオブジェクト取得
  Set fsoFolder = fsoObj.GetFolder(inFolderName)
  
  'フォルダ内/ファイルループ
  For Each fsoFile In fsoFolder.Files

    if right(fsoFile.Path,4)= ".flv" then
      'FLVファイル名を含んだフルパス
      sFile=fsoFile.Path
      'AACファイル名を設定
      aFile=left(sFile, Len(sFile)-4) & ".aac"
      'M4Aファイル名を設定
      tFile=left(sFile, Len(sFile)-4) & ".m4a"
      'FLVExtractを使った FLV→AACファイル変換コマンド作成
      cFA= strScriptPathName & "FLV_Extract\FLVExtractCL.exe -a -t -o " & sFile
      'MP4boxを使った AAC→M4Aファイル変換コマンド作成
      cAM= strScriptPathName & "MP4Box\MP4box -add " & aFile & " " & tFile
      strCmd1 = cFA
      strCmd2 = cAM
      Set objWshShell = WScript.CreateObject("WScript.Shell")
      'FLVExtractを使ってAACファイルを作る
      RC = objWshShell.Run(strCmd1, 0, True)
      'MP4box を使ってM4Aファイルを作る
      RC = objWshShell.Run(strCmd2, 0, True)
    end if

  Next

これでフォルダをこの VBS スクリプトの上にドロップして変換することができました。 元の FLV ファイルや 途中で作成した AACファイルが残ってしまうが、これは後で消すようにした。 こんなので良いのだか悪いのだか・・・でも、これで、Android とかのプレーヤーで聴くことができるようになりました。 色々と考える過程で、Small Basic を触ってみたが、Small Basic では VBA における Shell のような外部コマンド実行方法が見つからなかった。

今は VBS のショートカットを「Send To(送る...)」に入れておいて、フォルダをクリックして右クリックメニューから VBS のショートカットを指定して変換している。 ずりずりフォルダを VBS スクリプトのアイコンにドラッグ・アンド・ドロップするよりも、タブレットではフォルダ長押しで右クリックメニューが出るので、こっちの方が楽。

変換後のファイル容量は、例えば土曜日の午後にやっている「辛坊治郎 ズーム そこまで言うか!」だとこうなる。 放送時間は約2時間。

放送時間が約50分の「MITSUBISHI MOTORS ピートのふしぎなガレージ」だとこうなる。

細かい容量は、録音開始のタイミングとかで色々変わるでしょう。 再生可能な条件はあるにしろ、オリジナルとほぼ変わらない容量でおさまってくれる。


『ラジ録』は、『ラジ録3』になっていて、Web を見たところ、番組予約に番組表みたいなものが参照できるのかもしれません。


『ラジ録3』を使ってみたら、番組表から録音予約できるようになっていた。 でも予約の表は、日付順とかでソートできなかったりと使い勝手は前のまま。

『Radika』『ラジ録3』の他に、番組表を持つソフトがあったので、使ってみたらこれがとても使いやすい。 『ラジ録』には申し訳ないですか、なんでこんな風に作ってくれないものかなあと思います。 でもファイル変換後はサイズが大きくなったりするので、FLV保存の後でMP4に変換することを考える。

保存されたFLVファイルを VBS で変換しようとするが、最後の MP4box を使った変換ができないファイルがある。 なぜかなあと思ったが、簡単だった。 ファイル名に半角スペースが入っていたためだった。 これはそのソフトのファイル保存の設定で、番組表の名前で保存するようにしているためだろう。

『ラジ録』では FLV 保存の際、ファイル名を(おそらく)半角スペースを全角や『 _ 』に直している。 そのため、VBS変換 を考えたときに問題なく変換してくれたようだ。

それなら Replace メソッド とかで、半角スペースを『 _ 』とかに変えることを考えれば良い。 そう考えつつも、予約内容の以降とかもひと手間なので、『ラジ録3』を使っている (『ラジ録』から『ラジ録3』への移行で疲れた。インポート、エキスポートやソートとかをできればなあ)。

『Radika』は Radiko.jp はだめでも、NHK や FMサイマル放送を録音できるし、何より番組表は見るだけでも便利なので、相変わらず使っている。 やっぱし『Radika』が良いなあ。

結局今は『Radikool』がメインになっている(録音形式の引数は変換無しのコピーのみ))。


『ネットラジオレコーダー』というのもあるようだ : http://ging.co.jp/product/music/netradio4.html

これもかっこよさげな外観ですが、保存とかはどんなものか。


今は『Radika』で NHK が聴けなくなったなったので、

のようにしています。 なぜ『ラジ録2』かというと、今使っている ISP のせいか、『Radikool』や『ラジ録3』ではらじる・らじるの地域を選べなかった。

『Radika』で放送は聴けなくなったが、ラジオ放送横並びの番組表を参照するのにまだ使ってます。


最近はサイマル放送録音がうまくいかなくて、

『ラジ録』は休み中。 結局『Radika』をいまだに使っている


光回線

GMOインターネット株式会社【GMOとくとくBB】ドコモ光

株式会社アウンカンパニー【ソフトバンク光キャンペーン】

サーバー・ドメイン

「ロリポップ!」レンタルサーバー

「ムームードメイン」独自ドメイン

低コストで簡単、プロのようなホームページ作成「グーペ」

「ヘテムル」レンタルサーバー


ページトップに戻る

※本ページのイラスト・イメージは、プリントアウトファクトリー様 (https://www.printout.jp/) のクリップアートを使用しています。

Copyright(c) 有限会社 岡田電工 Okada Denko Ltd. All Rights Reserved.

HP開設 2003年
記:2014年9月〜