BilibiliLiveRecorder icon indicating copy to clipboard operation
BilibiliLiveRecorder copied to clipboard

pure-java B站/Acfun/斗鱼/虎牙/快手/抖音/YY/战旗/花椒 直播视频录制。仅需Java环境即可运行【维护模式,不主动新增Feature】

浣犳寚灏栬穬鍔ㄧ殑鐢靛厜,鏄垜姝ょ敓涓嶅彉鐨勪俊浠? src=

Go go go, Bilibili Pikachu!

BilibiliLiveRecorder

璇█java 鏀寔绯荤粺 Win/Linux/Mac 娴嬭瘯鐗堟湰64浣峎in10绯荤粺, jre 1.8.0_101 寮€婧愬崗璁瓵pache2.0
褰撳墠鐗堟湰 CI Release 涓嬭浇鎬婚噺

鏀寔Bilibili/Acfun/Douyu/Huya/Kuaishou/Huajiao/Zhanqi/YY 鐩存挱褰曞埗

Instruction For Developers

:smile:浣滆€呯殑璇?/h2>

鍋氫簡涓狿ython鐗堟湰鐨勶紝鏀寔A绔?B绔?鏂楅奔/蹇墜锛屾杩庡ぇ瀹舵坊鐮栧姞鐡?--> you-live

:smile:浣跨敤鏂规硶

  • 绋嬪簭璋冪敤鏃朵紶鍏ュ弬鏁板嵆鍙?椤哄簭鍙彉)
    java -Dfile.encoding=utf-8 -jar BiliLiveRecorder.jar "debug=false&check=false&delete=false&liver=douyu&id=233233&qn=0&retry=5"
  • 鍚勫弬鏁版剰涔?/li>
Key 蹇呴€?/th> 閲婁箟
options 鍚?/td> json閰嶇疆鏂囦欢浣嶇疆銆傛敮鎸佺浉瀵?缁濆璺緞銆傞粯璁?code>config.json
charset 鍚?/td> json閰嶇疆鏂囦欢缂栫爜鏍煎紡銆傞粯璁?code>UTF-8
debug 鍚?/td> debug妯″紡,杈撳嚭鏇村淇℃伅銆傞粯璁alse
check 鍚?/td> 涓嬭浇瀹屽悗鏄惁鏍″噯鏃堕棿鎴筹紝榛樿true
delete 鍚?/td> 鏍″噯鍚庢槸鍚﹀垹闄ゆ簮鏂囦欢锛岄粯璁rue
zip 鍚?/td> 鏄惁鍘嬬缉鎴恴ip鏂囦欢锛岄粯璁alse
liver 鏄?/td> 灏嗚褰曞埗鐨勭洿鎾簮銆?璇﹁涓嬭〃
id 鍚?/td> 鐩存挱鎴块棿id锛屽鏈紶鍏ワ紝鍚庣画灏嗘彁绀鸿緭鍏ャ€?/td>
qn 鍚?/td> 鐩存挱瑙嗛娓呮櫚搴︺€備笉鍚岀綉绔欏€兼剰涔変笉鍚屻€?1浠h〃鏈€楂樻竻鏅板害銆?/td>
qnPri 鍚?/td> 鐩存挱瑙嗛娓呮櫚搴︿紭鍏堢骇銆傚垎闅旂> 渚? 钃濆厜4M>钃濆厜>瓒呮竻 钃濆厜4M浼樺厛绾ф渶楂?/td>
retry 鍚?/td> 寮傚父瀵艰嚧褰曞埗鍋滄鍚庣殑閲嶈瘯娆℃暟銆傞粯璁?娆?/td>
fileSize 鍚?/td> 鍒嗘褰曞埗鐨勫弬鑰冩枃浠跺ぇ灏忥紝0涓轰笉鎸夋枃浠跺ぇ灏忓垎娈碉紝鍗曚綅MB銆傞粯璁?
filePeriod 鍚?/td> 鍒嗘褰曞埗鐨勫弬鑰冩椂闀匡紝0涓轰笉鎸夋椂闀垮垎娈碉紝鍗曚綅min銆傞粯璁?
proxy 鍚?/td> 鎸夐渶閰嶇疆銆俬ttp(s)浠g悊 e.g. 127.0.0.1:8888
socksProxy 鍚?/td> 鎸夐渶閰嶇疆銆俿ocks浠g悊 e.g. 127.0.0.1:1080
trustAllCert 鍚?/td> 鏄惁鏃犳潯浠朵俊浠绘墍鏈塖SL璇佷功銆傞粯璁alse
splitScriptTags 鍚?/td> 鏍″噯鏂囦欢鏃舵槸鍚﹀垎鍓睸criptTag銆傞粯璁alse
splitAVHeaderTags 鍚?/td> 鏍″噯鏂囦欢鏃舵槸鍚﹀垎鍓瞐/v header Tag鏃躲€傞粯璁や笌splitScriptTags涓€鑷?/td>
maxAudioHeaderSize 鍚?/td> 褰揂udio tag鐨刣ata size灏忎簬璇ュ€兼椂锛岃涓烘槸audio header銆傞粯璁?code>10
maxVideoHeaderSize 鍚?/td> 褰揤ideo tag鐨刣ata size灏忎簬璇ュ€兼椂锛岃涓烘槸video header銆傞粯璁?code>60
fileName 鍚?/td> 鏂囦欢鍛藉悕瑙勫垯锛岄粯璁?code>{name}-{shortId} 鐨剓liver}鐩存挱{startTime}-{seq}
timeFormat 鍚?/td> 鏂囦欢鍛藉悕涓瓄startTime}鍜寋endTime}鐨勬牸寮忥紝榛樿yyyy-MM-dd HH.mm
saveFolder 鍚?/td> 婧愭枃浠朵繚瀛樿矾寰?/td>
saveFolderAfterCheck 鍚?/td> FLV鏂囦欢鏍″噯鍚庣殑淇濆瓨璺緞锛宑heck涓簍rue鏃舵湁鏁堛€傞粯璁や负绌猴紝姝ゆ椂涓?code>saveFolder绛夊悓
stopAfterOffline 鍚?/td> 褰撶洰鏍囦笅鎾悗锛屾槸鍚﹀仠姝㈢▼搴忋€備负false鏃讹紝闇€瑕佸拰涓嬮潰涓変釜鍙傛暟閰嶅悎銆傞粯璁rue
retryIfLiveOff 鍚?/td> 褰撶洰鏍囦笉鍦ㄧ洿鎾椂锛屾槸鍚︾户缁噸璇曘€傞粯璁alse
maxRetryIfLiveOff 鍚?/td> 褰撶洰鏍囦笉鍦ㄧ洿鎾椂锛岀户缁噸璇曠殑娆℃暟銆傞粯璁?锛屾鏃朵細涓€鐩磋繘琛屽皾璇曪紝鐩村埌涓绘挱涓婄嚎
retryAfterMinutes 鍚?/td> 褰撶洰鏍囦笉鍦ㄧ洿鎾椂锛屾瘡娆¤幏鍙栫洿鎾棿淇℃伅鐨勬椂闂撮棿闅旓紝鍗曚綅鍒嗛挓銆傞粯璁?code>5.0
failRetryAfterMinutes 鍚?/td> 褰撹繛鎺ュ嚭鐜板紓甯告椂锛屼笅娆″皾璇曞綍鍒剁殑鏃堕棿闂撮殧锛屽崟浣嶅垎閽熴€傞粯璁?code>1.0
plugin 鍚?/td> 鎻掍欢鍔熻兘锛屽厑璁哥敤鎴疯嚜瀹氫箟鏌愪簺鎿嶄綔銆傞粯璁alse
  • 鍚勭洿鎾簮瑙f瀽鎯呭喌
liver 鏈€鍚庢祴璇曟椂闂?/th> 澶囨敞
douyu 2022/01/01 flv娓呮櫚搴﹀彲澶氶€夛紝浣嗛儴鍒嗛珮娓呴渶瑕乧ookie
kuaishou 2021/11/14 flv娓呮櫚搴﹀彲澶氶€夛紝蹇呴』瑕乧ookie(鍙互涓嶇櫥褰曪紝鍙渶瑕佽繃浜嗘嫋鎷介獙璇佸嵆鍙?
douyin 2021/11/14 flv娓呮櫚搴﹀彲澶氶€夛紝蹇呴』瑕乧ookie(鍙互涓嶇櫥褰曪紝鍙渶瑕佽繃浜嗘嫋鎷介獙璇佸嵆鍙€傛病鏈夋祴璇曠Щ鍔ㄧ闄愬畾鐙挱)銆俰d涓?code>https://live.douyin.com/1234567鍚庨潰鐨勯偅涓叉暟瀛楋紝涔熷彲浠ョ洿鎺ヨ緭鍏ョ煭缃戝潃绫诲瀷https://v.douyin.com/xxxx
huya 2021/11/14 flv娓呮櫚搴﹀彲澶氶€夛紝鍙笉闇€瑕乧ookie銆傞儴鍒嗚棰戞椂闂存埑鏍℃鍚庡0闊充細鍙樺舰锛宖fmpeg澶勭悊鍚庢甯?/td>
acfun 2021/11/14 flv娓呮櫚搴﹀彲澶氶€夛紝鍙笉闇€瑕乧ookie
bili 2021/11/14 flv娓呮櫚搴﹀彲澶氶€夛紝鍙笉闇€瑕乧ookie
zhanqi 2019/06/30 flv娓呮櫚搴﹀彲澶氶€夛紝鍙笉闇€瑕乧ookie
yy 2019/06/15 flv鍙敮鎸侀粯璁ゆ竻鏅板害
huajiao 2019/06/02 flv鍙敮鎸侀粯璁ゆ竻鏅板害(浼间箮鍙湁涓€绉嶆竻鏅板害)
鍏充簬json閰嶇疆
  • 濡傚嚭鐜颁贡鐮侊紝璇峰皾璇曞皢charset璁句负涓嶅悓鐨勫€硷紝渚嬪charset=GBK
  • 鏀寔鏂囦欢閰嶇疆 + 鍙傛暟瀛楃涓叉贩鐢紝姝ゆ椂鐩存帴浼犲叆鐨勫弬鏁伴厤缃嫢鏈夋洿楂樹紭鍏堢骇锛屼緥濡?/li>
鍋囪浼犲叆鍙傛暟涓猴細 
    options=D:\\Workspace\\config.json&liver=huya

瀵瑰簲鐨刯son鏂囦欢涓猴細
{
    "debug": false,
    "check": true,
    "delete": true,
    "zip": false,
    "liver": "bili",
    "retry": 5,
    "fileSize": 0,
    "filePeriod": 0,
    "splitScriptTags": false,
    "splitAVHeaderTags": false,
    "fileName": "{name}-{shortId} 鐨剓liver}鐩存挱{startTime}-{seq}",
    "timeFormat": "yyyy-MM-dd HH.mm",
    "retryIfLiveOff": false,
    "maxRetryIfLiveOff": 0,
    "retryAfterMinutes": 5.0,
    "plugin": false,
    "stopAfterOffline": true
}

閭d箞锛屾鏃剁敓鏁堢殑liver搴旇涓猴細 huya
鏍℃鏌怓LV鏂囦欢鐨勬椂闂存埑
  • java -Dfile.encoding=utf-8 -cp BiliLiveRecorder.jar nicelee.bilibili.live.check.FlvCheckerWithBufferEx "flv=婧愭枃浠惰矾寰?amp;debug=false&splitScripts=true&splitAVHeader=true&saveFolder=淇濆瓨鐨勬枃浠跺す璺緞"
Key 蹇呴€?/th> 閲婁箟
flv 鏄?/td> 婧愭枃浠惰矾寰?/td>
debug 鍚?/td> debug妯″紡,杈撳嚭鏇村淇℃伅銆傞粯璁rue
splitScripts 鍚?/td> 褰撳嚭鐜板涓猄cript tag鏃讹紝鏄惁鍒嗗壊鏂囦欢銆傞粯璁alse
splitAVHeaders 鍚?/td> 褰撳嚭鐜板涓猘/v header鏃讹紝鏄惁鍒嗗壊鏂囦欢銆傞粯璁や笌splitScripts涓€鑷?/td>
saveFolder 鍚?/td> 鏍″噯鏃堕棿鎴冲悗鐨勪繚瀛樼洰褰曘€傞粯璁や笌婧愭枃浠剁浉鍚岀洰褰?/td>
deleteOnchecked 鍚?/td> 鏍″噯鍚庢槸鍚﹀垹闄ゆ簮鏂囦欢锛岄粯璁alse
maxAudioHeaderSize 鍚?/td> 褰揂udio tag鐨刣ata size灏忎簬璇ュ€兼椂锛岃涓烘槸audio header銆傞粯璁?code>10
maxVideoHeaderSize 鍚?/td> 褰揤ideo tag鐨刣ata size灏忎簬璇ュ€兼椂锛岃涓烘槸video header銆傞粯璁?code>60
  • 鏃х増鏈殑璋冪敤鏂规硶浠嶇劧鍏煎锛屼絾鍔熻兘宸茬粡涓嶅啀鏇存柊
  • 褰?strong>涓绘挱pk/鏇存崲璁惧/淇敼鎺ㄦ祦鍙傛暟/鏃嬭浆鐢婚潰/缃戠粶涓嶇ǔ瀹?/strong>鏃讹紝鍙兘鍑虹幇璁稿寮傚父鎯呭喌銆?
    • splitScripts鍜?code>splitAVHeaders鍙傛暟灏辨槸閽堝杩欎簺寮傚父閲囧彇鐨勬煇浜涘鐞嗐€?/li>
    • 褰撳綍鍒舵甯告椂锛屼笂闈袱涓弬鏁板熀鏈病鏈夊奖鍝嶃€?/li>
    • 娉ㄦ剰锛氳繖浜涙搷浣?strong>娌℃硶杩樺師锛屾墍浠ョ悊璁轰笂鍘熷鏂囦欢鏈€淇濈湡銆? 涓嶆牎楠屾椂闂存埑 鈮?鏍¢獙鏂囦欢涓嶅垎鍓?/code> > 鏍¢獙鏂囦欢鍒嗗壊script/video header/audio header
鍔犺浇cookies(閫傜敤浜庨珮娓呮櫚搴﹀綍鍒?
  • 灏哻ookie淇濆瓨鍒板悓绾х洰褰曠殑{liver}-cookie.txt鍗冲彲锛宔.g. douyu-cookie.txt
  • cookie鍐呭涓轰互涓嬫牸寮忥細
dy_did=xxx; acf_did=xxx; acf_auth=xxx; ...
  • 濡備綍鑾峰彇cookie(浠ユ枟楸间妇渚?锛?
    • 鎵撳紑娴忚鍣紝杩涘叆鏂楅奔鐩存挱
    • 鐧诲綍璐﹀彿
    • 杩涘叆涓€涓儹搴﹁緝楂樼殑鐩存挱闂达紝閫夋嫨娓呮櫚搴︼細 钃濆厜10M(淇濋櫓鎿嶄綔锛屽鏋滄竻鏅板害涓嶅璇曚竴璇?
    • 鎸塅12閿?/li>
    • 杩囨护缃戝潃www.douyu.com
    • 浠绘剰閫夋嫨涓€鏉¤褰曪紝澶嶅埗鍙宠竟鐨刢ookie锛屽涓嬪浘
鍏充簬Plugin
  • 鍐欐鐨勬枃浠朵綅缃細plugin/CustomOperation.java
  • 鍙互鏂板import鍜岃嚜瀹氫箟鍚勭鏂规硶
  • 鍙互璋冪敤鍙﹀鐨勫簱锛岃繖鏃堕渶瑕?code>java -jar鎹㈡垚 java -cp鐨勫舰寮忥紝璇峰杽鐢ㄦ悳绱?/li>
  • 褰揚lugin鏂囦欢鍙戠敓鍙樺寲鏃讹紝璇峰厛鍒犻櫎杩愯鏃剁紪璇戠殑class鏂囦欢锛屽惁鍒欎笉浼氱敓鏁?/li>
鍏充簬鏂囦欢鍛藉悕瑙勫垯
  • 璇峰嬁浼犲叆闈炴硶瀛楃锛屽&
  • 寤鸿淇濈暀{startTime}鍜?code>{seq}锛屼互纭繚鏂囦欢鍚嶅敮涓€锛屽惁鍒欏緢鍙兘鍑虹幇鏈煡閿欒
  • 鏍″噯鏃堕棿鎴宠繖涓€鍔ㄤ綔灏嗕細浜х敓鑻ュ共涓枃浠讹紝杩欎簺鏂囦欢灏嗗湪鍘熸潵鐨勫熀纭€涓婂鍔?checked[0-9]+鍚庣紑
  • 涓句緥锛?/li>
fileName={name}-{shortId} 鐨剓liver}鐩存挱{startTime}-{seq}&filePeriod=20&check=false
閭d箞锛屼竴涓彲鑳界殑缁撴灉鏄細
鑻遍泟鑱旂洘璧涗簨-288016 鐨刣ouyu鐩存挱 2019-09-19 17.40-0.flv
鑻遍泟鑱旂洘璧涗簨-288016 鐨刣ouyu鐩存挱 2019-09-19 18.00-1.flv

fileName={name}-{shortId} 鐨剓liver}鐩存挱{startTime}-{seq}&filePeriod=20&check=true
澧炲姞鏃堕棿鎴虫牎鍑嗗姩浣溿€傞偅涔堬紝涓€涓彲鑳界殑缁撴灉鏄細
鑻遍泟鑱旂洘璧涗簨-288016 鐨刣ouyu鐩存挱 2019-09-19 17.40-0-checked0.flv
鑻遍泟鑱旂洘璧涗簨-288016 鐨刣ouyu鐩存挱 2019-09-19 18.00-1-checked0.flv
```	

| Key  | 閲婁箟 | 鏀寔saveFolder |    
| ------------- | ------------- | ------------- | 
| name      | 涓绘挱鍚嶇О | 鏄?| 
| shortId    | 鐩存挱缃戝潃id |  鏄?| 
| roomId     | 瀹為檯鎴块棿id锛屽彲鑳戒笌shortId涓嶅悓 |   鏄?|  
| liver     | 鐩存挱婧愶紝鍚屼紶鍏ュ弬鏁?|    鏄?| 
| startTime     | 褰曞埗寮€濮嬫椂闂达紝绮剧‘鍒板垎锛屼緥濡?019-11-19 20.18 |   鏄?| 
| endTime     | 褰曞埗寮€濮嬫椂闂达紝绮剧‘鍒板垎锛屼緥濡?019-11-19 20.18 |  鍚?| 
| seq     | 褰曞埗浜х敓鐨勬枃浠跺簭鍙枫€備粠0寮€濮嬶紱鍒嗘褰曞埗鎴栧紓甯搁噸璇曞潎浼氫娇搴忓彿澧炲ぇ |  鍚?| 
</details>

	

<details>
<summary>鍏充簬娓呮櫚搴﹁鍒?ver>=2.5.0)</summary>


+ `qn`鍜宍qnPri`鍙互鍚屾椂瀛樺湪锛屼紭鍏堣€冭檻`qnPri`锛岃嫢鍖归厤澶辫触锛屽啀鑰冭檻浼犲叆鐨刞qn` 

鍙彁渚涚洿鎾川閲? 0 : 瓒呮竻 2 : 楂樻竻 1 : 娴佺晠 浼犲叆鍙傛暟锛?qn=2&qnPri=钃濆厜4M>钃濆厜 姝ゆ椂鍙?2 : 楂樻竻

鍙彁渚涚洿鎾川閲? 0 : 钃濆厜 3 : 瓒呮竻 2 : 楂樻竻 1 : 娴佺晠 浼犲叆鍙傛暟锛?qn=2&qnPri=钃濆厜4M>钃濆厜 姝ゆ椂鍙?0 : 钃濆厜


+ 褰撴湭浼犲叆qn锛屼笖(qnPri涓虹┖鎴栦笉鍖归厤)锛岀▼搴忓皢鎻愮ず杈撳叆qn鍊?

鍙彁渚涚洿鎾川閲? 0 : 瓒呮竻 2 : 楂樻竻 1 : 娴佺晠 浼犲叆鍙傛暟锛?涓嶅寘鍚玵n銆乹nPri
or浼犲叆鍙傛暟锛?qnPri=钃濆厜4M>钃濆厜 姝ゆ椂绋嬪簭灏嗘彁绀鸿緭鍏n鍊?/p>


+ 褰撴寚瀹歲n鐢熸晥(鎸噏nPri涓虹┖鎴栦笉鍖归厤)锛屼笖鑾峰彇鐨勬竻鏅板害鍒楄〃涓嶅瓨鍦ㄨ娓呮櫚搴﹀€兼椂锛岀▼搴忓皢閫€鍑?

鍙彁渚涚洿鎾川閲? 0 : 瓒呮竻 2 : 楂樻竻 1 : 娴佺晠 浼犲叆鍙傛暟锛?qn=4 姝ゆ椂绋嬪簭灏嗛€€鍑?浼犲叆鍙傛暟锛?qn=4&qnPri=钃濆厜4M>钃濆厜 姝ゆ椂绋嬪簭灏嗛€€鍑?/p>

</details>

    
    
    
<details>
<summary>鍏充簬鑾峰彇 鎴块棿id</summary>


濡備笅鍥撅細  
![](/release/preview/id.png)  
</details>  


<details>
<summary>杩愯鎴浘</summary>


濡備笅鍥撅細  
![](/release/preview/run.png)  
</details>      


## :smile:鍏跺畠  
* **鏀寔UI鐨勭畝鍗曟槗鎿嶄綔鐨凚绔欒棰戜笅杞藉櫒**锛歔https://github.com/nICEnnnnnnnLee/BilibiliDown](https://github.com/nICEnnnnnnnLee/BilibiliDown)
* **涓嬭浇鍦板潃**: [https://github.com/nICEnnnnnnnLee/BilibiliLiveRecorder/releases](https://github.com/nICEnnnnnnnLee/BilibiliLiveRecorder/releases)
* **GitHub**: [https://github.com/nICEnnnnnnnLee/BilibiliLiveRecorder](https://github.com/nICEnnnnnnnLee/BilibiliLiveRecorder)  
* **鏇存柊鍘嗗彶**: <https://github.com/nICEnnnnnnnLee/BilibiliLiveRecorder/blob/master/UPDATE.md>

## :smile:绗笁鏂瑰簱浣跨敤澹版槑  
+ 浣跨敤[JSON.org](https://github.com/stleary/JSON-java)搴撳仛绠€鍗曠殑Json瑙f瀽[![](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/stleary/JSON-java/blob/master/LICENSE)
+ 浣跨敤[Crypto-js](https://github.com/brix/crypto-js)浠挎祻瑙堝櫒鐢熸垚鏂楅奔鐩存挱褰曞埗token[![](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/brix/crypto-js/blob/develop/LICENSE) 
+ 铏庣墮瀵瑰緱鍒扮殑鐩存挱娴佸湴鍧€鍋氳繘涓€姝ュ弬鏁板鐞嗗弬鑰冧簡[wbt5/real-url](https://github.com/wbt5/real-url/blob/df183eee17022d558cfc2aec221dfe632e360b13/huya.py#L11-L28)  

## :smile:LICENSE 

Copyright (C) 2019 NiceLee. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.