[an error occurred while processing this directive]

FLVを再生する

[an error occurred while processing this directive]
2007/3/19 オリジナル(初版)
2007/7/26 swfプレイヤー情報追加

「●『FLVの見方』はあります(ぉ)」へ


■保存(前準備)
YouTubeやAmebaVisionで公開されている動画は、FLV(FLash Video)という形式(コンテナ)になっている。
まずはそれらを保存する必要があるのだが、手段としては大きく分けて
・ツール(Webアプリ、ローカルアプリ)を使う
・動画再生後にTemporary Internet Filesから拾う
の2つがある。
前者の場合、手軽なのはダイレクトリンクを出してくれるサイト([1]で紹介されてる⇒KeepVidなど)だが、そこからのダウンロード&保存まで自動でやってくれるツールがあるとさらに便利かも。
後者の場合、たまにうまくFLVファイルが保存されない(YouTubeの場合、1〜数MiB程度のgetvideo〜とか〜.flvというのがあればいい)ことがある。
その場合、前者の方法を取ることになるのだが、もしかするとUser-Agentやリファラチェックなどで蹴られるかもしれない。
そうなると、proxyをかますとか、UA・リファラ詐称するなどのかなり面倒なことをする必要がある。
その辺についてはここでは書かないのでどうしても保存したければ自分で調べてくれ。
一応言っておくと、著作権管理(DRM)などがかかっていないメディアファイル(FLVに限らず、AVIやMP3でも)の場合、最後の手段としてパケットキャプチャ(Ethereal使用)すればどんなものでも保存可能だ。
ただ、容量が大きいとEtherealの処理が非常に重くなるので注意。せいぜい10MiBぐらいまでかな(設定によって軽くできるのかもしれないが)。
おっと、保存するときはRawにするのを忘れるなよ。ASCIIとかだと内容が壊れてしまうぞ。

■再生その1:Flashファイル(swf)を使う
要するにYouTubeなどの再生swfと同じようなものを作ればいい。あるいはどこかから持ってくるとか。
私は⇒*** CCC ***で公開されていた(今は公開停止)プレイヤーを使っていた。
HSPでラッピングし、FLVファイルに関連付けして、FLVダブルクリック→HSPでHTMLとSWF(プレーヤー)を書き出し、そこにFLVコピー→書き出したHTMLをHSPから関連付け起動という手順で再生するというわけだ。
しかし、私がダウンロードした初期版ではシークができず、ボリュームや画面サイズなどの調整もプレイヤーからはできない(HTMLを書き換えたりsndvol32を使ったりすれば当然可能なわけだが)ので、やはりFLVファイルの量が増えてくるとちょっと辛い。
だからこそ、今回のメインである「FLVの見方」、もとい「メディアプレーヤーでFLVを再生する方法」を実行することになるわけだ。
(2007/7/26)検索で来る人がそれなりにいるようなので追加情報。
現在SephieBrainでflv公開に使っているのはJW FLV Playerというものである(サンプル例:動画は配布パッケージに付属のもの)。
標準でシーク可能、ボリューム可変である上、CGIなどでHTMLを動的生成すれば画面サイズも可変にできる。
Media Player ClassicやWindows Media Playerの場合、どうもシークがうまくいかないことが多いので、シークを多用したいときには重宝する。
さらにアップローダーを組み合わせればオンラインFLVプレイヤーにもなる…が、ここまでやるとほぼYouTube並だし、いろいろ問題が出てくるのでおすすめできない。
※私が設置しているものは微妙に独自仕様になっているため、全画面再生などは無効になっている。また、再生可能な動画はsephiebrain.jp内のFLVファイルのみに限定している。


■再生その2:Media Player Classic(MPC)を使う
前置きが長くなって来たので手短に。
[1][2]と辿って、MPC(⇒SourceForge.net: Files (Media Player Classic))とffdshow(⇒ffdshow : Getting ffdshow)を入れる(On2 VP6再生したい場合は下のほうの「再生その4」を参照)。
あとはお好みでレジストリ関連付けなど。

■再生その3:Windows Media Player(WMP)を使う
さらに→[3]と辿り、追記のところにあるWMPでの再生方法が書かれていると思われるページに飛ぼうとしたら、DBエラーとかで内容が表示されない。
Internet Archiveで見ようとするもロボ蹴りしてるらしく×。
しかたがないので「flv "Media Player"」でぐぐって[4]にたどり着く。
そしてFLV Splitter(⇒SourceForge.net: Files (FLV Splitter))を入れる。
これはインストーラもついてないし、MPCのように解凍して終わりってものでもなく、ちょっと手間がかかる。
といっても、適当な場所に解凍して「regsvr32 flvsplitter.ax」すれば終了。
WinXPでAdmin権限あれば%windir%\system32なんかに入れるといいだろう。
システム関係を弄るのがいやな場合はC:\Program Files\FLVとか?

と、本来ならここまでで終了、FLV再生できてめでたしめでたし…なのだが。
ニコニコ動画で特別公開されてる陰陽師の動画(⇒ニコニコ動画(γ) | 新・豪血寺一族 -煩悩解放 - レッツゴー!陰陽師、以下「陰陽師」とだけ表記)だけ再生できん。
ってことでさらに調査。

■(番外)変換:陰陽師をなんとかしる
とりあえずAVIとかに変換できないか?と思い、その方向で調査することに。
まず「flv」でぐぐって[6][5]に飛ぶ。
ffmpegは携帯動画変換君に付属のものがあったので、早速変換(パラメータは[5]のものをそのまま使用)!
が、「unsupported video codec」というエラーが出て変換できない。
エラーメッセージでぐぐると、どうも動画がOn2 VP6(TrueMotion VP6)(⇒On2 VP6 - Wikipedia)というフォーマット(コーデック)であることが判明。
携帯動画変換君付属のじゃ古すぎて対応してないらしい(念のため携帯動画変換君の最新版もチェックしたが、ffmpegのバージョンに違いはなかった)。
ってことでソースからbuildしようとするが、「Fen」や「Naomi」のcygwinには開発環境入れてないし、「Miria」でもFAAC failedとか言われて無理ぽ(多分ライブラリをインストールしてないからだろう)。で、バイナリを探すことに。
そこで、[7]で紹介されてるFFmpegGUIってのに目を付ける。
「ffmpeg gui」でぐぐって2サイト目(3番目)のVideoHelp.comから[8]へ。
(よく見れば[7]からリンクが張られていた…orz)
そして、ffmpeg.rev8310.7zを入れる(携帯動画変換君のcoresフォルダ内にインストール。もともとあったのはリネームしておいた)。しかし、pthreadGC2.dllが無いと言われて動かない。
ぐぐると、[8]の上位階層(⇒http://ffdshow.faireal.net/mirror/、以下便宜的にFFルートと呼ぶことにする)にあることが判明。これも入れる。
そして変換。今度はエラーも出ず、無事変換できた。
しかし、とりあえず変換できたが画質は悪い。変換先のフォーマット(コーデック)やパラメータをいろいろ試せばもっとよくなるかも。

ということで、これにて終了…否、再生その4をまだ書いてない。
実は、この記事を書き始めた時点ではここまでしか調査できていなかった(再生その4は無かった)が、書いてる途中でOn2 VP6が再生できるようになったので、さらに追加して書くことにした。

■再生その4:陰陽師…もといOn2 VP6をWMP、MPCで再生する
まず、ffdshowのコーデックにTruemotionってのがあったのでそれを有効にしてみるが×。どうやら別物のようだ。
そこで、より新しいバージョンだとサポートされてるかもしれないと思い、⇒FFルート/ffdshow/から最新版(ffdshow-rev2546-SSE2.exe)を入れてみる。
SSE2と書いてあったのでIntelでしか動かないかも?と思ったが、Athlon 64 X2(「Naomi」)でも動いた。
が、陰陽師は再生できず。
ffdshowにOn2 VP6のコーデックを組み込もうと思ったのか、なんとなくか、「flv ffdshow on2 vp6」でぐぐって[9]を発見。
コメント欄に書いてあったFLVSplitter.7z(⇒FFルート/Media Player Classic/external filters/unicode/)を入れる。しかし×。
regsvr32しなおすのを忘れていたのが原因かと思い、一旦regsvr32 -uしてから再度regsvr32してみるが×。
なんかちょっと泥沼っぽくなりかけてきた気がしたので、問題を切り分けるため一旦regsvr -uして、さらにflvsplitter.axをリネーム(flvsplitter.as)し、さらにffdshowのFLVを無効にした状態からテストしていくことに(これで全てのFLV再生機能を外したはず)。
すると、WMPは全てのFLVでエラーが出て再生できなくなったが、MPCは陰陽師以外のFLVを再生することができた(なぜか上下が逆だが)。
どうやら内部的にFLV再生機能(コーデック)を持ってるらしい。
ということは、MPCのバージョンを上げてやれば再生できるのでは?ということで、⇒FFルート/Media Player Classic/から最新版(mplayerc.rev611-3.2kxp.7z)を入れる。
すると、ついに陰陽師再生可能になった。(ffdshow、flvsplitter切った状態)
その状態から切っていたffdshowとflvsplitterを入れていくと

ffdshowオン→MPCで陰陽師以外が上下正常になる
flvsplitterオン→Windows Media Playerで陰陽師含む全FLVが再生可能に

となり、最終的に全てのプレイヤー(といってもWMP、MPCの2つだが、WMPコンポーネント使ってるものも含む?)で陰陽師が再生可能になった。

これで今後しばらくは安泰かな。いや、IT界の進歩は速いから、あっという間に新しいコーデックが出てくるかも。
そうなったらそうなったで再度調べるしかないな。

■まとめ
Lvは独断と偏見。
Lv1 とりあえずFLV再生したい
再生その1、つまりプレーヤーのSWFファイルと再生用HTMLファイルを用意。
→システムも弄らず手軽、しかし機能不足の場合もあり。
→ここではあまり詳しく書いてない。私が使ってたやつは公開停止になってるし。

Lv2 MS純正のWMPで再生したい
再生その3、つまりffdshow+FLV Splitter。
→これしかメディアプレーヤー使ったことないって人もいるはず。当たり前だが日本語OKだし。
→FLV SplitterはFLV解釈、ffdshowは動画部分をサポートしてるらしいので、前者がないとそもそもエラーで再生できず、後者がないと音だけが出るということに。

Lv3 MPCで再生したい
再生その2、つまりMPC+ffdshow
→MPC自体にFLV Splitter相当の機能があると思われる。
→ffdshowのFLV機能を切っても動画が再生される場合があるが、上下逆になるなどの問題が発生する場合あり。

Lv4 陰陽師(On2 VP6)を再生したい
再生その4(基本的には再生その2、その3の内容)、あるいは再生その1
→その1の場合は普通に再生できる(Flash Player 8以上が必要?)
→その4の場合、要するにその2やその3の手順でダウンロードするファイルを最新のものにすればOKのはず(将来的に何らかの理由でサポートされなくなれば別だが)。

■付録
参照サイト(ページ):(外部リンク記号「⇒」省略)
[1]YouTube、Google Videoのストリーミング動画の保存法、再生ツールGilCrowsの映像技術研究所
[2]YouTubeのFLVファイルをMedia Player Classicで快適再生 : 小心者の杖日記
[3]Discommunicative - YouTubeで落としてきたflvファイルをmedia player classicで再生する方法
[4]You Tubeの動画をWindows Media Player 6を使ってローカルで連続再生する方法
[5]aki-初心者向けYoutubeとFLV: YoutubeをMPEG動画に変換する(FFMpegで!)
[6]拡張子 FLV
[7]FFmpeg
[8]http://ffdshow.faireal.net/mirror/ffmpeg/
[9]painkillers for... flv ファイルとの壮絶な戦いの記録
補足:コンテナとコーデック
FLVやAVIってのはコンテナ(入れ物)で、中身の動画や音声の圧縮形式(コーデック)まで規定していない。
なので、同じFLVやAVIでも再生できたりできなかったりするわけだ。

注意:中身が中身なので、実行は自己責任で、メールやBBSで問い合わせないように。
また、Googleの検索結果は調査時点でのものなので、変動してる可能性大。
もちろん「最新版」って表記も同じく最新でなくなってる可能性大。
あと、何か問題あればいきなりタイーホしたり訴えてやる!したりせずにやんわり警告お願いします。


「●『FLVの見方』はあります(ぉ)」へ