BilibiliLiveRecorder
BilibiliLiveRecorder copied to clipboard
pure-java B站/Acfun/斗鱼/虎牙/快手/抖音/YY/战旗/花椒 直播视频录制。仅需Java环境即可运行【维护模式,不主动新增Feature】
Go go go, Bilibili Pikachu!
BilibiliLiveRecorder
鏀寔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>
濡備笅鍥撅細

</details>
<details>
<summary>杩愯鎴浘</summary>
濡備笅鍥撅細

</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://github.com/stleary/JSON-java/blob/master/LICENSE)
+ 浣跨敤[Crypto-js](https://github.com/brix/crypto-js)浠挎祻瑙堝櫒鐢熸垚鏂楅奔鐩存挱褰曞埗token[](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.