Site Top
ruby Top

□rvm
・PATHを通す
・rvmsudoコマンド

□Glade3
・rubyで読み込む
・GtkBox

□rubyでCGI
・formデータ受け取る
・CGIをオフラインで動かす
拙作のしょーもないサンプル

・Glade3fixer.rb
・Firefox_killer.rb
・Link_creator.rb
・unzip_sjis.rb
・mp3conv.rb
・URLdecoder.rb


番外編

・MacOSX10.4でruby

uw_yocida@mac.com
uw_yocida(twitter)

ー mp3conv.rb ー
ダウンロード:mp3conv.zip(約6KB) ffmpegコマンド版
ダウンロード:mp3conv2.zip(約6KB) avconvコマンド版
Xubuntu14.04ではffmpegコマンドが使えなくなり、avconvコマンド一本になったようなので、
avconvコマンド版も一応作ってみました。

このツールの動作には、ruby1.9系の他、GUIにGtk2を使っているので、予めインストールしておく必要があります。
また動画ファイルから音声ファイルへの変換に、ffmpegを利用しているので、こちらもインストールしておく必要があります。

Windowsでは、動画ファイルから音声ファイルを抽出するのに、Free Audio Extractorというのを使っていて、Xubuntuでも似たようなソフトはあったりするんですが、個人的に使いたかった設定がそのソフトにはなくて、仕方ないんでターミナルでffmepgを使って変換する日々がしばらく続いた後、「やっぱターミナルでコマンド打つのは面倒くせーっ!」となって、rubyで作ってみたものです。

これまでよりは多少は凝ったGUI

起動すると上のようなウィンドウが表示されます。
追加」ボタンを押すと、ファイルを選択するためのダイアログが開くので、適当に動画ファイルを選択して(複数同時選択可能)、サンプリングレート(-ar option)、ビットレート(-ab option)、音声フォーマットを選んだら、「変換開始」ボタンで動画ファイルから音声ファイルに変換が始まるって寸法でさぁ。

保存」ボタンを押して保存先ディレクトリを指定しておくと、変換した音声ファイルはそのディレクトリ内に全て保存されます。
保存先を指定しない場合は、変換元動画ファイルと同じディレクトリ内に、音声ファイルが保存されます
-ar option -ar optionで、「COPY」を選択すると、動画ファイル内の音声データのサンプリングレートが、そのまま変換時にも使われます。

-ar option 音声フォーマットで、「COPY」を選択すると、動画ファイル内の音声データを再変換しないで抽出します。

動画ファイル内の音声データがmp3やaac形式の場合は、ある程度正しくmp3やaacで抽出すると思いますが、それ以外のデータの場合、抽出した音声ファイルの拡張子は結構適当になっているかもしれません。
音声データがpcm形式だった場合は、なんとなく.wavの拡張子を割り当てるようにしてますが、果たしてそれで合っているのかどうか……。一応VLCでは再生できるみたいなんですが。

補足1:

ここまで書いてきて今更な話しですが、ネットでffmpegの使い方を検索してみると、サンプリングレートやビットレートの指定の仕方が、ffmpegのバージョンなどによって違う、みたいなことが書いてあったりします。
一例を上げると、うちの環境で使っているffmpegは、サンプリングレートの指定の単位はHz、ビットレートはbpsで指定することになってます。
ですので、サンプリングレートが44.1KHzなら44100Hz、ビットレート128kbpsなら128000bpsと、このrubyスクリプトではやたら桁の多い表示をわざとさせています。
こうした違いの関係で、お使いのffmpegによってはmp3conv.glade、あるいはmp3conv.rbの中身を修正しないと、ちゃんと動かない可能性があります。

また、動画ファイルから音声ファイルに変換する際、変換元ファイル内に音声データが含まれているか、音声データの形式はなにか、を一応チェックするようにはしてるんですが、ffmpegを使って調べているので、ffmpegが返す結果がうちの環境と違っている場合も、正しく動作しない可能性があります。
補足2:

unzip_sjis.rbのところでも書いているように、このスクリプトをターミナル上で「ruby mp3conv.rb」とかやって実行する分には問題ないんですが、パネルのランチャに登録して実行させるような場合は、「ターミナルで実行する」にチェックを入れておく必要があります。
そうしないと、変換処理を途中で終了させたり、このスクリプト自体を終了させても、ffmpegで変換処理中のプロセスがあった場合、そのファイルの変換が終わるまでffmpegが動き続けてしまうことがあります。
蛇足:

追加ボタンを押すことで、変換したいファイルを追加できるわけですが、うっかり追加してしまったけど、これは変換したくない、というファイルがあった場合、リスト上の変換したくないファイルパスの行にテキストカーソルを移動して、BackspaceあるいはDelキーを押してもらうと、その行にあるファイルパスが削除され、変換対象からも外れます。

実のところ、BacspaceやDelキー以外のどのキーを押しても、その行を消してしまうという、かなりヘンテコリンで強引なUIを搭載しておりますので、できれば事前に、どういう操作をすれば、どういう挙動をするのか、確認いただいてから使っていただけると、これ幸いです。