-
要rtmpdump
-
生
石川典行の配信を例に取る。
http://twitcasting.tv/streamserver.php?mode=view&appid=TCViewerFlash&rtmp=1&target=icchy8591
レスポンス 例 edge101.moi.st/publisher/214392821-f554a8fe319b8e13.stream?is_publisher=0:1935:GET :icchy8591:214392821
rtmpdump -r "rtmp://edge101.moi.st/publisher/214392821-f554a8fe319b8e13.stream" -y "publisher/214392821-f554a8fe319b8e13.stream?is_publisher=0" -y icchy8591 -o output.flv
コメント 初回 例 http://twitcasting.tv/noriyukicas/userajax.php?c=listupdate&m=212328387
mは放送ID
コメント 順次 例 http://twitcasting.tv/noriyukicas/userajax.php?c=listupdate&m=212328387&n=707&k=5281821521
nは前回のcnumの値、kは前回の末尾のコメントID -
録画
htmlソースをmovie_file_pathで検索。
<input type="hidden" id="movie_file_path" value="http://dl01.twitcasting.tv/icchy8591/download/210802845
のvalueをダウンロード。
コメント 初回 例 http://twitcasting.tv/icchy8591/userajax.php?c=list&m=210802845&k=0&f=0&n=20
コメント 順次 例 http://twitcasting.tv/icchy8591/userajax.php?c=list&m=210802845&k=5255081404&f=20&n=20
-
要rtmpdump・curl・ffmpeg
-
生
[BID]は例えばhttp://afreecatv.jp/34774021の34774021
[VID]は例えばhttp://www.afreecatv.jp/34774021/v/270487
または、http://community.afreecatv.jp/video_view.php?user_id=34774021&vno=270487
の270487
curl -o out.json -F "rt=json" -F "pt=view" -F "lc=ja_JP" -F "bid=[BID]" "http://api.afreecatv.jp/live/view_live.php"
jsonのpurlからrtmpのURLを取得できる
rtmpdump -vr "rtmp://*.live.edgefcs.net" --app "live" --playpath="AfreecaAWSJapan_55@*" -o out.flv
-
録画
curl -o out.json -F "vno=[VID]" -F "rt=json" -F "lc=ja_JP" -F "bid=[BID]" -F "pt=view" -F "cptc=HLS" "http://api.afreecatv.jp/video/view_video.php"
file(コメントはchat)のURLを使う。fileのURLは複数ある可能性がある。/を/に置換する。
前もってhttp://www.openspc2.org/JavaScript/library/system/useragent/
などでブラウザのユーザーエージェント(UA)を調べておく。
ffmpeg -user-agent [UA] -c copy -i "[URL]" out.ts
複数あった場合は
cd [tsファイルのフォルダ]
ffmpeg -y -i "concat:tsファイル名1|tsファイル名2|…|tsファイル名最後" -c copy -bsf:a aac_adtstoasc out.mp4
のように実行し、連結したmp4を作ることもできる。
-
要rtmpdump・curl・wireshark
-
生
永井先生の配信を例に取る。
curl -o out.json -F "type=watch" -F "json=1" -F "streamid=70772714" -F "test_type=PC" "http://live.fc2.com/api/server.php"
レスポンス→SWF_RTMPSERVER SWF_TOKEN
クッキー→l_ortkn
rtmpdump -vr "rtmp://edge5000.live.g.fc2.com:1935/fc2live2/70772714?login_token=b30cf4ff7ff9d771f3c66b09425a5bfd5c17bbce&orz_token=bd7cebe1f190cf736e6c797411f9f01b351c42c4&pflg=0&new_player=1&device=PC" -a "fc2live2/70772714?login_token=b30cf4ff7ff9d771f3c66b09425a5bfd5c17bbce&orz_token=bd7cebe1f190cf736e6c797411f9f01b351c42c4&pflg=0&new_player=1&device=PC" -o out.flv
コメント 順次 rtmptのSendCommentEventをwiresharkで拾う -
ライブ録画
FC2動画と同じ仕様?
curl -o out.json -F "userid=70772714" -F "isadult=0" -F "publish=0" -F "per_page=100" -F "page=1" "http://live.fc2.com/api/videoList.php"
jsonが返る statusがokなら成功 idがupidに相当する
URLを生成 例 http://video.fc2.com/ginfo.php?mimi=e5edc8051396752be2e496c991bc18b5&tk=TnpJMk56YzBOREE9&gk=2J1T1J0RCB&upid=20151028wfxHHebh
パラメータ mimiはupid_gGddgPfeaf_gzyrをmd5
パラメータ gkはhtml内のfunction cass()
URLにブラウザのユーザーエージェントでアクセスしflvのURLを取得
例 http://vip.cvideocache3.fc2.com/videocache/up/flv/201510/28/w/20151028wfxHHebh.flv&mid=ec11b2415698e2b6c10fb68b706550d4
ブラウザのユーザーエージェントでダウンロード
コメント 例 http://comment.saymove.org/1502000/1502955.xml
コメントxmlのIDはhtml内FlashVarsのci -
タイムシフト
有料でないと見れない。2016年正月以来試してない。仕様変更の可能性あり。
curl -o out.json -F "mode=userlist" -F "userid=70772714" -F "offset=0" -F "limit=2000" "http://live.fc2.com/api/timeshiftList.php"
jsonが返る statusが1なら成功 taskIdが放送ID
動画curl -b "fcu=29865359-82fffe9c62857c8661e8e790585fe4d4-54794ac8ff75a8c00c098447a3359616-6a9d0ed2-1447927133-218-691dbd42adeadf1eb5ecc39be12d36c4" -o "out.flv" "http://live.fc2.com/api/getMovieData.php?id=13670161"
コメントcurl -b "fcu=29865359-82fffe9c62857c8661e8e790585fe4d4-54794ac8ff75a8c00c098447a3359616-6a9d0ed2-1447927133-218-691dbd42adeadf1eb5ecc39be12d36c4" -o "out.json" "http://live.fc2.com/api/getMovieComment.php?id=13670161"
-
要rtmpdump
-
生
htmlソース内にあるf4mを取得しrtmpのURLを取得 例 rtmp://s-tokyo223.livetube.cc/stream/aaaacufmzpoos
rtmpdump -vr "rtmp://s-tokyo223.livetube.cc/stream/aaaacufmzpoos" -o out.flv
コメント 初回 例 https://livetube.cc/stream/aaaacufuhxzxm.comments
stream/の次はhtml内のvar comment_entry_id
コメント 順次 例 https://livetube.cc/stream/aaaacufuhxzxm.comments.2118 -
録画
htmlソース内のhttp://.livetube.cc/stream/.flvを落とす
コメント https://livetube.cc/stream/[comment_entry_id].comments で一挙取得
-
要curl
-
生
暗号化されたrtmpe方式を使ってるため、まだ打開してません。難しいと思われ。 -
録画
[VID]は例えばhttps://www.cavelis.net/view/86959BFA323842B29E869C43DB894DC5
の86959BFA323842B29E869C43DB894DC5
curl -O -e "https://www.cavelis.net/view/[VID]" "http://rec2.cavelis.net/media1/[VID].flv"
リファラ必要-eで指定、サーバはrec1かrec2
コメントcurl -o out.json "http://ws.cavelis.net/comment/[VID]?start=0&limit=1000"
-
要ffmpeg
-
生
動画もコメントも過去に遡って取得できる。
[PID]はhttps://movie.freshlive.tv/manifest/[VID]/live.m3u8 から取得
一番下が高画質
ffmpeg -i https://movie.freshlive.tv/playlist/[PID].m3u8 -c copy out.ts
コメント 初回curl -o out.json "https://freshlive.tv/proxy/Comment;count=200;maxMillisecond=0;order=asc;programId=[VID]?returnMeta=true"
コメント 2回目curl -o out.json "https://freshlive.tv/proxy/Comment;count=200;order=asc;programId=[VID];sinceMillisecond=32?returnMeta=true"
コメント 3回目以降curl -o out.json "https://freshlive.tv/proxy/Comment;count=200;order=asc;programId=[VID];sinceMillisecond=[sec]?returnMeta=true"
[sec]には2回目で取得したjsonの最後のコメントのmillisecondの値を入れる -
録画
生とほぼ同じ要領・違いは[PID]取得のURLのみ。
[PID]はhttps://movie.freshlive.tv/manifest/[VID]/archive.m3u8 から取得
-
要chrome・curl・ffmpeg
-
生
chromeでタブを開き、F12でデベロッパーツールを出す。Networkタブをクリックし表示させフィルターのテキストボックスにm3u8と入力しておく。
https://www.openrec.tv/live/YE8fxVr_MKA の形式の録画視聴URLを開き、デベロッパーツールを注目。
10秒以内にchunklist.m3u8が表示されるので右クリックし、Copy → Copy link addressffmpeg -i "[URL]" -c copy out.ts
コメント デベロッパーツール、Networkタブ、フィルターにchat/listと入力して、表示されたのを右クリックし、Copy → Copy link address
curl -o out.json "[URL]"
2回目以降は、[URL]のfrom_dtは前回のto_dtに1秒足した日付を使う。半角スペースは+に、コロンは%3Aになっている。
to_dtはデフォルトでfrom_dtの1分後の日付。1度に最大1000件までコメントを取得できるので10分後の日付でも大丈夫なはず。
from_dt、to_dt無しで定期的に取得し、ダブリを除くのもありかもしれない。 -
録画
生と同じ要領で録画できる。
-
要chrome・curl・ffmpeg・limechat
-
生
chromeでタブを開き、F12でデベロッパーツールを出す。Networkタブをクリックし表示させフィルターのテキストボックスにm3u8と入力しておく。
https://www.twitch.tv/rnqq の形式のURLを開き、デベロッパーツールを注目。
10秒以内に通信されたm3u8が表示されるはず。一番上に表示されたm3u8をクリックし、右側に表示された内容のうち/high/が入っている行を[URL]とする。
他はそれより低画質なのでサイズが小さいほうが良ければ、そのURLを使う。
ffmpeg -i "[URL]" -c copy out.ts
コメント IRC方式なのでLimechatを入れてログを自動保存する。下記URLを参考に。
http://rta-play.info/release/broadcast/twitch/chat/limechat/ -
録画
動画のダウンロードのやり方は生とほぼ同じ。録画視聴URLの形式は、https://www.twitch.tv/rnqq/v/89452918 のようにvが入ってるやつ。
コメント 例えばhttps://www.twitch.tv/rnqq/v/89452918 の89452918を[VID]とする。
curl -o out.json "https://rechat.twitch.tv/rechat-messages?start=0&video_id=v[VID]"
not between [START] and [END]というようなエラーメッセージが表示されるはず。
初回はcurl -o out.json "https://rechat.twitch.tv/rechat-messages?start=[START]&video_id=v[VID]"
以降、30秒ずつ足した値で実行していき、[END]に達するまで続ける。
for HLS streaming, livestreamer (use hlsvariant://URL) would be a better choice with a greater stability. checkout my scripts for twitcasting / showroom / ustreamtv (jq is required for json parsing):
https://gist.github.com/fcicq/93106778ebea9e31bab5
https://gist.github.com/fcicq/fd5de9a677e012d06110
https://gist.github.com/fcicq/3154529395659339082b