LifeActor / ykdl

a video downloader focus on China mainland video sites.
https://github.com/zhangn1985/ykdl
Other
1.43k stars 284 forks source link

b 站 m4s 格式视频音频分离的流解析?--新的DASH API #519

Open zz5678 opened 4 years ago

zz5678 commented 4 years ago

b 站的 cdn 烂的要死,偶然发现 b 站还有这样的音频,视频流分离的网页播放,可以轻松跑满200兆宽带!!

比如这个页面,用视频抓流 https://www.bilibili.com/v/game/match/singledata/6525 可见 m4s 后缀的三个流,大致这样:

bilivideo.com/upgcxcode/63/31/214303163/214303163-1-30216.m4s\?expires\=1595174713\&platform\=pc

都来讨论下,如何获取流地址呢? @iawia002

mengmo commented 4 years ago

annie 已经用上 DASH API 了 https://github.com/iawia002/annie/pull/732 不过,个人觉得旧 API 还可以保留

zz5678 commented 4 years ago

奇怪的是,用annie解析出来的的流地址,使用 mpv 播放一直返回403 header设置了与annie给出的相同,还是不行。如下是 curl 测试,url是 annie -j 解析出来的 image

mengmo commented 4 years ago

奇怪的是,用annie解析出来的的流地址,使用 mpv 播放一直返回403 header设置了与annie给出的相同,还是不行。如下是 curl 测试,url是 annie -j 解析出来的 image

\u0026改为&

zz5678 commented 4 years ago

\u0026改为&

…… 严重的挫伤了我对 @iawia002 的编程严谨信心 …… 都没想到 annie 能给出这种输出 :triumph: :triumph: :triumph:

mengmo commented 4 years ago

\u0026改为&

…… 严重的挫伤了我对 @iawia002 的编程严谨信心 …… 都没想到 annie 能给出这种输出 😤 😤 😤

@zz5678 建议到 annie 那边问一下究竟是没考虑到还是有意如此设计

个人认为如果有问题还是以解决问题为优先考虑 过多讨论与解决问题无关的话题并非积极的做法

zz5678 commented 4 years ago

haha,并不算。其实和 iawia002 还算熟,开玩笑的。另,这不是大问题,不需要解决。只是我没想到会遭遇低级错误

zz5678 commented 4 years ago

目前 ykdl 还不支持 DASH 解析,写了个用 annie 解析 ,mpv 来播放 bili 的脚本,目前这 cdn 缓冲速度,简直太快了,不知道 b 站这个穷鬼能这么烧几个月钱。。。。

#!/bin/bash

u="$@"
echo ">>> playing $u"
json=$(annie -j $u | jq -r '.[0].streams."80".parts')
url_1=$(echo $json | jq -r '.[0].url')
url_2=$(echo $json | jq -r '.[1].url')
ext_1=$(echo $json | jq -r '.[0].ext')

if [[ $ext_1 =~ m4a ]]; then
    temp=$url_1
    url_1=$url_2
    url_2=$temp
fi

mpv --referrer=$u --audio-file=$url_2 $url_1 &