ニコニコ動画からダウンロードした flv から mp3 を取り出す

ffmpeg があればコマンドからいけるらしい。

$ ffmpeg -i nico.flv -acodec copy nico.mp3

ffmpegDownload FFmpegからもらってきた。
ffmpeg.rev9133 がお勧めされていたので素直にそれを使います。
拡張子が 7z なので解凍はhttp://www.7-zip.org/ja/で。
あとは適当にパス通せば OK。
のはずなのにコマンドが通らなくて、その原因がYoutube Encoderのダウンロードでこけていることだとは知らず、「なんで flv に Unknown format なんて出るんだ? -formats したらちゃんと flv 出てくるじゃんよ。」とかやってたりした。
ニコニコ動画ってダウンロード失敗すると 13kb のゴミファイルができますよね。
それに気付くまでにけっこう時間かかりました。


ffmpeg が使えることが分かったので、いっちょシェルスクリプトかバッチファイルでも書くかー。
D&D でファイル渡した場合ってどうなるんだろう?ちゃんと引数として渡るのかな?
いやいや D&D なんてしないで、せっかくなんだら Meadow からやりたいな。
Dired からシェルスクリプト経由で flv -> mp3 したい。


どうでもいいけど mpeg を間違って mepg って書くことが多いんだな僕は…。
何度も間違い続けてると、間違った脳内ネットワークが形成されてしまいには間違ってると思わなくなりそうでこわい!

追記

できた!
エラー処理とか何もしてなくて超手抜きだけど(´▽` )

flv2mp3.sh
#!/bin/sh
flv=$1
mp3=${flv%.flv}.mp3
ffmpeg -i "$flv" -acodec copy "$mp3"

Dired から呼び出すときは ! で flv2mp3.sh を指定すれば OK。
でも flv2mp3.sh って名前が長いな。
けっこうよく使いそうだから、もっと簡単に呼び出せるようにしたいぜよ。


ってことでちょっと調べてみたらいい情報を見つけた。
http://www.bookshelf.jp/soft/meadow_25.html#SEC272
これで Dired で *.flv に X すると flv2mp3.sh がデフォルトのコマンドとして呼び出されるようになった。
いや便利でいいですね(・∀・)
Dired-X は記憶の隅にかろうじて残っていたけど X なんてすっかり忘れていたよ。
ふつうに便利そうなのでこれからはなるべく使っていくようにしたい。

;;; X で実行するデフォルトのコマンド
(setq dired-guess-shell-alist-user
      '(("\\.flv\\'" "flv2mp3.sh")
        ))


あと *.sh を開いたときに自動的に sh-mode にならなかったのでその設定も追加しておいた。

;;; sh-mode の設定
(add-to-list 'auto-mode-alist '("\\.sh$" . sh-mode))