123下一页
返回列表 发新帖

B站视频/音频​的开源下载方法

[复制链接]

43

主题

453

回帖

2654

积分

大学生

Rank: 5Rank: 5

金币
54
好评
51
信誉
102
发表于 2023-7-21 22:28:45 来自手机  | 显示全部楼层 | 阅读模式  来自 广西
本帖最后由 善始繁_克终寡 于 2023-7-22 01:59 编辑

一、前言
之前有分享过如何通过 lux 来下载B站上的视频,当然了,lux 是一个很优秀的开源的软件,体积小,速度快,适用性也广泛(能从很多不同的网站上下载视频),但是,还是想要分享一些和 lux 类似的开源下载软件,原因会在后文中有所提及

二、音频
有了 FFMPEG 这个软件,可以很轻易地从一个视频文件中获取到对应的音频,但是吧,能多用一种方法或者说多折腾折腾其它的方法也是挺有意思一件事的,所以,也是在 GitHub 上搜索了一些别人开源方案,然后就发现了这个项目:voiceload


试了一下,发现这也是能在安卓手机上运行的,具体的编译方法在开头的超链接中有说过,所以这里也不重复了,直接提供一个仅供参考的 workflows 代码和说一下需要修改的一些源码所在文件是哪些
workflows
  1. # 项目地址:https://github.com/silentEAG/voiceload
  2. name: bilisound

  3. on:
  4.   watch:
  5.     types: started

  6. env:
  7.   APP_NAME: bilisound

  8. jobs:
  9.   build:
  10.     name: Build For Android aarch64
  11.     runs-on: ubuntu-latest

  12.     steps:
  13.       - name: Checkout Code
  14.         uses: actions/checkout@v3.5.2

  15.       - name: Setup Android NDK
  16.         uses: nttld/setup-ndk@v1.2.0
  17.         id: setup-ndk
  18.         with:
  19.           ndk-version: r25b
  20.           local-cache: true

  21.       - name: Build Binary File
  22.         env:
  23.           ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
  24.           CC_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
  25.           AR_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  26.           RANLIB_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  27.           AR: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  28.           CC: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
  29.           RANLIB: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib

  30.         run: |
  31.           export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
  32.           export RUSTFLAGS="\
  33.           -C linker=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang \
  34.           -C lto=true \
  35.           -C codegen-units=1 \
  36.           -C opt-level=z \
  37.           -C strip=symbols \
  38.           -C embed-bitcode=yes"
  39.           rustup target add aarch64-linux-android
  40.           cargo build --target=aarch64-linux-android --release
  41.           mkdir -p $GITHUB_WORKSPACE/output/
  42.           mv ./target/aarch64-linux-android/release/voiceload $GITHUB_WORKSPACE/output/$APP_NAME

  43.       - name: Upload Artifact
  44.         uses: actions/upload-artifact@v3.1.2
  45.         with:
  46.           name: bilisound
  47.           path: output/
复制代码


需要修改的源码
1. 项目根目录的 Cargo.toml

2. 项目 vl 子目录下的 Cargo.toml

以上两个 Cargo.toml 文件都是直接在文件的末尾补充上以下代码即可
  1. [target.'cfg(target_os = "android")'.dependencies]
  2. openssl = { version = "0.10.55", features = ["vendored"] }
复制代码

如下图所示:


3. 目录 vl/src/transfer 下的 mod.rs 文件

将这个文件中的第 23 行的代码复制到第 35 行即可,如下图


运行截图





三、视频
同样地,也找到个类似的项目 bili-cli-rs 用于下载B站上的视频


workflows 的参考写法如下:
  1. # 项目地址:https://github.com/niuhuan/bili-cli-rs
  2. name: bili_cli_rs

  3. on:
  4.   watch:
  5.     types: started

  6. jobs:
  7.   build:
  8.     name: Build For Android aarch64
  9.     runs-on: ubuntu-latest

  10.     steps:
  11.       - name: Checkout Code
  12.         uses: actions/checkout@v3.5.2

  13.       - name: Setup Android NDK
  14.         uses: nttld/setup-ndk@v1.2.0
  15.         id: setup-ndk
  16.         with:
  17.           ndk-version: r25b
  18.           local-cache: true

  19.       - name: Build
  20.         env:
  21.           ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
  22.           CC_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
  23.           CC: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
  24.           AR: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  25.           AR_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  26.           RANLIB_aarch64-linux-android: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  27.         run: |
  28.           export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
  29.           export RUSTFLAGS="\
  30.           -C linker=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang \
  31.           -C lto=true \
  32.           -C codegen-units=1 \
  33.           -C opt-level=z \
  34.           -C strip=symbols \
  35.           -C embed-bitcode=yes"
  36.           rustup target add aarch64-linux-android
  37.           cargo build --target=aarch64-linux-android --release
  38.           mkdir -p $GITHUB_WORKSPACE/output/
  39.           mv ./target/aarch64-linux-android/release/bili-cli $GITHUB_WORKSPACE/output/

  40.       - name: Upload artifact
  41.         uses: actions/upload-artifact@v3.1.2
  42.         with:
  43.           name: bili-cli-rs
  44.           path: output/
复制代码


运行截图


附带一个算是挺有意思的项目: bili_live_tui,说是能黑听B站,但是不知道为什么没听到声音,有点小可惜,如果能在手机上放出声音来就好了
workflows 写法:
  1. # 项目地址:https://github.com/shr-go/bili_live_tui
  2. name: bilive

  3. on:
  4.   watch:
  5.     types: started

  6. jobs:
  7.   build:
  8.     name: Build For Android aarch64
  9.     runs-on: ubuntu-latest

  10.     steps:
  11.       - name: Checkout Code
  12.         uses: actions/checkout@v3.5.2

  13.       - name: Setup Android NDK
  14.         uses: nttld/setup-ndk@v1.2.0
  15.         id: setup-ndk
  16.         with:
  17.           ndk-version: r25b
  18.           local-cache: true

  19.       - name: Setup Go Environment
  20.         uses: actions/setup-go@v4.0.0
  21.         with:
  22.           go-version: 1.20.2

  23.       - name: Build
  24.         env:
  25.           GOOS: android
  26.           GOARCH: arm64
  27.           CGO_ENABLED: 1
  28.           ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
  29.           CC: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
  30.           CXX: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++
  31.         run: |
  32.           export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
  33.           cd ./cmd/tui
  34.           go build \
  35.           -trimpath \
  36.           -ldflags '-s -w' \
  37.           -gcflags="all=-trimpath=${PWD}" \
  38.           -asmflags="all=-trimpath=${PWD}" \
  39.           -o ./bilive
  40.           mkdir -p $GITHUB_WORKSPACE/output/
  41.           mv ./bilive $GITHUB_WORKSPACE/output/

  42.       - name: Upload Artifact
  43.         uses: actions/upload-artifact@v3.1.2
  44.         with:
  45.           name: bilive
  46.           path: output/
复制代码

运行截图


参考资料
1. Cannot cross-compile openssl
2. 指定依赖项
3. min-sized-rust
4. openssl
5. embed-bitcode (优化:编译大小 && 编译时间)
已有1人评分金币 理由
webcfo + 1 赞一个!

查看全部评分 总评分:金币 +1 

回复

使用道具 举报

56

主题

3619

回帖

8852

积分

硕士生

6

Rank: 6Rank: 6

金币
657
好评
43
信誉
145

考神MT论坛新人MT论坛帅哥

QQ
发表于 2023-7-21 22:29:45 来自手机  | 显示全部楼层  来自 河南
谢谢分享
回复

使用道具 举报

48

主题

1523

回帖

4338

积分

大学生

Rank: 5Rank: 5

金币
1879
好评
6
信誉
85

MT论坛新人考神MT论坛帅哥MT论坛最佳新人

发表于 2023-7-21 22:33:21 来自手机  | 显示全部楼层  来自 河南
感谢分享,必须收藏
回复

使用道具 举报

22

主题

6592

回帖

2万

积分

博士后

超级至尊VIP

Rank: 8Rank: 8

金币
6092
好评
6
信誉
99

考神MT论坛新人MT论坛帅哥MT论坛最佳新人MT论坛活跃会员挂机大佬

发表于 2023-7-21 22:46:28 来自手机  | 显示全部楼层  来自 甘肃
感谢分享
回复

使用道具 举报

175

主题

8838

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
7383
好评
29
信誉
165

MT论坛新人MT论坛帅哥考神MT论坛最佳新人MT论坛灌水老大MT论坛活跃会员

发表于 2023-7-21 22:46:34 来自手机  | 显示全部楼层  来自 上海
感谢分享
回复

使用道具 举报

41

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
6142
好评
3
信誉
98
发表于 2023-7-21 23:17:26 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

2

主题

3099

回帖

7267

积分

硕士生

Rank: 6Rank: 6

金币
1623
好评
3
信誉
104
发表于 2023-7-21 23:52:11 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

2

主题

423

回帖

1014

积分

高中生

Rank: 4

金币
147
好评
0
信誉
109
发表于 2023-7-22 01:26:36 来自手机  | 显示全部楼层  来自 湖北
感谢分享
回复

使用道具 举报

64

主题

8939

回帖

2万

积分

博士后

学渣

Rank: 8Rank: 8

金币
3159
好评
54
信誉
133

MT论坛最佳新人考神MT论坛活跃会员

发表于 2023-7-22 06:22:30 来自手机  | 显示全部楼层  来自 河北
感谢分享
回复

使用道具 举报

2

主题

2698

回帖

6435

积分

硕士生

Rank: 6Rank: 6

金币
3705
好评
2
信誉
105

考神

发表于 2023-7-22 06:23:39 来自手机  | 显示全部楼层  来自 湖南
感谢分享
回复

使用道具 举报

19

主题

6212

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2130
好评
0
信誉
100
发表于 2023-7-22 06:39:43 来自手机  | 显示全部楼层  来自 安徽
感谢分享
回复

使用道具 举报

3

主题

2391

回帖

5763

积分

硕士生

Rank: 6Rank: 6

金币
5025
好评
0
信誉
99
发表于 2023-7-22 06:53:07 来自手机  | 显示全部楼层  来自 江西
感谢分享
回复

使用道具 举报

0

主题

3328

回帖

8016

积分

硕士生

Rank: 6Rank: 6

金币
1353
好评
0
信誉
100

考神

发表于 2023-7-22 07:35:51 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

2

主题

5600

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2069
好评
6
信誉
88
发表于 2023-7-22 11:30:56 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

0

主题

2787

回帖

5671

积分

硕士生

Rank: 6Rank: 6

金币
806
好评
0
信誉
100
发表于 2023-7-22 15:07:00 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表