-
-
Save oh-sky/10576857 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## STEP0. はじめに | |
http://www.nicovideo.jp/watch/1380872606 | |
上記の動画を例にDL方法を解説する | |
## STEP1. パラメータの取得 | |
http://flapi.nicovideo.jp/api/getflv/1380872606 | |
上記URLをログインした状態(Cookieが設定されている状態)でGETする | |
クエリ文字列がレスポンスとして得られる | |
これをkeyとvalueに分割してURLデコードすることで連想配列を得る | |
今回の例では、 | |
urlキーの値「rtmpe://smile-chefsf.nicovideo.jp/smile?m=mp4:21968710.95779」のうち、 | |
「smile-chefsf.nicovideo.jp」をHOSTとして、 | |
「rtmpe://smile-chefsf.nicovideo.jp/smile」をTC_URLとして、 | |
「mp4:21968710.95779」をPLAYPATHとして使う | |
また、fmstキーの値「1382088230:272c4c4c0a951fd4c79a4b3c5e6a63a9ffcaffd3」のうち、 | |
コロンで区切られた左側部分「1382088230」をFMST_2として、 | |
右側部分「272c4c4c0a951fd4c79a4b3c5e6a63a9ffcaffd3」をFMST_1として使う | |
## STEP 2. ダウンロード | |
必要なパラメータを変数に設定しておく | |
PAGE_URLには対象動画の閲覧URLを与える | |
SWF_URLとFLASH_VERについては、rtmpsuckを使って調べた結果をそのまま使っている | |
今後、指定すべき文字列が仕様変更で変わることもあるかもしれない | |
$ HOST=smile-chefsf.nicovideo.jp | |
$ TC_URL=rtmpe://smile-chefsf.nicovideo.jp/smile | |
$ PAGE_URL=http://www.nicovideo.jp/watch/1380872606 | |
$ SWF_URL=http://res.nimg.jp/swf/player/secure_nccreator.swf?t=201111091500 | |
$ FLASH_VER="WIN 11,6,602,180" | |
$ PLAYPATH=mp4:21968710.95779 | |
$ FMST_1=272c4c4c0a951fd4c79a4b3c5e6a63a9ffcaffd3 | |
$ FMST_2=1382088230 | |
以上のパラメータを与えてrtmpdumpを実行する | |
今回使ったrtmpdumpはgit://git.ffmpeg.org/rtmpdumpのソースをコンパイルしたもので、 | |
コンパイル時点でのHEADはコミット番号「a9f353c7ccf29d6305e13fedb77653b8681e9fc2」だった | |
$ ./rtmpdump \ | |
-l 2 \ | |
-a smile \ | |
-n $HOST \ | |
-t $TC_URL \ | |
-p $PAGE_URL \ | |
-s $SWF_URL \ | |
-f "$FLASH_VER" \ | |
-y $PLAYPATH \ | |
-C S:$FMST_1 \ | |
-C S:$FMST_2 \ | |
-C S:$PLAYPATH \ | |
-o output.flv | |
うまくいけば、以下の様な出力を得る | |
output.flvには途中までダウンロードした結果が保存されているはず | |
RTMPDump v2.4 | |
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL | |
WARNING: You haven't specified a port (--port) or rtmp url (-r), using default port 1935 | |
Connecting ... | |
INFO: Connected... | |
ERROR: HandleCtrl: Ignoring SWFVerification request, use --swfVfy! | |
Starting download at: 0.000 kB | |
INFO: Metadata: | |
INFO: duration 1420.03 | |
INFO: moovPosition 28.00 | |
INFO: width 640.00 | |
INFO: height 360.00 | |
INFO: videocodecid avc1 | |
INFO: audiocodecid mp4a | |
INFO: avcprofile 77.00 | |
INFO: avclevel 31.00 | |
INFO: aacaot 2.00 | |
INFO: videoframerate 29.97 | |
INFO: audiosamplerate 48000.00 | |
INFO: audiochannels 2.00 | |
INFO: tags: | |
INFO: cprt-und SMILEVIDEO_MP4 | |
INFO: trackinfo: | |
INFO: length 85201116.00 | |
INFO: timescale 60000.00 | |
INFO: language und | |
INFO: sampledescription: | |
INFO: sampletype avc1 | |
INFO: length 68161536.00 | |
INFO: timescale 48000.00 | |
INFO: language und | |
INFO: sampledescription: | |
INFO: sampletype mp4a | |
11399.523 kB / 117.22 sec (8.2%) | |
ERROR: RTMP_ReadPacket, failed to read RTMP packet header | |
12335.273 kB / 124.59 sec (8.7%) | |
Download may be incomplete (downloaded about 8.70%), try resuming | |
ダウンロードが不完全なので、 | |
パラメータに-eを加えて何回かrtmpdumpを実行する | |
パーセンテージが100%に到達すればダウンロード完了となる |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment