swf,flv,mp3,mp4その他もろもろ、サウンドが抜き出せそうなら抜き出してOgg Vorbis形式で保存するお手軽スクリプトです。Rubyで書いてあります。
GNOMEの nautilus ファイルマネージャから右クリックで呼び出す手順もオマケについてます ^^; いや単に個人的メモですけど ^^;
ニコニコ動画のコンテンツなどをツールで落とすと圧縮swfになっている事があります。これを解凍するのにcws2fwsをバイパスしていますが、 これは意図的に破壊的動作(元の圧縮形式を残さない)にしてあります 。困る方はその部分を書き換えるか、該当ルート自体を無効にしてください。
ディレクトリの中を探索して変換していきます。しかし 既に同じprefixでoggファイルがある場合はその内容を問わず無視 して次にいきます。
「なんでStringに追加してんだよ、変じゃね?この書き方」そうですか?いやその、単に遊んでみたかっただけなので ^^ それに self.mp42wav.wav2ogg... とかじゃんじゃんつないで書けて面白いですよ ^^
cws2fws以外はDebianならapt-getでインストールできます。
パスの通ったところに、audio2ogg という名前で保存します。
#!/usr/bin/ruby require "ftools" class String def seedname self.gsub /\.[a-z0-9]+$/,'' end def any2ogg system("ffmpeg -i \"#{self}\" \"#{self.seedname}.ogg\"") "#{self.seedname}.ogg" end def mp42wav system("ffmpeg -i \"#{self}\" \"#{self.seedname}.wav\"") "#{self.seedname}.wav" end def any2wav system("ffmpeg -i \"#{self}\" \"#{self.seedname}.wav\"") "#{self.seedname}.wav" end def mp32ogg system("mp32ogg \"#{self}\"") "#{self.seedname}.ogg" end def wav2ogg system("oggenc \"#{self.seedname}.wav\"") "#{self.seedname}.ogg" end def flv2ogg self.any2wav.wav2ogg File.unlink("#{self.seedname}.wav") "#{self.seedname}.ogg" end def swf2ogg if self.checkCompress =~ /compress/ print "WERNING: #{self} is compress, OK! auto-convert to NO compress NOW!\n" self.cws2fws.flv2ogg else self.flv2ogg "#{self.seedname}.ogg" end end def checkCompress `file \"#{self}\"` end def cws2fws ff = "a-" + self system("cws2fws \"#{self}\" \"#{ff}\"") File.move(ff,self) "#{self}" end end def filecnv(f) if !File.exist?(f.seedname+".ogg") if f =~ /\.mp3$/i print f.mp32ogg+"\n" elsif f =~ /\.m4a$/i print f.any2ogg+"\n" elsif f =~ /\.flv$/i print f.flv2ogg+"\n" elsif f =~ /\.swf$/i print f.swf2ogg+"\n" elsif f =~ /\.mp4$/i print f.mp42wav.wav2ogg+"\n" File.unlink(f.seedname+".wav") elsif f =~ /\.wav$/i print f.wav2ogg+"\n" end end end if ARGV.length > 0 ARGV.each{|f| filecnv(f) } else Dir.open(".").each{|f| filecnv(f) } end
GNOME上の右クリック→スクリプト→audio2ogg で呼び出せます。
$HOME/.gnome2/nautilus-scripts/audio2ogg
#!/bin/sh xterm -e audio2ogg "$1"