☆のFAQ

メタ質問

FAQってなんですか。

「Frequently Asked Questions」、すなわち「頻繁に尋ねられる質問」です。
といっても実際に訊かれたと言うより、ありがち/ありそうな質問類を載せています。
一般人にはFAQって言っても通じないらしいので注意(自戒も込めて)

メタ質問ってなにさ。

そもそも「メタ」とは、

メタ(meta-)とは、「高次な―」「超―」「―間の」「―を含んだ」「―の後ろの」等の意味の接頭語。ギリシャ語から。

メタ - Wikipedia

という意味で、詳しくは上記リンクを読んでもらうとして、要は「このFAQそのものに関する質問」という意味です。

「☆」って?

Flash☆Video☆Starのことです。
ニコニコ$の時は「$」って略してました。安直ですね。

すごい勢いでありそうな質問

ダウンロードできたけど、これどうやって見るの?

入手できたデータの種類によります。

あまり何も考えないで対応するには
「ffdshow」というソフトを導入してから、「Media Player Classic」というソフトで再生しましょう。
これだけで大体のファイルは再生できます。ただし、FlashVideoに関してはこれだけじゃ駄目かもしれません。
最近入手した動画に限って再生できない場合は、そのどちらかあるいは両方を更新すると見られるかもです。
筆者はこの環境で、FLV(FLV1/4)、FLL(と呼ばれているもの)、MP4、SWF、ついでにAVIやらWMVやら
多くの形式が再生できることを確認しています。たぶん一般の人はこれで事足りるでしょう。逸般の方は好きなだけこだわってください。
拡張子が.flv
FlashVideo形式の動画データです。普遍的に説明するのが面倒な形式でもあります。
ただし、Flashを使う動画配信サイトでほぼ確実に使用されている形式でもあるため、
これをマスターすればほとんどの動画配信サイトで配信されている動画を保存後に閲覧することが
できるようになる、ともいえます。
「FlashVideo 再生」とか、「FLV 再生」で検索するとよいでしょう。
なお、「FLV形式」は動画データを入れる容れ物みたいなもので、その中に何が入っているかによって
実際に再生に必要なソフトが変わってきます。2008年くらいまでは主にFLV1(H.263+MP3)の形式と
FLV4(ON2 VP6+MP3)の2種類だけだったのですが、最近になって、俗にFLLと呼ばれる「FLV形式だけど中身H.264+AAC」
みたいなデータも出てきており、状況はさらにややこしくなっているといえます。
なお筆者は、FlashとしてのFLV5がこのFLLなのか、MP4なほうがそれなのかは判断しかねます。よく知らんし。
拡張子が.mp4
(☆で取得できるものは大体)H.264+AAC形式の動画データです。QuickTimeなどで再生できます。
拡張子が.swf
Flash形式のプログラムデータです。ブラウザの画面に放り込めば再生できてしまいます。
拡張子がない/分からない/上の一覧に無い
配信もとの仕様によります。普通は保存時に適切な拡張子が設定されるものですが、
設定されない場合(拡張子のないファイル名がデフォルトになる場合)は、.flvにしておけば大体間違い無いです。
心配ならWinExChangeなどをお使いください。J-Wordは入れないように注意な   

ただ、これくらいのことは自分で調べられるようになっている方が後々楽できます。
それっぽいキーワード(ここでは「flv」とか「swf」とかと「再生」とかを組み合わせてみるとか)で、
GoogleYahoo!で検索すればよろしいかと。

SMILEVIDEO

なんでSMILEVIDEOのFLVのURLは全自動で取得してくれないの?

2008/03/07から、全自動取得できるようになりました。
一応、取得失敗した時のために過去の手法も利用できます。

全自動で取得するためにはサーバーがログインを行う必要があるからで、本試験サーバーを
家庭内ネットワークの一部に置いている身としては「何かあった場合に自分のアカウントがBANされるのが嫌」という
至極私的な理由によってログインセッションを取得せずに実装できる方法をとっています。

また、「ユーザー自身のID/パスワードを入力させ、サーバーサイドでその情報を使ってログインする」という
実装も技術的には可能ですが、以下の点から実装すべきではない/する必要がないものと考えます。

ちなみに、ログインシステムの変更があってもまったく影響を受けないと言う利点もあります。
事実、07年8月末に行われたログインシステムの大改修の際、Flash☆Video☆Starの前身である
ニコニコ$は一切の修正を行っていませんし、それ以降のあまたのサーバーサイドの仕様変更に対しても
何ら変更を加えることなく現在(2009年2月)に至るまで問題なく使用できています。

SMILEVIDEOの動画で必要な「多少の手順」て何さ

2008/03/07から、全自動取得できるようになり、「多少の手順」も不要になりました。
以下、過去の手法を利用する場合の説明なのであまり読む必要は無いです。

具体的には、「ログインセッションを持っているユーザー側でsmileAPI的なものにアクセスしてもらい、
得られた情報を元にFLVのURLを探し出す作業」の一部を手作業で手伝ってもらっています。
smileAPI的なものから得られる文字列にFLVのURLが含まれているのですがURLエンコードされているので、
それをちゃんと利用できるURLに変換する作業を行っているわけです。
変換はJavaScriptで行われており、サーバーとの通信はしていません。必要ないので。

SMILEVIDEOの動画で動画URLが表示されなかったり、「動画URLが見つかりませんでした」と出るんだが?

自動取得に失敗したのかもしれません。
従来手法を使う場合は今でもログインが必要です。

SMILEVIDEOの動画探索は、ニコニコ動画へログインしていないと行うことができません。
ログインしていない場合、FLVの存在するURLもデータに出力されないため、ニコニコ動画にログインしてから
再度本プログラムをお試しください。
なお、「ログインしている状態でのみ得られる動画に関係する情報」が必要なだけで、ログイン情報自体は
本プログラムでは必要ありません。

なんで1回再生しなくちゃいけないんでしょうかね

再生するときに、ニコニコ動画のサーバーが動画を取得するためのクッキーを送信するからです。
これが無いと、403 Forbidden(アクセス権限が無いよ)と表示されて、動画にアクセスできません。
次の項目もご覧ください。

現れたFLVへのアンカーを押しても、「403 Forbidden」とか「ページの表示を拒否されました」などと表示される、どうすれば

いくつか理由が考えられます。

これらに普遍的に対応するには、以下をお試しください。

他に、各ブラウザのキャッシュに対する挙動の差などにより正常にFLVを得られないケースがある…かもしれません。
IEでなら上記手順を守ることでほぼ確実にFLVの実データを入手できます。

アカウント持ってないんだけど、どうやって再生すればいいかな

個人的にはアカウントを作成することを薦めますが、どうしても嫌ならいろいろ手を尽くしてみればいいかと。

JavaScriptをOFFにしてるから、SMILEVIDEOのFLVのURLが分からないんだ。

2008/03/07から、OFFでも問題なくなりました。
従来手法を使う場合のみJavaScriptをONにする必要があります。

以上お好きな方をどうぞ。以下めんどくさい方の説明。

smileAPI的なものからは、以下のような文字列が得られます。※ここでは架空のものにしています。

thread_id=1122334455&l=320&url=http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345&link=http%3A%2F%2Fwww.smilevideo.jp%2Fview%2F0%2F0&ms=http%3A%2F%2Fsmilemsgserver.nicovideo.jp%2Fapi%2F&user_id=0&is_premium=0&nickname=example&time=1122334455&done=true&ng_rv=3

ここにはいろいろ面白い情報が含まれていますが、今必要なのはFLVのURLですね。
上の文字列は、すべて「名前=値」という形式で表記され、それが&で区切られています。
で、&を改行に置換するとこんな感じになります。

thread_id=1122334455
l=320
url=http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345
link=http%3A%2F%2Fwww.smilevideo.jp%2Fview%2F0%2F0
ms=http%3A%2F%2Fsmilemsgserver.nicovideo.jp%2Fapi%2F
user_id=0
is_premium=0
nickname=example
time=1122334455
done=true
ng_rv=3

FLVは、url以降に書かれているURLに存在します。ここでは
http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345
ですね。
URLに見えませんか?
では、「URLデコード」とかで検索してみてください。

…という作業や知識を、JavaScriptをONにしておくだけで一切使わずに済みます。

「マイリストのURL」とか「通常のURL」とかどう違うのさ

ニコニコ動画で使われているURLや動画管理IDにはいくつか種類があり、便宜上呼び分けてます。
ちなみに、システムの仕様はその大半が非公開であるため、必要そうな項目それぞれに当方で勝手に名前をつけてます。

動画ID
「sm9」のように、動画の配信サーバーとIDを組み合わせた文字列。
ちなみに配信サーバーは、sm:SMILEVIDEO、am:AmebaVision、fz:フォト蔵、ut:YouTube(※(仮)の時のもの、たぶん永遠に無効)など。
他にもyoとかaxとかcaとかいろいろあるが、その辺は内部的には全部SMILEVIDEO。
あとnmというのがあり、SMILEVIDEOであることには変わり無いがNMM経由での投稿。中身は大半がswfだが、
有料版NMMからMP4を投稿するとIDがnmで中身はMP4ということも起こりうる…らしい。
スレッドID
「1173108780」のような値。従来は再生画面のインフォメーション部分に表示されていたもの。
たぶん2chのスレッドIDとほぼ同様の役割で、動画よりメッセージサーバーが使う値のよう。
現在はマイメモリーに登録された動画URLに含まれている他、Flash☆Video☆Starを使うなどしてsmileAPI的なものに
アクセスすると、得られる値の中にスレッドIDが含まれている。
おそらくスレッドIDから導ける動画IDは単一だが、動画IDに関連付けられたスレッドIDは複数である。
通常のURL
「http://www.nicovideo.jp/watch/sm9」のように、動画IDを使った再生用URL。
マイリストのURL(旧)
「http://www.nicovideo.jp/watch/1173108780」のように、スレッドIDを使った再生用URL。
smileAPI的なもの
ニコニコ動画のシステムで使われていると思われる、動画情報などを取得するためのシステム。
「http://www.nicovideo.jp/api/getflv?v=(動画IDかスレッドID)」で取得できるが、ログインしている必要がある。
得られる情報はスレッドID、コンテンツの時間、動画データの場所など様々。
外部公開されていない上、近頃のWebAPIのようにXMLであるわけでもないので「的なもの」としている。
もしこれの仕様が変化すると、(おそらく)今世にあるニコニコ対応ツール類の多くが壊滅的状況となる。
ちなみに、Refererに「許可されたサービスのURL」を渡すことで値が取得できる特別なAPI的なものもある。
得られる値は通常のsmileAPI的なものと同一のようだが、ログインしている必要が無い。ただし実装が若干面倒。

配信サイト問わず

高画質動画ってなんじゃい

配信サイトによって扱いが異なりますが、おおむね以下のパターンのどれかです。

実装上は一番一般的なFLV1を優先して表示するようになっており、たいていのサイトでは複数のURLが表示されたときに
一番下に出てくるURLが一番高画質である可能性が高いです。

なお、高画質動画は全てのサイトで提供されているわけではなく、また対応サイトでも
動画によって用意されていない場合もあるので、必ずしも表示されたURLが有効であるとは限りません。

「APIへのアクセスに失敗しました」とか「情報取得に失敗しました」って出るけど、何これ?

「☆から配信サイトへの情報取得要求を拒否された」「情報取得には成功したが、動画URLを取得するのに必要な情報が含まれていない」
などの場合に表示されます。
ここだけの話、似たようなエラーメッセージでも、句読点の位置などが違えば細かいエラー内容は異なっていたりします。この辺はソースコード見ると分かります。

これらエラーが発生したことは記録され、当方で確認することが出来るので、数日ほど待っていただければ
直っているかもしれません。

これを使ったとき、各動画配信サービスにかかる負荷ってどれくらいなの?

基本的に「普通のブラウザで普通にアクセスした場合」よりも大きな負荷がかかることは無いはずです。
サイトによって異なりますが、APIやそれに近いものが用意されていて、そこから動画データのURLを取得できる場合はそれを使い、
そうでない場合は動画配信ページのHTMLなどから動画URLを探します。
取得したデータはキャッシュされ、短時間に連続して同じ動画へのリクエストがあった場合は
Flash☆Video☆Star内で全ての処理が完結します。

そして、実際に動画をダウンロードする場合ですが、上で挙げているように再生画面で
すでにダウンロードが完了していればブラウザから発生するアクセスは、簡単に言えば
「(動画)データの更新はありますか?」(HTTPの条件付GET)
と尋ねることだけで、当然消去されない限り動画データは変化しないのでサーバーからは
「変わってねーよ」(304 Not Modified/更新なし)
と返事が来ます。よって結局キャッシュのデータをフォルダ間コピーしてるのとほとんど同じ状況となり、
配信サーバー側にはほとんど負荷はかからないことになります。
まあそんなサービスの意味は?って訊かれるとつらいですが…

再生画面でダウンロードし終わった後に☆を使うことを想定していることもあり、URLそのものを
簡単に手間なく他所に負担をかけずに取得できることを目標としています。

「匿名で」って、どの程度匿名なのさ?

もともとニコニコ$についていた文面なので今となってはちょっと微妙なところがあるのですが、
当時は「ニコニコ動画のアカウント情報を$に渡すことなく」、という意味で使用していました。
もちろん現在でも当方はアカウント情報を受け取る必要はありませんし、なくても十分機能を発揮できます。

他の動画サービスについても、アカウント情報やログイン情報を当方に知らせることなく
機能を利用することが出来ます。たとえば、YouTubeの動画を取得するのにYouTubeのアカウントは要らない、ということです。

ただし、インターネット経由でのサービスの関係上、完全な匿名にはなりえません。
以下のような情報は当サイト、および動画配信サイト側に送信されてしまいます。
なお、これらの情報は一般的なウェブサイトでも取得できる情報です。

つまり、やろうとおもえばどのIPアドレスの人がどの動画に関して☆を使ったか
追跡できてしまうわけですが、当方ではそのような利用方法は一切しないことを宣言します。


Flash☆Video☆Starに戻る


Flash☆Video☆Star (c)2007-2009 TSUKABAN!