Skip to content

Instantly share code, notes, and snippets.

@rokugasenpai
Last active December 17, 2023 09:50
Show Gist options
  • Star 50 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save rokugasenpai/cdaff5eac2e88e6b9efe412982e7ae31 to your computer and use it in GitHub Desktop.
Save rokugasenpai/cdaff5eac2e88e6b9efe412982e7ae31 to your computer and use it in GitHub Desktop.
各ストリーミング配信のダウンロード方法(要curl・ffmpeg・rtmpdump・chrome・limechat・wireshark)

ツイキャス

アフリカTV

  • 要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を作ることもできる。

FC2

  • 要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"

らいつべ

かべつべ

  • 要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 から取得

openrec

  • 要chrome・curl・ffmpeg


  • chromeでタブを開き、F12でデベロッパーツールを出す。Networkタブをクリックし表示させフィルターのテキストボックスにm3u8と入力しておく。
    https://www.openrec.tv/live/YE8fxVr_MKA の形式の録画視聴URLを開き、デベロッパーツールを注目。
    10秒以内にchunklist.m3u8が表示されるので右クリックし、Copy → Copy link address   ffmpeg -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無しで定期的に取得し、ダブリを除くのもありかもしれない。

  • 録画
       生と同じ要領で録画できる。

twitch

  • 要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]に達するまで続ける。

@fcicq
Copy link

fcicq commented Oct 14, 2016

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

@Procyon3
Copy link

Procyon3 commented Aug 1, 2017

fc2 live doesn't work anymore.

This page doesn't exist: live.fc2.com/api/server.php

What could be their new server API?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment