« prototype拡張の注意点 | トップページ | AS3.0旅情1 ~特定階層の無効化~ »
ニコニコ動画やYouTubeのFLV動画を取得する。
2007/05/05
ニコニコ動画がYouTubeからアクセス禁止を受けて一時閉鎖した際、 YouTubeからどうやって動画を取得していたかが少し話題になりました。
YouTubeAPIには、Flashの動画形式であるflvファイルのパスそのものは記述されていない ため、おそらくいったんページのHTMLを取得して、そこからflvのパスを 取得していると考えられます。
サンプルソースを書いてみました。
var _this=this; var _lv:LoadVars=new LoadVars(); var url="http://www.youtube.com/watch?v=DQoh5DsLJvc"; _lv.sendAndLoad( url, _lv , "POST" ); _lv.onData=function( _str ){ _this.parseHTML( _str ); } function parseHTML( _str ){ var targetLine:String= _str.substring(_str.indexOf("player2.swf"), _str.indexOf("\", \"movie_player") ); var vID=targetLine.substring( targetLine.indexOf("video_id=")+9, targetLine.indexOf("&l=")); var after_t=targetLine.substring( targetLine.indexOf("&t=")+3); var t; if( after_t.indexOf("&")!=-1 ){ t=after_t.substring( 0, after_t.indexOf("&")); }else{ t=after_t; } this._nowFlvPath="http://youtube.com/get_video.php?video_id="+vID+"&l&t="+t; trace("this._nowFlvPath="+this._nowFlvPath); }
パブリッシュしたところ、YouTubeのFLV動画が直接取得できました。 しかしアクセスし過ぎると、YouTubeに弾かれる恐れがあるので、 実行される方は確認程度にとどめてください。
現在は、ニコニコ動画自体からflvファイルを取得することができます。 例えば、下記のビデオの場合。
http://www.nicovideo.jp/watch/sm191763
動画IDである「sm191763」を、下記APIにパラメーターとして付与します。
http://www.nicovideo.jp/getflv?v=sm191763
すると、下記の返り値が取得できます。(user_idとnicknameは仮です。)
thread_id=1177422773& l=270& cms=SMILEVIDEO& url=http%3A%2F%2Fs-clb4.smilevideo.jp%2Fsmile%3Fv%3D191763.75663& link=http%3A%2F%2Fwww.smilevideo.jp%2Fview%3Fvideo_id%3D191763& ms=http%3A%2F%2Fmsg22.nicovideo.jp%2Fapi%2F& user_id=xxxxxx& nickname=xxxxxxx& done=true
URLデコードしてみました。
thread_id=1177422773& l=270& cms=SMILEVIDEO& url=http://s-clb4.smilevideo.jp/smile?v=191763.75663& link=http://www.smilevideo.jp/view?video_id=191763& ms=http://msg22.nicovideo.jp/api/& user_id=xxxxxx& nickname=xxxxxxx& done=true
上記のurlパラメータの値がニコニコ動画のFLV本体です。
試しにダウンロードするプログラムをFlashによるexe形式で作成しました。 ただし現在のニコニコ動画はクローズドサービスなので、あらかじめログイン している必要があります。
なお、上記プログラムは、参照先のプログラムが変更された場合、使用できなくなる可能性がございます。あらかじめご了承ください。また、コメントはFLVファイル外のデータなので、ダウンロードされるのは動画データのみになります。
東スポブログパーツ by BM11
- 3D
- AIR
- AS2
- AS3
- ActiveX
- AfterEffects
- Arduino
- Benchmark
- BitmapData
- CS4
- Command
- Cookie
- Date
- Dictionary
- DisplacementMapFilter
- Dynamic Sound Generation
- Error
- Event
- EventDispatcher
- ExternalInterface
- F-site
- FLARToolKit
- FLV
- FMIS
- FMS
- File
- FileReference
- FireBug
- FireFox
- Fireworks
- Flash Lite
- FlashDevelop
- FlashPlayer10
- FlashVars
- Flex
- FocusEvent
- Font
- FuseKit
- Gainer
- Google Map
- HydroTween
- IE
- JActionScriptors
- JPGEncoder
- JSFL
- JSON
- JavaScript
- MP3
- MP3FileReferenceLoader
- Math
- Matrix3D
- Max/MSP/Jitter
- Mobile
- MovieClip
- NetConnection
- NetStream
- Number
- Object
- ObjectDetection
- ObjectDumper
- PaperVision3D
- Particle
- Progression
- RGB
- RTMFP
- Rectangle
- SQLite
- SSL
- SWFAddress
- SampleDataEvent
- Sound
- SparkProject
- Sprite
- TOYOTA
- TeraClock
- TextBox
- TextField
- TextFormat
- TextSnapshot
- Thread
- ThunderBolt
- Tips
- TweenMax
- Tweener
- Vector3D
- Vitz
- Wonderfl
- Works
- Xray
- alpha
- android
- animation
- api
- as3
- as3corelib
- byteArray
- christmas
- chumby
- class
- clock
- color
- computeSpectrum
- constructor
- continue
- cookpad
- crossdomain
- detection
- duplicateMovieClip
- enabled
- event
- flash時計
- flexbuilder plugin
- flosc
- flv
- fps
- funnel
- getDefinitionByName
- getTimer
- gravsynth
- iPhone
- insertCommand
- iphone
- kayac
- mProjector
- mask
- match
- memo
- mouseEnabled
- mxp
- nativePath
- new
- php
- png
- red
- scale9Grid
- sendAndLoad
- setInterval
- swfObject
- swift3D
- textHeight
- tips
- trace
- tracking
- upload
- vector
- web
- wmode
- wonderfl
- xml
- アニメーション
- イラスト
- ガジェット
- ガベージコレクション
- クラシックトゥイーン
- サンプルコード
- ショートカット
- タイムライン
- デコンパイラ
- デザインパターン
- デバッガ
- データ型
- バグ
- パブリッシュ設定
- フレーム
- ブログパーツ
- プラグイン
- プロパティ
- ボーンツール
- ポップアップブロック
- メモリ
- モーショントゥイーン
- リファクタリング
- リンケージ
- ローディング
- 勉強会
- 携帯
- 時計
- 書籍
- 正規表現
- 爆速
- 緑さん
- 縦書き
- 軽量化








