THMonster / Revda

Tools to play live stream with danmaku.
GNU General Public License v2.0
214 stars 12 forks source link

播放B站视频和斗鱼直播的一些问题 #15

Closed jian-lin closed 3 years ago

jian-lin commented 3 years ago

有一些B站视频不能播放,只会弹一个mpv的界面。 图片

$ qlphelper -d -u https://www.bilibili.com/video/BV11z4y1y7AP
Debug: ("/usr/share/QLivePlayer/streamfinder.pyz", "https://www.bilibili.com/video/BV11z4y1y7AP?p=1", "") (:0, )
Debug: "No module named '_quickjs'\n" (:0, )
Debug: "title:前方高燃!给我15秒  让你感受奥特曼的视觉盛宴!! - 全奥混剪111\n" (:0, )
Debug: "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/76/42/257624276/257624276_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606730998&gen=playurl&os=kodobv&oi=613947525&trid=9c6bfc9874e44b858506995588065523u&platform=pc&upsig=ffa67f987d84f51cade007614626872f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/76/42/257624276/257624276_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606730998&gen=playurl&os=cosbv&oi=613947525&trid=9c6bfc9874e44b858506995588065523u&platform=pc&upsig=a2cef363eb135feb08f8884e82ec6494&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/76/42/257624276/257624276-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606730998&gen=playurl&os=kodobv&oi=613947525&trid=9c6bfc9874e44b858506995588065523u&platform=pc&upsig=edae2ec5ff89462b73dfc9ae09b92aea&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: QVector("") 1 (:0, )
QIODevice::write (QLocalSocket): device not open
QIODevice::write (QLocalSocket): device not open
jian-lin commented 3 years ago

同一个视频多试几次,偶尔能播放。 下面是成功播放的输出:

$ qlphelper -d -u https://www.bilibili.com/video/BV11z4y1y7AP
Debug: ("/usr/share/QLivePlayer/streamfinder.pyz", "https://www.bilibili.com/video/BV11z4y1y7AP?p=1", "") (:0, )
Debug: "No module named '_quickjs'\n" (:0, )
Debug: "title:前方高燃!给我15秒  让你感受奥特曼的视觉盛宴!! - 全奥混剪111\n" (:0, )
Debug: "http://cn-sh-cc-bcache-02.bilivideo.com/upgcxcode/76/42/257624276/257624276_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606731210&gen=playurl&os=bcache&oi=3550630213&trid=74bb30ec35b54ca4a5a41e916245d283u&platform=pc&upsig=88cabd4b656cbb132edaee086b5e04e1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&cdnid=2215&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/76/42/257624276/257624276_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606731210&gen=playurl&os=cosbv&oi=3550630213&trid=74bb30ec35b54ca4a5a41e916245d283u&platform=pc&upsig=d3a720f705640868484dbdb08f618344&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: "http://cn-sh-cc-bcache-03.bilivideo.com/upgcxcode/76/42/257624276/257624276-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606731210&gen=playurl&os=bcache&oi=3550630213&trid=74bb30ec35b54ca4a5a41e916245d283u&platform=pc&upsig=922eee58a10b9931843359184e9dc9db&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&cdnid=2216&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: QVector("") 1 (:0, )
jian-lin commented 3 years ago

QIODevice::write (QLocalSocket): device not open

网络问题会产生这样的错误吗?

我试了斗鱼直播,会有另一种问题:先卡在下面的状态一段时间(大约几分钟),然后会弹出mpv,之后就能正常播放直播。

$ qlphelper -d -u https://www.douyu.com/110
Finding stream...
Debug: streamer started (:0, )
Debug: danmaku launcher started (:0, )
Debug: ffmpeg started (:0, )
Debug: mpv started (:0, )
Debug: "https://play1.edgesrv.com/live/110rq1pThC14zzZL.flv?wsAuth=1b51c2e412932cdebca08d959b46abbd&token=web-h5-0-110-4fc5529cfe53177cea1f39d88fb65efc70931bd9f0292c64&logo=0&expire=0&did=ac6456120f4e48c083ac2651a703a36b&pt=2&st=0&vhost=play1&origin=tct&mix=0&isp=cmcc&pushdouyu=1" (:0, )

后面的输出是这样的:

Debug: streamlink exited!!!! (:0, )
Debug: danmaku launcher started (:0, )
Finding stream...
Debug: streamer started (:0, )
Debug: waiting for ffmpeg exit! (:0, )
Debug: ffmpeg started (:0, )
Debug: mpv started (:0, )
Debug: "https://play1.edgesrv.com/live/110rq1pThC14zzZL.flv?wsAuth=eed6934c5133ea7f8d285f88d540fccb&token=web-h5-0-110-4fc5529cfe53177c82c2efee83c563e5192676ab60ed612e&logo=0&expire=0&did=d345b416e912401c82c6a39e09e49612&pt=2&st=0&vhost=play1&origin=tct&mix=0&isp=cmcc&pushdouyu=1" (:0, )
Debug: stream started! (:0, )
Debug: Danmaku process started! (:0, )
[缚道白边黑骑士] 主播就是DD斩首吗
Debug: 1920 1080 1 (:0, )
[D调的猴子] 突突突办了

B站直播没有问题。

刚才我换成手机热点试了几次,都能正常播放,我之前提到的问题一个都没有发生。看来确实和我的网络有关系。

THMonster commented 3 years ago

奇怪 image 为什么你会出现这个

THMonster commented 3 years ago

能否看下你的~/.shiv里面有什么?

jian-lin commented 3 years ago

├── dmc_f3be2da9a5122a7900b5b9476336ec6370627ba72edb5e23fa929c652509ea7d │   └── site-packages │   ├── bin │   │   └── dmc │   ├── dmc │   │   ├── dm │   │   │   ├── danmaku │   │   │   │   ├── bilibili.py │   │   │   │   ├── douyu.py │   │   │   │   ├── huya.py │   │   │   │   ├── init.py │   │   │   │   ├── log.py │   │   │   │   ├── paramgen │   │   │   │   │   ├── arcparam_mining.py │   │   │   │   │   ├── arcparam.py │   │   │   │   │   ├── init.py │   │   │   │   │   ├── liveparam.py │   │   │   │   │   └── pb │   │   │   │   │   ├── header_pb2.py │   │   │   │   │   ├── init.py │   │   │   │   │   ├── live_pb2.py │   │   │   │   │   └── replay_pb2.py │   │   │   │   ├── pycache │   │   │   │   │   ├── bilibili.cpython-37.pyc │   │   │   │   │   ├── douyu.cpython-37.pyc │   │   │   │   │   ├── huya.cpython-37.pyc │   │   │   │   │   ├── init.cpython-37.pyc │   │   │   │   │   ├── twitch.cpython-37.pyc │   │   │   │   │   └── youtube.cpython-37.pyc │   │   │   │   ├── tars │   │   │   │   │   ├── adapterproxy.py │   │   │   │   │   ├── async.py │   │   │   │   │   ├── core.py │   │   │   │   │   ├── EndpointF.py │   │   │   │   │   ├── exception.py │   │   │   │   │   ├── init.py │   │   │   │   │   ├── logger.py │   │   │   │   │   ├── packet.py │   │   │   │   │   ├── pycache │   │   │   │   │   │   ├── exception.cpython-37.pyc │   │   │   │   │   │   ├── init.cpython-37.pyc │   │   │   │   │   │   ├── packet.cpython-37.pyc │   │   │   │   │   │   ├── tars.cpython-37.pyc │   │   │   │   │   │   ├── tup.cpython-37.pyc │   │   │   │   │   │   └── util.cpython-37.pyc │   │   │   │   │   ├── QueryF.py │   │   │   │   │   ├── rpc.py │   │   │   │   │   ├── servantproxy.py │   │   │   │   │   ├── tars │   │   │   │   │   │   └── init.py │   │   │   │   │   ├── tars.py │   │   │   │   │   ├── TimeoutQueue.py │   │   │   │   │   ├── trans.py │   │   │   │   │   ├── tup.py │   │   │   │   │   └── util.py │   │   │   │   ├── twitch.py │   │   │   │   └── youtube.py │   │   │   ├── example.py │   │   │   ├── init.py │   │   │   ├── pycache │   │   │   │   └── init.cpython-37.pyc │   │   │   └── setup.py │   │   ├── init.py │   │   ├── main.py │   │   └── pycache │   │   ├── init.cpython-37.pyc │   │   └── main.cpython-37.pyc │   ├── dmc-0.1.0.dist-info │   │   ├── direct_url.json │   │   ├── entry_points.txt │   │   ├── INSTALLER │   │   ├── METADATA │   │   ├── RECORD │   │   ├── REQUESTED │   │   ├── top_level.txt │   │   └── WHEEL │   ├── urllib3 │   │   ├── _collections.py │   │   ├── connectionpool.py │   │   ├── connection.py │   │   ├── contrib │   │   │   ├── _appengine_environ.py │   │   │   ├── appengine.py │   │   │   ├── init.py │   │   │   ├── ntlmpool.py │   │   │   ├── pyopenssl.py │   │   │   ├── _securetransport │   │   │   │   ├── bindings.py │   │   │   │   ├── init.py │   │   │   │   └── low_level.py │   │   │   ├── securetransport.py │   │   │   └── socks.py │   │   ├── exceptions.py │   │   ├── fields.py │   │   ├── filepost.py │   │   ├── init.py │   │   ├── packages │   │   │   ├── backports │   │   │   │   ├── init.py │   │   │   │   └── makefile.py │   │   │   ├── init.py │   │   │   ├── six.py │   │   │   └── ssl_match_hostname │   │   │   ├── implementation.py │   │   │   └── init.py │   │   ├── poolmanager.py │   │   ├── request.py │   │   ├── response.py │   │   ├── util │   │   │   ├── connection.py │   │   │   ├── init.py │   │   │   ├── proxy.py │   │   │   ├── queue.py │   │   │   ├── request.py │   │   │   ├── response.py │   │   │   ├── retry.py │   │   │   ├── ssl.py │   │   │   ├── ssltransport.py │   │   │   ├── timeout.py │   │   │   ├── url.py │   │   │   └── wait.py │   │   └── _version.py │   └── urllib3-1.26.2.dist-info │   ├── INSTALLER │   ├── LICENSE.txt │   ├── METADATA │   ├── RECORD │   ├── top_level.txt │   └── WHEEL └── streamfinder_fc363a4e7d0ee4dce9b3ef33d4cb0babd4fe81b659a839c61b447adea2d8a26b └── site-packages ├── bin │   └── streamfinder ├── quickjs │   ├── init.py │   └── pycache │   └── init.cpython-37.pyc ├── quickjs-1.15.1.dist-info │   ├── INSTALLER │   ├── METADATA │   ├── RECORD │   ├── top_level.txt │   └── WHEEL ├── _quickjs.cpython-38-x86_64-linux-gnu.so ├── streamfinder │   ├── bilibili.py │   ├── crypto-js-md5.min.js │   ├── douyu.py │   ├── huya.py │   ├── init.py │   ├── main.py │   ├── pycache │   │   ├── bilibili.cpython-37.pyc │   │   ├── douyu.cpython-37.pyc │   │   ├── huya.cpython-37.pyc │   │   ├── init.cpython-37.pyc │   │   ├── main.cpython-37.pyc │   │   ├── twitch.cpython-37.pyc │   │   └── youtube.cpython-37.pyc │   ├── twitch.py │   ├── util │   │   ├── init.py │   │   ├── jsengine.py │   │   ├── match.py │   │   └── pycache │   │   ├── init__.cpython-37.pyc │   │   ├── jsengine.cpython-37.pyc │   │   └── match.cpython-37.pyc │   └── youtube.py └── streamfinder-0.1.0.dist-info ├── direct_url.json ├── entry_points.txt ├── INSTALLER ├── METADATA ├── RECORD ├── REQUESTED ├── top_level.txt └── WHEEL

34 directories, 144 files

THMonster commented 3 years ago

我懂了。。。。binary依赖绑定了python版本,你这是3.7。看来我还得改改。。。

THMonster commented 3 years ago

不小心点到了close....

jian-lin commented 3 years ago

诶,现在是自带了quickjs作为js runtime吗?

THMonster commented 3 years ago

对,这东西不大,我就直接打进去了。ykdl的斗鱼需要js runtime运行一些和加密相关的代码,很多人可能不知道这点,我干脆就踢了ykdl直接打一个js runtime进去。

现在看来大概得让用户自己在本地打包这两个pyz了。

jian-lin commented 3 years ago

虽然Debug: "No module named '_quickjs'\n" (:0, ),但我有时候能正常看斗鱼,是否是用了我系统的nodejs?

jian-lin commented 3 years ago

我觉得最好还是把js runtime作为依赖,分开打包,不要绑在一起。

THMonster commented 3 years ago

看来还是分开好,那干脆也不用quickjs了,让用户自己去选想装的js runtime。

THMonster commented 3 years ago

虽然Debug: "No module named '_quickjs'\n" (:0, ),但我有时候能正常看斗鱼,是否是用了我系统的nodejs?

是的,js引擎的wrapper是从ykdl那边搬来的,支持很多种js runtime,包括一些de自带的如gjs cjs。当然nodejs肯定也支持。

THMonster commented 3 years ago

我现在打算自己用qt写一个js engine的wrapper,因为我发现qt本身就带一个js engine(还支持es2020)。这样真的就省得用户额外装个js engine了。

THMonster commented 3 years ago

3.20.1版本改成使用qt自己的js engine来运行js代码了。方便的话麻烦你试试看能否正常工作。

jian-lin commented 3 years ago

3.20.1 没有再报Debug: "No module named '_quickjs'\n" (:0, )。 试了斗鱼直播、B站视频和直播,都能正常播放。

$ ./qlphelper -d -u https://www.douyu.com/60937
Finding stream...
Debug: streamer started (:0, )
Debug: danmaku launcher started (:0, )
Debug: ffmpeg started (:0, )
Debug: mpv started (:0, )
Debug: "https://hwa.douyucdn2.cn/live/60937rEfgTitZSuq_1024p.flv?wsAuth=bfa1baf0a3cb0867f2b0e7d409ea437a&token=web-h5-0-60937-28e3e2ddb065abb22c39649a4969e6970bb6749e03fe2cff&logo=0&expire=0&did=9242110326ac4e86ba93c9f07bc7d574&pt=2&st=0&origin=ws&mix=0&isp=&pushdouyu=1" (:0, )
Debug: stream started! (:0, )
Debug: Danmaku process started! (:0, )
[新概念英语3] #直播时长
Debug: 1920 1080 1 (:0, )
[明日萧郎] 冷知识:qwer可以提高胜率
$ ./qlphelper -d -u https://www.bilibili.com/video/BV1Ya4y1W7aW
Debug: ("/usr/share/QLivePlayer/streamfinder.pyz", "https://www.bilibili.com/video/BV1Ya4y1W7aW?p=1", "") (:0, )
Debug: "title:【定格动画】揭秘糖果的制作过程 - Vegetables VS Sweets _ Funny Stop Motion Cooking\n" (:0, )
Debug: "http://cn-sdyt-cu-v-08.bilivideo.com/upgcxcode/61/03/259840361/259840361_nb2-1-30064.m4s?expires=1606825816&platform=pc&ssig=Bamg7bv2I85oDRXJZioLTA&oi=2053123129&trid=097ee03f56a740e0b4a0b8cf0db90e83u&nfc=1&nfb=maPYqpoel5MI3qOUX6YpRA==&cdnid=5140&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: "http://112-245-192-200.mcdn.bilivideo.cn:480/upgcxcode/61/03/259840361/259840361_nb2-1-30280.m4s?expires=1606825816&platform=pc&ssig=rDz7hYWl2cVO_iIXubbyIA&oi=2053123129&trid=097ee03f56a740e0b4a0b8cf0db90e83u&nfc=1&nfb=maPYqpoel5MI3qOUX6YpRA==&mcdnid=8000021&mid=0&orderid=0,3&agrr=1&logo=A0000080\n" (:0, )
Debug: "http://upos-sz-mirrorks3.bilivideo.com/upgcxcode/61/03/259840361/259840361-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1606825816&gen=playurl&os=ks3bv&oi=2053123129&trid=097ee03f56a740e0b4a0b8cf0db90e83u&platform=pc&upsig=0a9696b9f65bb05a4d00ef5c3f72de49&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000\n" (:0, )
Debug: QVector("") 1 (:0, )
$ ./qlphelper -d -u https://live.bilibili.com/3
Finding stream...
Debug: streamer started (:0, )
Debug: danmaku launcher started (:0, )
Debug: ffmpeg started (:0, )
Debug: mpv started (:0, )
Debug: "https://d1--cn-gotcha04.bilivideo.com/live-bvc/825633/live_11153765_9369560.flv?expires=1606822257&len=0&oi=2053123129&pt=web&qn=10000&trid=cd046143f0e047ac910017b1d2283228&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha04&sign=e04dcedc4b0d0fc7929933073e867b60&p2p_type=1&src=9&sl=1" (:0, )
Debug: stream started! (:0, )
Debug: Danmaku process started! (:0, )
Debug: 1920 1080 1 (:0, )
Bye!
Debug: streamlink exited!!!! (:0, )
Debug: waiting for ffmpeg exit! (:0, )
THMonster commented 3 years ago

好的,非常感谢。