mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-12-18 14:11:59 -05:00
Compare commits
3 Commits
7671d3d48e
...
8fe0f821f3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fe0f821f3 | ||
|
|
77ffb7cc53 | ||
|
|
4cc105c221 |
@@ -1,9 +1,9 @@
|
||||
+++
|
||||
title = "网络艺术:Aria2使用指南"
|
||||
title = "下载系列(3):Aria2使用指南"
|
||||
date = 2025-04-15
|
||||
|
||||
[taxonomies]
|
||||
tags = ["网络艺术"]
|
||||
tags = ["Network"]
|
||||
+++
|
||||
|
||||
前言 Aria2是一款开源、跨平台的命令行界面下载管理器,常常被各种下载器软件使用。
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
+++
|
||||
title = "网络艺术:下载技术的历史"
|
||||
title = "下载系列(1):下载技术的历史"
|
||||
date = 2025-04-11
|
||||
|
||||
[taxonomies]
|
||||
|
||||
195
content/Network-ssh.md
Normal file
195
content/Network-ssh.md
Normal file
@@ -0,0 +1,195 @@
|
||||
+++
|
||||
title = "网络艺术:SSH使用指南"
|
||||
date = 2025-05-02
|
||||
|
||||
[taxonomies]
|
||||
tags = ["Network"]
|
||||
+++
|
||||
|
||||
前言 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。
|
||||
|
||||
<!-- more -->
|
||||
|
||||
## 历史
|
||||
|
||||
1995年,芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 设计了 ``SSH 协议的第一个版本(现称为 SSH 1)``,同时写出了第一个实现(称为 SSH1)。
|
||||
|
||||
当时,他所在的大学网络一直发生密码嗅探攻击,他不得不为服务器设计一个更安全的登录方式。写完以后,他就把这个工具公开了,允许其他人免费使用。
|
||||
|
||||
SSH 可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议,所以大受欢迎,用户快速增长,1995年底已经发展到五十个国家的20,000个用户。SSH 1 协议也变成 IETF 的标准文档。
|
||||
|
||||
1995年12月,由于客服需求越来越大,``TatuYlönen就成立了一家公司SCS,专门销售和开发SSH``。这个软件的后续版本,逐渐从免费软件变成了专有的商业软件。
|
||||
|
||||
SSH 1 协议存在一些安全漏洞,所以``1996年又提出了 SSH 2 协议(或者称为 SSH 2.0)``。这个协议与1.0版不兼容,在1997年进行了标准化,1998年推出了软件实现 SSH2。但是,官方的 SSH2 软件是一个专有软件,不能免费使用,而且 SSH1的有些功能也没有提供。
|
||||
|
||||
1999年,OpenBSD 的开发人员决定写一个``SSH 2 协议的开源实现`` ,这就是 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本,那是当时 SSH1 最后一个开源版本。但是,OpenSSH 很快就完全摆脱了原始的官方代码,在许多开发者的参与下,按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供,以后又移植到其他操作系统,成为最流行的 SSH 实现。目前,Linux 的所有发行版几乎都自带 OpenSSH。
|
||||
|
||||
## 开始
|
||||
|
||||
李华是一个大学生,现在他买了一台服务器,公网IPv4为114.514.114.514,李华打算连到上面看看:
|
||||
|
||||
```
|
||||
ssh -p 22 root@114.514.114.514
|
||||
```
|
||||
随后命令行弹出了密码输入,李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成!
|
||||
|
||||
## 安全
|
||||
|
||||
一段时间后,李华的linux知识提高了不少,他发现有不少IP在用随机密码不断尝试登录自己的服务器!这太危险了!
|
||||
|
||||
于是,李华查阅了资料,发现有一篇博客[乱七八糟:服务器初始化与安全设置](https://blog.dich.bid/about-server-set/),于是他将openssh-server的端口改成了2333,并开启了fail2ban,这下应该安全了!
|
||||
|
||||
```
|
||||
### 更换SSH端口
|
||||
|
||||
使用root账户或已经有sudo权限的用户登录到系统。
|
||||
|
||||
打开SSH配置文件`sshd_config`,可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例:
|
||||
|
||||
sudo vim /etc/ssh/sshd_config
|
||||
|
||||
在配置文件中找到以下行:
|
||||
|
||||
Port 22
|
||||
|
||||
这是SSH默认的端口号,你可以将其更改为你想要的任何未被占用的端口号。例如,将端口更改为2333:
|
||||
|
||||
Port 2333
|
||||
|
||||
保存并关闭文本编辑器。重新启动SSH服务,以应用更改:
|
||||
|
||||
sudo service ssh restart
|
||||
|
||||
或者,如果你的系统使用systemd,可以使用以下命令:
|
||||
|
||||
sudo systemctl restart ssh
|
||||
|
||||
### 安装 Fail2ban
|
||||
|
||||
sudo apt-get install fail2ban
|
||||
|
||||
#### Debian 12 及以上的版本需要手动安装 rsyslog
|
||||
|
||||
sudo apt-get install rsyslog
|
||||
|
||||
####启动 Fail2ban 服务
|
||||
|
||||
sudo systemctl start fail2ban
|
||||
|
||||
#### 开机自启动
|
||||
|
||||
sudo systemctl enable fail2ban
|
||||
|
||||
#### 查看 Fail2ban 服务状态
|
||||
|
||||
sudo systemctl status fail2ban
|
||||
|
||||
```
|
||||
|
||||
但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了!
|
||||
|
||||
```
|
||||
#### 执行以下命令生成.pub后缀的公钥和无后缀的密钥:
|
||||
|
||||
ssh-keygen
|
||||
|
||||
注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
|
||||
|
||||
#### 随后将.pub后缀的公钥中的内容写入服务器的~/.ssh/authorized_keys中;
|
||||
|
||||
#### 使用以下命令编译服务器的SSH配置:
|
||||
|
||||
vim /etc/ssh/sshd_config
|
||||
|
||||
将其中的该行改为PasswordAuthentication no,保存退出;随后使用
|
||||
|
||||
sudo systemctl restart sshd
|
||||
|
||||
重启SSH即可禁用密码登录;
|
||||
|
||||
#### 将PermitRootLogin一栏改为PermitRootLogin prohibit-password**,即可实现仅root用户密钥登录;
|
||||
|
||||
#### 使用以下命令查看输出,
|
||||
|
||||
sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication'
|
||||
|
||||
如有PasswordAuthentication no → 禁用密码登录以及PubkeyAuthentication yes → 允许密钥登录则成功。
|
||||
|
||||
> 注意authorized_keys**的权限为600,如果不是则需要改正:chmod 600 ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
## 管理
|
||||
|
||||
现在服务器安全了,但随着服务器数量的增加,李华很快发现一个新问题,如何管理这些个SSH连接呢?手动输入太慢了,每次都要复制粘贴也很麻烦,但是又不得不用,总不能回退到密码时代吧?况且数量多了,密码也记不住。
|
||||
|
||||
于是李华运用软件工程学的思想,想着,这种大众的需求应该有人解决过了吧?果然,李华很快在GitHub上找到了一个开源跨平台的SSH管理软件,[electerm](https://github.com/electerm/electerm)!
|
||||
|
||||

|
||||
|
||||
通过在electerm的书签中写入服务器的地址,登录用户和密钥,只要打开electerm并点击书签就可以连接了,太方便了!
|
||||
|
||||
## 返璞
|
||||
|
||||
随着技术阅历的增长,李华看electerm越来越不顺眼:用它管理SSH固然方便,但同时这就得在各个系统上安装一个Electron架构的软件,而且用electerm的shell并不好用,并且备份electerm的配置不能给其他软件使用。终于,在一次界面崩溃之后李华忍无可忍,决定更换新的方案!
|
||||
|
||||
通过研究,李华发现原来openssh有自带的管理方法,且非常便捷好用。
|
||||
|
||||
首先,李华在用户目录下创建了一个``.ssh``文件夹,linux中在``/home/username/.ssh``这里,windows下在``C:\Users\username\.ssh``这里。
|
||||
|
||||
随后,李华安装了openssh在系统上,linux中一般已经存在,windows上在``设置-系统-可选功能-添加功能``中选中OpenSSH Client和openssh-server开启即可.
|
||||
|
||||
随后,李华在.ssh文件夹下创建了一个文件,名为``config``,并在其中写入以下内容:
|
||||
|
||||
```
|
||||
Host US
|
||||
HostName 114.514.114.514
|
||||
User root
|
||||
IdentityFile ~/.ssh/US
|
||||
IdentitiesOnly yes
|
||||
```
|
||||
|
||||
随后李华在对应的位置``~/.ssh/US``创建了一个文件,李华将服务器的私钥放了进去,里面是以``-----BEGIN OPENSSH PRIVATE KEY-----``开头``-----END OPENSSH PRIVATE KEY-----``结尾的私钥。
|
||||
|
||||
现在,要登录``114.514.114.514``这台服务器,只需要使用``ssh US``命令就可以连上服务器了,不用再手动输入了!
|
||||
|
||||
## 归真
|
||||
|
||||
在进一步了解SSH之后,李华很快又发现了新的问题,服务器的私钥放在本地是不安全的!尤其是Windows这种安装源松散,鱼龙混杂的系统上。究竟有没有更好的方法呢?在对keepassxc进行研究后,李华终于得出了一个几乎完美的方案!
|
||||
|
||||
- 开启keepassxc的SSH代理集成
|
||||
- 本地.ssh文件夹只保留公钥
|
||||
- 私钥保存在keepassxc的一个组中
|
||||
|
||||
这样一来,当你执行``ssh xxx``时,ssh 不是去读私钥文件,而是通过``SSH_AUTH_SOCK``环境变量找到 KeePassXC 的 agent。KeePassXC 会提示你解锁数据库/确认使用密钥。私钥不会离开 KeePassXC,只是 KeePassXC ``用私钥做一次签名``,把结果返回给 ssh。这样,``硬盘上不需要保存私钥文件``,安全性更高,且``只需要备份.ssh文件夹和keepassxc的kbdx文件``即可.
|
||||
|
||||
那么该怎么做呢?
|
||||
|
||||
首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的``~/.ssh/US.pub``公钥文件,里面是以ssh-ed25519或者ssh-rsa开头的公钥.
|
||||
|
||||
|
||||
```
|
||||
Host US
|
||||
HostName 114.514.114.514
|
||||
User root
|
||||
IdentityFile ~/.ssh/US.pub
|
||||
IdentitiesOnly yes
|
||||
```
|
||||
|
||||
随后在keepassxc的设置-ssh代理中开启``启用SSH代理集成``.(openssh)
|
||||
|
||||
接下来在keepassxc中左侧栏``新建一个文件夹``,名为SSH,里面``新建条目``,标题为US(和config中一致),然后在右侧``高级``中``新建``附件,文件名为US(和config中保持一致),文件内容为US的私钥.随后在左侧SSH代理中选中``在打开或解锁数据库的时候,向代理添加密钥``和``数据库锁定或关闭时,从SSH代理中删除密钥``这两个选项,并将下面的``私钥``选择``附件``,即为我们刚刚在高级中新建的US,可以看到对应的公钥也出现了,上一步没有公钥的可以在这里添加.按``确定``后关闭keepassxc并重新开启,这时候就可以使用``ssh US``命令登录了!
|
||||
|
||||
> 注意每次登录前先开启keepassxc并解锁!
|
||||
|
||||
---
|
||||
**Done.**
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
+++
|
||||
title = "网络艺术:Yt-dlp使用指南"
|
||||
title = "下载系列(2):Yt-dlp使用指南"
|
||||
date = 2025-04-12
|
||||
|
||||
[taxonomies]
|
||||
tags = ["网络艺术"]
|
||||
tags = ["Network"]
|
||||
+++
|
||||
|
||||
前言 yt-dlp是一款功能强大的命令行工具,专注于下载视频与音频内容,支持数千个平台,是开源下载工具爱好者的常用选择。
|
||||
@@ -18,7 +18,7 @@ tags = ["网络艺术"]
|
||||
`youtube-dl` 由 Ricardo García González 于 **2006 年**创建,最初仅支持 YouTube,随后扩展至其他网站,成为 GitHub 上最受欢迎的开源下载项目之一.项目维护者在 2011 年、2021 年等阶段陆续交替,由 phihag、dstftw 等接手.2020 年,唱片业协会(RIAA)发起 DMCA 要求删除该项目,虽一度被移除,但在公众与 EFF 的推动下于当年 11 月恢复,并促使 GitHub 改进相关策略.
|
||||
|
||||
- **停滞,youtube-dlc → yt-dlp 的诞生**
|
||||
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,随即在 **2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,迅速在 Linux 发行版中取代 youtube-dl (如 Ubuntu 22.04 之后).
|
||||
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,在**2021 年**演变为更活跃的 `yt-dlp` 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,成为了GitHub上star最多的项目之一.
|
||||
|
||||
- **重构与功能拓展**
|
||||
`yt-dlp` 从 youtube-dlc 完全重构,新增许多 extractor(解析器)、改进配置与默认行为,还扩展了插件系统和兼容性支持.
|
||||
@@ -26,14 +26,15 @@ tags = ["网络艺术"]
|
||||
|
||||
## 安装
|
||||
|
||||
- Windows
|
||||
### Windows
|
||||
|
||||
下载官方最新可执行文件:
|
||||
从yt-dlp官方GitHub上下载exe二进制文件:
|
||||
|
||||
```bash
|
||||
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
|
||||
sudo chmod a+rx /usr/local/bin/yt-dlp
|
||||
````
|
||||
[yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/tag/2025.08.22)
|
||||
|
||||
将其放到一个目录下,比如``C:\Users\<你的用户名>\yt-dlp\yt-dlp.exe``,随后添加环境变量。
|
||||
|
||||
> 添加环境变量:Win键搜索“环境变量”,打开“编辑系统环境变量”,点击最下方的“环境变量”,选择“系统变量”中的path,点击“编辑”,新建一个变量,将上面的目录 C:\Users\<你的用户名>\yt-dlp\ 写入,注意去掉前后引号,随后确定-确定-确定退出。
|
||||
|
||||
更新版本:
|
||||
|
||||
@@ -47,7 +48,7 @@ yt-dlp -U
|
||||
python3 -m pip install -U yt-dlp
|
||||
```
|
||||
|
||||
- Linux 发行版
|
||||
### Linux 发行版
|
||||
|
||||
- Debian / Ubuntu:`sudo apt install yt-dlp`
|
||||
- Arch / Manjaro:`sudo pacman -S yt-dlp`
|
||||
@@ -61,7 +62,7 @@ python3 -m pip install -U yt-dlp
|
||||
}
|
||||
```
|
||||
|
||||
- Android(Termux)
|
||||
### Android(Termux)
|
||||
|
||||
```bash
|
||||
pkg update && pkg upgrade
|
||||
@@ -69,7 +70,84 @@ pkg install python libexpat openssl ffmpeg
|
||||
python3 -m pip install -U yt-dlp
|
||||
```
|
||||
|
||||
## 常用命令
|
||||
## 下载实战
|
||||
|
||||
- **下载B站带字幕视频**:
|
||||
|
||||
```
|
||||
yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
|
||||
|
||||
--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
|
||||
|
||||
--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
|
||||
|
||||
--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
|
||||
```
|
||||
|
||||
- **下载YouTube视频**
|
||||
|
||||
先使用这个命令查看可用格式:
|
||||
```
|
||||
yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx
|
||||
```
|
||||
然后它会列举出所有可用的格式,如下:
|
||||
```
|
||||
[youtube] MgtOAVOXBWo: Downloading webpage
|
||||
[youtube] MgtOAVOXBWo: Downloading tv client config
|
||||
[youtube] MgtOAVOXBWo: Downloading tv player API JSON
|
||||
[youtube] MgtOAVOXBWo: Downloading ios player API JSON
|
||||
[youtube] MgtOAVOXBWo: Downloading m3u8 information
|
||||
[info] Available formats for MgtOAVOXBWo:
|
||||
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC MORE INFO
|
||||
──────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||
sb2 mhtml 48x27 0 │ mhtml │ images storyboard
|
||||
sb1 mhtml 80x45 0 │ mhtml │ images storyboard
|
||||
sb0 mhtml 160x90 0 │ mhtml │ images storyboard
|
||||
233 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, low
|
||||
234 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, high
|
||||
602 mp4 256x144 15 │ ~ 9.23MiB 81k m3u8 │ vp09.00.10.08 81k video only Untested
|
||||
269 mp4 256x144 30 │ ~ 14.94MiB 130k m3u8 │ avc1.4D400C 130k video only Untested
|
||||
603 mp4 256x144 30 │ ~ 15.90MiB 139k m3u8 │ vp09.00.11.08 139k video only Untested
|
||||
229 mp4 426x240 30 │ ~ 33.33MiB 291k m3u8 │ avc1.4D4015 291k video only Untested
|
||||
604 mp4 426x240 30 │ ~ 25.82MiB 225k m3u8 │ vp09.00.20.08 225k video only Untested
|
||||
230 mp4 640x360 30 │ ~ 73.50MiB 642k m3u8 │ avc1.4D401E 642k video only Untested
|
||||
605 mp4 640x360 30 │ ~ 55.73MiB 487k m3u8 │ vp09.00.21.08 487k video only Untested
|
||||
231 mp4 854x480 30 │ ~104.35MiB 911k m3u8 │ avc1.4D401F 911k video only Untested
|
||||
606 mp4 854x480 30 │ ~ 94.79MiB 827k m3u8 │ vp09.00.30.08 827k video only Untested
|
||||
311 mp4 1280x720 60 │ ~330.73MiB 2887k m3u8 │ avc1.4D4020 2887k video only Untested
|
||||
612 mp4 1280x720 60 │ ~197.04MiB 1720k m3u8 │ vp09.00.40.08 1720k video only Untested
|
||||
312 mp4 1920x1080 60 │ ~486.64MiB 4248k m3u8 │ avc1.64002A 4248k video only Untested
|
||||
617 mp4 1920x1080 60 │ ~369.06MiB 3222k m3u8 │ vp09.00.41.08 3222k video only Untested
|
||||
623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested
|
||||
```
|
||||
我们下载312和233,即视频和音频,使用以下命令:
|
||||
```
|
||||
yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx
|
||||
```
|
||||
这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频,注意新的名称不能太长,否则会下载失败。
|
||||
|
||||
如果要下载带字幕的视频,则使用
|
||||
```
|
||||
yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx
|
||||
```
|
||||
这个命令会:
|
||||
|
||||
- 下载1080p视频
|
||||
- 下载中文和英文字幕(包括自动生成的)
|
||||
- 将字幕嵌入到视频文件中
|
||||
- 同时保存单独的字幕文件
|
||||
|
||||
- 参数说明
|
||||
|
||||
```
|
||||
--write-subs: 下载手动字幕
|
||||
--write-auto-subs: 下载自动生成的字幕
|
||||
--embed-subs: 将字幕嵌入到视频中
|
||||
--sub-langs "zh.*": 指定下载中文字幕(所有中文变体)
|
||||
--sub-format srt: 指定字幕格式(可选)
|
||||
```
|
||||
|
||||
## 常用参数
|
||||
|
||||
- **下载视频**:
|
||||
|
||||
@@ -158,18 +236,6 @@ python3 -m pip install -U yt-dlp
|
||||
|
||||
在 `~/.config/yt-dlp/config` 文件中添加习惯参数,如下载路径、格式偏好等。
|
||||
|
||||
- **比如下载B站带字幕视频的命令**:
|
||||
|
||||
```
|
||||
yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
|
||||
|
||||
--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
|
||||
|
||||
--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
|
||||
|
||||
--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
|
||||
```
|
||||
|
||||
---
|
||||
**Done.**
|
||||
|
||||
|
||||
@@ -27,13 +27,30 @@ tags = ["综合工程"]
|
||||
|
||||
## 一.选择合适的平台
|
||||
|
||||
X86还是Arm?两者之间各有优点,截止到今天各种Arm电视盒子已经非常成熟,价格便宜,也可以使用运营商的电视盒子进行刷机,性能并不会太弱;而X86平台往往价格偏贵,且解码性能和功能适配没有和电视生态联系紧密,因此建议首选Arm平台。
|
||||
X86还是Arm?两者之间各有优点,截止到今天各种Arm电视盒子已经非常成熟,价格便宜,也可以使用运营商的电视盒子进行刷机,性能并不会太弱;而X86平台往往价格偏贵,且驱动不全,解码性能和功能适配没有和电视生态联系紧密,因此建议首选Arm平台.
|
||||
|
||||
本文以s905l3a盒子为示例,截止目前平均价格在60rmb左右,非常具有性价比。
|
||||
|
||||
| 项目 | 规格说明 |
|
||||
| ------- | ---------------------------------------------- |
|
||||
| CPU 架构 | 四核 ARM Cortex-A53 (64-bit) |
|
||||
| 主频 | \~1.8 GHz |
|
||||
| 制程工艺 | 12 nm |
|
||||
| GPU | Mali-G31 MP2,约 850 MHz,20.8 GFLOPS |
|
||||
| 视频解码 | H.265 4Kp75 (10-bit), H.264 4Kp30 |
|
||||
| 视频编码 | H.264/H.265 1080p60 |
|
||||
| 最大显示输出 | 4K @ 75fps |
|
||||
| 内存支持 | 支持 DDR3, DDR4-2666, LPDDR4-3200;设备常见 2 GB DDR4 |
|
||||
| 存储 | 常见 8 GB eMMC5.1 |
|
||||
| 接口支持 | USB2.0/3.0, HDMI 2.0b/2.1 |
|
||||
| 网络支持 | 千兆 MAC (常见盒子为 10/100), Wi-Fi, BT4.1/5.0 |
|
||||
| 发布时间/制程 | Q3 2022,12 nm |
|
||||
|
||||
> 如果预算充足,也可以选择s905x3,s905x4,以及rk3528等等芯片的盒子。如果有旧手机,也可以改装为电视盒子,比如骁龙865盒子,性能非常强大。
|
||||
|
||||
## 二.选择合适的系统
|
||||
|
||||
无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低下,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告。
|
||||
无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且要小心一些所谓的“无广告”电视盒子或者外贸盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些还会偷偷跑PCDN。因此,建议买到手之后自行刷写固件。
|
||||
|
||||
| 特性 | **Android-x86** | **Android TV** |
|
||||
|--------------------|---------------------------------------------------------|----------------------------------------------------------|
|
||||
@@ -48,75 +65,29 @@ X86还是Arm?两者之间各有优点,截止到今天各种Arm电视盒子
|
||||
| **遥控器支持** | 不适配遥控器,主要使用鼠标键盘操作。 | 专为遥控器优化,支持按键导航和语音输入。 |
|
||||
| **开源贡献** | 由社区维护,支持各种自定义和实验功能。 | 由 Google 官方主导,OEM 厂商提供硬件优化支持。 |
|
||||
|
||||
---
|
||||
> Android-x86 的安装类似windows,需要命令行界面配置;Android TV安装类似 Android手机,通过刷分区或TWRP卡刷安装。
|
||||
> Android-x86 的安装类似windows;Android TV安装类似 Android手机,通过刷分区或TWRP卡刷安装。
|
||||
|
||||
> Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等)的驱动可能不兼容或需要额外的配置。
|
||||
> Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等)的驱动可能不兼容或需要额外的配置,本文不再说明Android TV x86的安装与使用。
|
||||
|
||||
**刷 Tosathony Android TV X86 准备工作**:
|
||||
## 三.安装软件
|
||||
|
||||
- 1.[Tosathony 制作的 Android TV x86 9.0](https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728)
|
||||
安装软件有很多方法,可以使用U盘将apk安装包拷入,也可以使用localsend将apk安装包通过内网传输过去。这里介绍一种通过ADB安装软件的方法。
|
||||
|
||||
- 2.[Rufus 写盘工具](https://www.423down.com/10080.html)
|
||||
- 首先我们在设置中找到“设置”>“设备首选项”>“关于”,然后在“构建”上点击几次以解锁``开发者模式``,随后开启USB调试开关。
|
||||
|
||||
- 3.[Android tv Remote 手机遥控器软件:](https://android-tv-remote-control.en.softonic.com/android)
|
||||
- 随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址,然后用ADB连接上去,这里使用命令``adb connect <IP 地址>:<端口> ``,随后在ATV端授权连接,例如:
|
||||
|
||||
- 4.[Tiny ADB 软件](https://androidmtk.com/tiny-adb-and-fastboot-tool#installer)
|
||||
```
|
||||
❯ adb connect 192.168.1.666:9527
|
||||
|
||||
**一些可安装的软件**:
|
||||
connected to 192.168.1.666:9527
|
||||
|
||||
- [kodi](http://www.kodiplayer.cn/)
|
||||
❯ adb devices
|
||||
|
||||
- [当贝市场](https://www.dangbei.com/apps/)
|
||||
xxxxxxxxx sideload
|
||||
```
|
||||
|
||||
- [哔哩哔哩TV版](https://www.fenxm.com/104.html)
|
||||
|
||||
- [ATV Launcher](https://www.fenxm.com/592.html)
|
||||
|
||||
|
||||
## 一、写盘,BIOS启动
|
||||
|
||||
- 使用 Rufus 将下载好的 ATV 镜像写入U盘。
|
||||
|
||||
- 将U盘插到目标主机上,并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同,大部分是F2或者DEL;
|
||||
|
||||
## 二、开始安装
|
||||
|
||||
- boot 成功后选择自动安装;
|
||||
|
||||
- 经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;随后运行 ATV ,并拔出U盘;
|
||||
|
||||
## 三、进入Google界面
|
||||
|
||||
由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。
|
||||
|
||||
1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在``BIOS-Advanced-OS selection``中将其设置为Windows 8.X或者Android。
|
||||
|
||||
2.然后可以看到 PayPal 界面,这里使用可以 `Ctrl+Alt+F1` 进入命令行界面,随后输入
|
||||
|
||||
``pm disable com.tosanthony.tv.networkprovider #注意空格``
|
||||
|
||||
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
|
||||
|
||||
3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:
|
||||
|
||||
同样`Ctrl+Alt+F1` 进入命令行界面,随后输入
|
||||
|
||||
``pm disable com.google.android.tungsten.setupwraith #注意空格``
|
||||
|
||||
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
|
||||
|
||||
4.此时会进入一个 WiFi 界面,如果你是使用网线直连就没有问题,或者用键盘连接家里的WiFi,作者因为工控机没有WiFi模块在这里卡了半天。
|
||||
|
||||
5.随后进入了 AndroidTV 的桌面。
|
||||
|
||||
## 四、安装软件并设置桌面启动
|
||||
|
||||
1.首先我们在设置中找到“设置”>“设备首选项”>“关于”,然后在“构建”上点击几次以解锁“开发人员”选项,随后开启USB调试开关。
|
||||
|
||||
2.随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址,然后用Tiny ADB连接上去,这里使用命令``adb connect <IP 地址> ``,随后在ATV端授权连接;
|
||||
|
||||
3.接着使用命令adb install <path to android app.apk>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。
|
||||
- 接着使用命令``adb install <path to android app.apk>``将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。
|
||||
|
||||
**一些 ADB 常用命令**:
|
||||
|
||||
@@ -131,42 +102,65 @@ adb shell wm density <dpi> #改变显示器的像素密度。
|
||||
|
||||
adb kill server #切断 PC 和 Android TV 之间的连接。
|
||||
```
|
||||
4.如果存在一些软件无法安装,可开启ARM兼容层,具体方法为在 `dl.android-x86.org/houdini/9_y/houdini.sfs` 中下载得到`houdini.sfs`,把文件名改成`houdini9_y.sfs`,随后拷贝进U盘,进入命令行界面,输入 `ls` 找到 storage 目录,输入 `cd storage` 进入你的U盘,输入 `ls` ,查看你拷贝的 `houdini9_y.sfs` 文件,并复制到该目录下。
|
||||
|
||||
**要安装的软件**
|
||||
|
||||
- [TVBox](https://github.com/o0HalfLife0o/TVBoxOSC/releases/tag/20250706-1456):前猫影视,可自行添加源,包括电影电视剧等等,选择 armeabi-generic-java.apk
|
||||
|
||||
- [PPSSPP](https://www.ppsspp.org/download/):PSP模拟器,支持高清修复游戏,选择 APK for Android
|
||||
|
||||
- [BBLL](https://github.com/xiaye13579/BBLL):第三方开源哔哩哔哩客户端,适配TV界面,不需要额外VIP
|
||||
|
||||
- [酷9TV](https://www.right.com.cn/FORUM/thread-8437225-1-1.html):经典IPTV播放器,功能丰富,可导入IPTV源使用
|
||||
|
||||
- [VLC](http://www.videolan.org/vlc/download-android.html):老牌开源音视频播放器,支持远程和串流功能
|
||||
|
||||
- [Kodi](https://github.com/xbmc/xbmc):开源的跨平台多功能媒体播放器和数字媒体娱乐中心,非常强大
|
||||
|
||||
- [TV-Bro](https://github.com/truefedex/tv-bro):适用与安卓TV的浏览器,经过了遥控器优化设计,可以作为网页播放器
|
||||
|
||||
- [MaterialFiles](https://github.com/zhanghai/MaterialFiles):又名质感文件,优秀的开源文件管理器
|
||||
|
||||
- [Localsend](https://github.com/localsend/localsend):经典内网互传工具,可以通过它传输apk安装包或者视频到TV上
|
||||
|
||||
- [ATV Launcher](https://www.fenxm.com/592.html):平铺风格的安卓启动器,可以形成海报墙效果
|
||||
|
||||
> 注意s905l3a为32位架构,需要下载带armv7a的软件
|
||||
|
||||
|
||||
## 四.设置ATV桌面
|
||||
|
||||
安装所需的软件包后我们可以删除自带的牛马软件或者不需要的软件,比如我们要安装ATV,就可以删除当贝桌面。
|
||||
|
||||
- 连接到ADB成功后我们使用``adb shell``进入shell,随后使用命令``pm list packages``列出所有软件包;
|
||||
|
||||
- 可以先使用``pm disable-user --user 0 com.dangbei1.tvlauncher`` 禁用软件,确认没有问题之后再用``pm uninstall -k --user 0 com.dangbei1.tvlauncher``删除;
|
||||
|
||||
- 对于暂时无法确定包名的软件,可以先打开,再使用``adb shell dumpsys activity activities | grep mResumedActivity``获取当前前台应用的包名;
|
||||
|
||||
- 可以进入安卓原生设置里面将默认主屏幕应用改为ATV,代替掉自带的桌面,并使用
|
||||
|
||||
```
|
||||
cp houdini9_y.sfs /system/etc
|
||||
|
||||
enable_nativebridge
|
||||
|
||||
reboot
|
||||
adb shell pm disable-user --user 0 com.google.android.tvlauncher
|
||||
adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
|
||||
```
|
||||
5.安装一些软件包后我们发现需要代替掉ATV自带的桌面,从而形成海报墙的效果,这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启,即可看到ATV的海报墙。
|
||||
命令禁用原来的默认桌面。随后重启盒子即可看到海报墙效果,如果ATV桌面没有开机自启动,可以使用Launch on Boot工具。
|
||||
|
||||
``pm disable-user --user 0 com.google.android.tvlauncher ``
|
||||
|
||||
恢复原有桌面:
|
||||
|
||||
```
|
||||
C:\Users\root>adb shell
|
||||
generic_x86:/ $ su
|
||||
generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
|
||||
Package com.google.android.tvlauncher new state: enabled
|
||||
```
|
||||
**最终效果**:
|
||||
|
||||

|
||||
|
||||
|
||||
## 后记
|
||||
|
||||
- [Android TV google 官方 TV 库](https://github.com/googlesamples/leanback-showcase)
|
||||
|
||||
|
||||
- [智能电视,电视盒子开发 SDK](https://github.com/boxmate/tvframe)
|
||||
|
||||
|
||||
- [选中框切换动画,适用于电视](https://github.com/EZJasonBoy/FocusChangeAnimation)
|
||||
|
||||
|
||||
- [Android tv,盒子,投影仪 控件](https://github.com/FrozenFreeFall/Android-tv-widget)
|
||||
|
||||
|
||||
- [TV 项目常用工具(焦点问题,适配问题等.)](https://github.com/genius158/TVProjectUtils)
|
||||
|
||||
- [e900v22c项目与讨论组文档](https://github.com/Calmact/e900v22c)
|
||||
|
||||
@@ -622,8 +622,8 @@
|
||||
|
||||
|
||||
<span class="button next">
|
||||
<a href="https://blog.dich.bid/about-gpg/">
|
||||
<span class="button__text">乱七八糟:GPG使用小记</span>
|
||||
<a href="https://blog.dich.bid/network-ssh/">
|
||||
<span class="button__text">网络艺术:SSH使用指南</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
@@ -247,9 +247,9 @@
|
||||
</div>
|
||||
<div class="pagination__buttons">
|
||||
<span class="button previous">
|
||||
<a href="https://blog.dich.bid/about-baci/">
|
||||
<a href="https://blog.dich.bid/network-ssh/">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">乱七八糟:Baci实验笔记</span>
|
||||
<span class="button__text">网络艺术:SSH使用指南</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
@@ -601,7 +601,7 @@
|
||||
<span class="button previous">
|
||||
<a href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">网络艺术:Aria2使用指南</span>
|
||||
<span class="button__text">下载系列(3):Aria2使用指南</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
@@ -370,7 +370,7 @@ Markdown 使用一个或多个空行来分隔不同的段落。如果要换行
|
||||
|
||||
<span class="button next">
|
||||
<a href="https://blog.dich.bid/network-download-1/">
|
||||
<span class="button__text">网络艺术:下载技术的历史</span>
|
||||
<span class="button__text">下载系列(1):下载技术的历史</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
@@ -125,6 +125,16 @@
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-ssh/">
|
||||
<span class="post-date">2025-05-02</span>
|
||||
:: <span class="post-list-title">网络艺术:SSH使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/about-baci/">
|
||||
@@ -149,27 +159,27 @@
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="post-date">2025-04-15</span>
|
||||
:: <span class="post-list-title">网络艺术:Aria2使用指南</span></a>
|
||||
:: <span class="post-list-title">下载系列(3):Aria2使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-yt-dlp/">
|
||||
<span class="post-date">2025-04-12</span>
|
||||
:: <span class="post-list-title">网络艺术:Yt-dlp使用指南</span></a>
|
||||
:: <span class="post-list-title">下载系列(2):Yt-dlp使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-download-1/">
|
||||
<span class="post-date">2025-04-11</span>
|
||||
:: <span class="post-list-title">网络艺术:下载技术的历史</span></a>
|
||||
:: <span class="post-list-title">下载系列(1):下载技术的历史</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
|
||||
@@ -45,6 +45,25 @@
|
||||
|
||||
<summary type="html"><p>前言 PGP/GPG 的核心功能——公钥加密、数字签名、信任管理广泛用于各个行业,本文简单说明了其使用方法。</p></summary>
|
||||
|
||||
</entry>
|
||||
<entry xml:lang="en">
|
||||
<title>网络艺术:SSH使用指南</title>
|
||||
<published>2025-05-02T00:00:00+00:00</published>
|
||||
<updated>2025-05-02T00:00:00+00:00</updated>
|
||||
|
||||
<author>
|
||||
<name>
|
||||
|
||||
Unknown
|
||||
|
||||
</name>
|
||||
</author>
|
||||
|
||||
<link rel="alternate" type="text/html" href="https://blog.dich.bid/network-ssh/"/>
|
||||
<id>https://blog.dich.bid/network-ssh/</id>
|
||||
|
||||
<summary type="html"><p>前言 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。</p></summary>
|
||||
|
||||
</entry>
|
||||
<entry xml:lang="en">
|
||||
<title>乱七八糟:Baci实验笔记</title>
|
||||
@@ -85,7 +104,7 @@
|
||||
|
||||
</entry>
|
||||
<entry xml:lang="en">
|
||||
<title>网络艺术:Aria2使用指南</title>
|
||||
<title>下载系列(3):Aria2使用指南</title>
|
||||
<published>2025-04-15T00:00:00+00:00</published>
|
||||
<updated>2025-04-15T00:00:00+00:00</updated>
|
||||
|
||||
@@ -104,7 +123,7 @@
|
||||
|
||||
</entry>
|
||||
<entry xml:lang="en">
|
||||
<title>网络艺术:Yt-dlp使用指南</title>
|
||||
<title>下载系列(2):Yt-dlp使用指南</title>
|
||||
<published>2025-04-12T00:00:00+00:00</published>
|
||||
<updated>2025-04-12T00:00:00+00:00</updated>
|
||||
|
||||
@@ -123,7 +142,7 @@
|
||||
|
||||
</entry>
|
||||
<entry xml:lang="en">
|
||||
<title>网络艺术:下载技术的历史</title>
|
||||
<title>下载系列(1):下载技术的历史</title>
|
||||
<published>2025-04-11T00:00:00+00:00</published>
|
||||
<updated>2025-04-11T00:00:00+00:00</updated>
|
||||
|
||||
|
||||
@@ -134,9 +134,27 @@
|
||||
<li>实现<strong>游戏主机串流</strong>,包括PS/Xbox/Switch等等;</li>
|
||||
</ul>
|
||||
<h2 id="yi-xuan-ze-he-gua-de-ping-tai">一.选择合适的平台</h2>
|
||||
<p>X86还是Arm?两者之间各有优点,截止到今天各种Arm电视盒子已经非常成熟,价格便宜,也可以使用运营商的电视盒子进行刷机,性能并不会太弱;而X86平台往往价格偏贵,且解码性能和功能适配没有和电视生态联系紧密,因此建议首选Arm平台。</p>
|
||||
<p>X86还是Arm?两者之间各有优点,截止到今天各种Arm电视盒子已经非常成熟,价格便宜,也可以使用运营商的电视盒子进行刷机,性能并不会太弱;而X86平台往往价格偏贵,且驱动不全,解码性能和功能适配没有和电视生态联系紧密,因此建议首选Arm平台.</p>
|
||||
<p>本文以s905l3a盒子为示例,截止目前平均价格在60rmb左右,非常具有性价比。</p>
|
||||
<table><thead><tr><th>项目</th><th>规格说明</th></tr></thead><tbody>
|
||||
<tr><td>CPU 架构</td><td>四核 ARM Cortex-A53 (64-bit)</td></tr>
|
||||
<tr><td>主频</td><td>~1.8 GHz</td></tr>
|
||||
<tr><td>制程工艺</td><td>12 nm</td></tr>
|
||||
<tr><td>GPU</td><td>Mali-G31 MP2,约 850 MHz,20.8 GFLOPS</td></tr>
|
||||
<tr><td>视频解码</td><td>H.265 4Kp75 (10-bit), H.264 4Kp30</td></tr>
|
||||
<tr><td>视频编码</td><td>H.264/H.265 1080p60</td></tr>
|
||||
<tr><td>最大显示输出</td><td>4K @ 75fps</td></tr>
|
||||
<tr><td>内存支持</td><td>支持 DDR3, DDR4-2666, LPDDR4-3200;设备常见 2 GB DDR4</td></tr>
|
||||
<tr><td>存储</td><td>常见 8 GB eMMC5.1</td></tr>
|
||||
<tr><td>接口支持</td><td>USB2.0/3.0, HDMI 2.0b/2.1</td></tr>
|
||||
<tr><td>网络支持</td><td>千兆 MAC (常见盒子为 10/100), Wi-Fi, BT4.1/5.0</td></tr>
|
||||
<tr><td>发布时间/制程</td><td>Q3 2022,12 nm</td></tr>
|
||||
</tbody></table>
|
||||
<blockquote>
|
||||
<p>如果预算充足,也可以选择s905x3,s905x4,以及rk3528等等芯片的盒子。如果有旧手机,也可以改装为电视盒子,比如骁龙865盒子,性能非常强大。</p>
|
||||
</blockquote>
|
||||
<h2 id="er-xuan-ze-he-gua-de-xi-tong">二.选择合适的系统</h2>
|
||||
<p>无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低下,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告。</p>
|
||||
<p>无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且要小心一些所谓的“无广告”电视盒子或者外贸盒子,它们往往配置低,性价比不高且还是有内置付费项目,甚至有一些还会偷偷跑PCDN。因此,建议买到手之后自行刷写固件。</p>
|
||||
<table><thead><tr><th>特性</th><th><strong>Android-x86</strong></th><th><strong>Android TV</strong></th></tr></thead><tbody>
|
||||
<tr><td><strong>目标用户</strong></td><td>面向 PC 用户,将 Android 运行在 x86/x86_64 设备上。</td><td>面向电视和机顶盒用户,优化用于遥控器或语音操作。</td></tr>
|
||||
<tr><td><strong>适配设备</strong></td><td>传统 PC、笔记本、平板电脑等 x86 架构设备。</td><td>智能电视、电视盒子等 ARM 或特定芯片架构设备。</td></tr>
|
||||
@@ -149,77 +167,33 @@
|
||||
<tr><td><strong>遥控器支持</strong></td><td>不适配遥控器,主要使用鼠标键盘操作。</td><td>专为遥控器优化,支持按键导航和语音输入。</td></tr>
|
||||
<tr><td><strong>开源贡献</strong></td><td>由社区维护,支持各种自定义和实验功能。</td><td>由 Google 官方主导,OEM 厂商提供硬件优化支持。</td></tr>
|
||||
</tbody></table>
|
||||
<hr />
|
||||
<blockquote>
|
||||
<p>Android-x86 的安装类似windows,需要命令行界面配置;Android TV安装类似 Android手机,通过刷分区或TWRP卡刷安装。</p>
|
||||
<p>Android-x86 的安装类似windows;Android TV安装类似 Android手机,通过刷分区或TWRP卡刷安装。</p>
|
||||
</blockquote>
|
||||
<blockquote>
|
||||
<p>Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等)的驱动可能不兼容或需要额外的配置。</p>
|
||||
<p>Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等)的驱动可能不兼容或需要额外的配置,本文不再说明Android TV x86的安装与使用。</p>
|
||||
</blockquote>
|
||||
<p><strong>刷 Tosathony Android TV X86 准备工作</strong>:</p>
|
||||
<h2 id="san-an-zhuang-ruan-jian">三.安装软件</h2>
|
||||
<p>安装软件有很多方法,可以使用U盘将apk安装包拷入,也可以使用localsend将apk安装包通过内网传输过去。这里介绍一种通过ADB安装软件的方法。</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>1.<a href="https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728">Tosathony 制作的 Android TV x86 9.0</a></p>
|
||||
<p>首先我们在设置中找到“设置”>“设备首选项”>“关于”,然后在“构建”上点击几次以解锁<code>开发者模式</code>,随后开启USB调试开关。</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>2.<a href="https://www.423down.com/10080.html">Rufus 写盘工具</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>3.<a href="https://android-tv-remote-control.en.softonic.com/android">Android tv Remote 手机遥控器软件:</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>4.<a href="https://androidmtk.com/tiny-adb-and-fastboot-tool#installer">Tiny ADB 软件</a></p>
|
||||
<p>随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址,然后用ADB连接上去,这里使用命令<code>adb connect <IP 地址>:<端口> </code>,随后在ATV端授权连接,例如:</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p><strong>一些可安装的软件</strong>:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>❯ adb connect 192.168.1.666:9527
|
||||
</span><span>
|
||||
</span><span>connected to 192.168.1.666:9527
|
||||
</span><span>
|
||||
</span><span>❯ adb devices
|
||||
</span><span>
|
||||
</span><span>xxxxxxxxx sideload
|
||||
</span></code></pre>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="http://www.kodiplayer.cn/">kodi</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.dangbei.com/apps/">当贝市场</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.fenxm.com/104.html">哔哩哔哩TV版</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.fenxm.com/592.html">ATV Launcher</a></p>
|
||||
</li>
|
||||
<li>接着使用命令<code>adb install <path to android app.apk></code>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。</li>
|
||||
</ul>
|
||||
<h2 id="yi-xie-pan-biosqi-dong">一、写盘,BIOS启动</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<p>使用 Rufus 将下载好的 ATV 镜像写入U盘。</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>将U盘插到目标主机上,并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同,大部分是F2或者DEL;</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="er-kai-shi-an-zhuang">二、开始安装</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<p>boot 成功后选择自动安装;</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;随后运行 ATV ,并拔出U盘;</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="san-jin-ru-googlejie-mian">三、进入Google界面</h2>
|
||||
<p>由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。</p>
|
||||
<p>1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在<code>BIOS-Advanced-OS selection</code>中将其设置为Windows 8.X或者Android。</p>
|
||||
<p>2.然后可以看到 PayPal 界面,这里使用可以 <code>Ctrl+Alt+F1</code> 进入命令行界面,随后输入</p>
|
||||
<p><code>pm disable com.tosanthony.tv.networkprovider #注意空格</code></p>
|
||||
<p>回车执行,随后按<code>Ctrl+Alt+F7或F8</code>回到图形界面。</p>
|
||||
<p>3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:</p>
|
||||
<p>同样<code>Ctrl+Alt+F1</code> 进入命令行界面,随后输入</p>
|
||||
<p><code>pm disable com.google.android.tungsten.setupwraith #注意空格</code></p>
|
||||
<p>回车执行,随后按<code>Ctrl+Alt+F7或F8</code>回到图形界面。</p>
|
||||
<p>4.此时会进入一个 WiFi 界面,如果你是使用网线直连就没有问题,或者用键盘连接家里的WiFi,作者因为工控机没有WiFi模块在这里卡了半天。</p>
|
||||
<p>5.随后进入了 AndroidTV 的桌面。</p>
|
||||
<h2 id="si-an-zhuang-ruan-jian-bing-she-zhi-zhuo-mian-qi-dong">四、安装软件并设置桌面启动</h2>
|
||||
<p>1.首先我们在设置中找到“设置”>“设备首选项”>“关于”,然后在“构建”上点击几次以解锁“开发人员”选项,随后开启USB调试开关。</p>
|
||||
<p>2.随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址,然后用Tiny ADB连接上去,这里使用命令<code>adb connect <IP 地址> </code>,随后在ATV端授权连接;</p>
|
||||
<p>3.接着使用命令adb install <path to android app.apk>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。</p>
|
||||
<p><strong>一些 ADB 常用命令</strong>:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>adb reboot #将重启 Android 设备。
|
||||
</span><span>
|
||||
@@ -231,21 +205,64 @@
|
||||
</span><span>
|
||||
</span><span>adb kill server #切断 PC 和 Android TV 之间的连接。
|
||||
</span></code></pre>
|
||||
<p>4.如果存在一些软件无法安装,可开启ARM兼容层,具体方法为在 <code>dl.android-x86.org/houdini/9_y/houdini.sfs</code> 中下载得到<code>houdini.sfs</code>,把文件名改成<code>houdini9_y.sfs</code>,随后拷贝进U盘,进入命令行界面,输入 <code>ls</code> 找到 storage 目录,输入 <code>cd storage</code> 进入你的U盘,输入 <code>ls</code> ,查看你拷贝的 <code>houdini9_y.sfs</code> 文件,并复制到该目录下。</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>cp houdini9_y.sfs /system/etc
|
||||
</span><span>
|
||||
</span><span>enable_nativebridge
|
||||
</span><span>
|
||||
</span><span>reboot
|
||||
</span></code></pre>
|
||||
<p>5.安装一些软件包后我们发现需要代替掉ATV自带的桌面,从而形成海报墙的效果,这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启,即可看到ATV的海报墙。</p>
|
||||
<p><code>pm disable-user --user 0 com.google.android.tvlauncher </code></p>
|
||||
<p>恢复原有桌面:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>C:\Users\root>adb shell
|
||||
</span><span>generic_x86:/ $ su
|
||||
</span><span>generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
|
||||
</span><span>Package com.google.android.tvlauncher new state: enabled
|
||||
<p><strong>要安装的软件</strong></p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://github.com/o0HalfLife0o/TVBoxOSC/releases/tag/20250706-1456">TVBox</a>:前猫影视,可自行添加源,包括电影电视剧等等,选择 armeabi-generic-java.apk</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.ppsspp.org/download/">PPSSPP</a>:PSP模拟器,支持高清修复游戏,选择 APK for Android</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/xiaye13579/BBLL">BBLL</a>:第三方开源哔哩哔哩客户端,适配TV界面,不需要额外VIP</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.right.com.cn/FORUM/thread-8437225-1-1.html">酷9TV</a>:经典IPTV播放器,功能丰富,可导入IPTV源使用</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="http://www.videolan.org/vlc/download-android.html">VLC</a>:老牌开源音视频播放器,支持远程和串流功能</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/xbmc/xbmc">Kodi</a>:开源的跨平台多功能媒体播放器和数字媒体娱乐中心,非常强大</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/truefedex/tv-bro">TV-Bro</a>:适用与安卓TV的浏览器,经过了遥控器优化设计,可以作为网页播放器</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/zhanghai/MaterialFiles">MaterialFiles</a>:又名质感文件,优秀的开源文件管理器</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/localsend/localsend">Localsend</a>:经典内网互传工具,可以通过它传输apk安装包或者视频到TV上</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://www.fenxm.com/592.html">ATV Launcher</a>:平铺风格的安卓启动器,可以形成海报墙效果</p>
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>注意s905l3a为32位架构,需要下载带armv7a的软件</p>
|
||||
</blockquote>
|
||||
<h2 id="si-she-zhi-atvzhuo-mian">四.设置ATV桌面</h2>
|
||||
<p>安装所需的软件包后我们可以删除自带的牛马软件或者不需要的软件,比如我们要安装ATV,就可以删除当贝桌面。</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>连接到ADB成功后我们使用<code>adb shell</code>进入shell,随后使用命令<code>pm list packages</code>列出所有软件包;</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>可以先使用<code>pm disable-user --user 0 com.dangbei1.tvlauncher</code> 禁用软件,确认没有问题之后再用<code>pm uninstall -k --user 0 com.dangbei1.tvlauncher</code>删除;</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>对于暂时无法确定包名的软件,可以先打开,再使用<code>adb shell dumpsys activity activities | grep mResumedActivity</code>获取当前前台应用的包名;</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>可以进入安卓原生设置里面将默认主屏幕应用改为ATV,代替掉自带的桌面,并使用</p>
|
||||
</li>
|
||||
</ul>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>adb shell pm disable-user --user 0 com.google.android.tvlauncher
|
||||
</span><span>adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
|
||||
</span></code></pre>
|
||||
<p>命令禁用原来的默认桌面。随后重启盒子即可看到海报墙效果,如果ATV桌面没有开机自启动,可以使用Launch on Boot工具。</p>
|
||||
<p><strong>最终效果</strong>:</p>
|
||||
<p><img src="/images/s905-atv.webp" alt="s905-atv" /></p>
|
||||
<h2 id="hou-ji">后记</h2>
|
||||
<ul>
|
||||
<li>
|
||||
@@ -263,6 +280,9 @@
|
||||
<li>
|
||||
<p><a href="https://github.com/genius158/TVProjectUtils">TV 项目常用工具(焦点问题,适配问题等.)</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://github.com/Calmact/e900v22c">e900v22c项目与讨论组文档</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
BIN
public/images/electerm.png
Normal file
BIN
public/images/electerm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
BIN
public/images/s905-atv.webp
Normal file
BIN
public/images/s905-atv.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 727 KiB |
@@ -166,6 +166,39 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssh/">网络艺术:SSH使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-05-02
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-ssh/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">网络艺术:Aria2使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-04-15
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 Aria2是一款开源、跨平台的命令行界面下载管理器,常常被各种下载器软件使用。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
<div class="post">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">网络艺术:Aria2使用指南</a></h1>
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">下载系列(3):Aria2使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
@@ -317,7 +317,7 @@
|
||||
<span class="button previous">
|
||||
<a href="https://blog.dich.bid/network-yt-dlp/">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">网络艺术:Yt-dlp使用指南</span>
|
||||
<span class="button__text">下载系列(2):Yt-dlp使用指南</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
<div class="post">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">网络艺术:下载技术的历史</a></h1>
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">下载系列(1):下载技术的历史</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
@@ -441,7 +441,7 @@ HTTP协议是一种无状态的、应用层协议,用于传输超文本数据
|
||||
|
||||
<span class="button next">
|
||||
<a href="https://blog.dich.bid/network-yt-dlp/">
|
||||
<span class="button__text">网络艺术:Yt-dlp使用指南</span>
|
||||
<span class="button__text">下载系列(2):Yt-dlp使用指南</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
303
public/network-ssh/index.html
Normal file
303
public/network-ssh/index.html
Normal file
@@ -0,0 +1,303 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Dich'blog</title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<meta name="robots" content="noodp"/>
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
|
||||
|
||||
<meta name="description" content="">
|
||||
|
||||
<meta property="og:description" content="">
|
||||
<meta property="og:title" content="Dich'blog">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://blog.dich.bid/network-ssh/">
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:description" content="">
|
||||
<meta name="twitter:title" content="Dich'blog">
|
||||
<meta property="twitter:domain" content="blog.dich.bid">
|
||||
<meta property="twitter:url" content="https://blog.dich.bid/network-ssh/">
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" title="Dich'blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href=/dich.webp />
|
||||
|
||||
<!-- ✅ Added center alignment styles -->
|
||||
<style>
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.footer__inner {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="">
|
||||
<div class="container">
|
||||
|
||||
<header class="header">
|
||||
<div class="header__inner">
|
||||
<div class="header__logo">
|
||||
|
||||
<a href="https://blog.dich.bid" style="text-decoration: none;">
|
||||
<div class="logo">
|
||||
|
||||
Dich'blog
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<nav class="menu">
|
||||
<ul class="menu__inner">
|
||||
<li class="active"><a href="https://blog.dich.bid">blog</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/archive">archive</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/tags">tags</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/search">search</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/about">about me</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/links">links</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
|
||||
|
||||
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="content">
|
||||
|
||||
<div class="post">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssh/">网络艺术:SSH使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-05-02
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。</p>
|
||||
<span id="continue-reading"></span><h2 id="li-shi">历史</h2>
|
||||
<p>1995年,芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 设计了 <code>SSH 协议的第一个版本(现称为 SSH 1)</code>,同时写出了第一个实现(称为 SSH1)。</p>
|
||||
<p>当时,他所在的大学网络一直发生密码嗅探攻击,他不得不为服务器设计一个更安全的登录方式。写完以后,他就把这个工具公开了,允许其他人免费使用。</p>
|
||||
<p>SSH 可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议,所以大受欢迎,用户快速增长,1995年底已经发展到五十个国家的20,000个用户。SSH 1 协议也变成 IETF 的标准文档。</p>
|
||||
<p>1995年12月,由于客服需求越来越大,<code>TatuYlönen就成立了一家公司SCS,专门销售和开发SSH</code>。这个软件的后续版本,逐渐从免费软件变成了专有的商业软件。</p>
|
||||
<p>SSH 1 协议存在一些安全漏洞,所以<code>1996年又提出了 SSH 2 协议(或者称为 SSH 2.0)</code>。这个协议与1.0版不兼容,在1997年进行了标准化,1998年推出了软件实现 SSH2。但是,官方的 SSH2 软件是一个专有软件,不能免费使用,而且 SSH1的有些功能也没有提供。</p>
|
||||
<p>1999年,OpenBSD 的开发人员决定写一个<code>SSH 2 协议的开源实现</code> ,这就是 OpenSSH 项目。该项目最初是基于 SSH 1.2.12 版本,那是当时 SSH1 最后一个开源版本。但是,OpenSSH 很快就完全摆脱了原始的官方代码,在许多开发者的参与下,按照自己的路线发展。OpenSSH 随 OpenBSD 2.6 版本一起提供,以后又移植到其他操作系统,成为最流行的 SSH 实现。目前,Linux 的所有发行版几乎都自带 OpenSSH。</p>
|
||||
<h2 id="kai-shi">开始</h2>
|
||||
<p>李华是一个大学生,现在他买了一台服务器,公网IPv4为114.514.114.514,李华打算连到上面看看:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>ssh -p 22 root@114.514.114.514
|
||||
</span></code></pre>
|
||||
<p>随后命令行弹出了密码输入,李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成!</p>
|
||||
<h2 id="an-quan">安全</h2>
|
||||
<p>一段时间后,李华的linux知识提高了不少,他发现有不少IP在用随机密码不断尝试登录自己的服务器!这太危险了!</p>
|
||||
<p>于是,李华查阅了资料,发现有一篇博客<a href="https://blog.dich.bid/about-server-set/">乱七八糟:服务器初始化与安全设置</a>,于是他将openssh-server的端口改成了2333,并开启了fail2ban,这下应该安全了!</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>### 更换SSH端口
|
||||
</span><span>
|
||||
</span><span>使用root账户或已经有sudo权限的用户登录到系统。
|
||||
</span><span>
|
||||
</span><span>打开SSH配置文件`sshd_config`,可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例:
|
||||
</span><span>
|
||||
</span><span>sudo vim /etc/ssh/sshd_config
|
||||
</span><span>
|
||||
</span><span>在配置文件中找到以下行:
|
||||
</span><span>
|
||||
</span><span>Port 22
|
||||
</span><span>
|
||||
</span><span>这是SSH默认的端口号,你可以将其更改为你想要的任何未被占用的端口号。例如,将端口更改为2333:
|
||||
</span><span>
|
||||
</span><span>Port 2333
|
||||
</span><span>
|
||||
</span><span>保存并关闭文本编辑器。重新启动SSH服务,以应用更改:
|
||||
</span><span>
|
||||
</span><span>sudo service ssh restart
|
||||
</span><span>
|
||||
</span><span>或者,如果你的系统使用systemd,可以使用以下命令:
|
||||
</span><span>
|
||||
</span><span>sudo systemctl restart ssh
|
||||
</span><span>
|
||||
</span><span>### 安装 Fail2ban
|
||||
</span><span>
|
||||
</span><span>sudo apt-get install fail2ban
|
||||
</span><span>
|
||||
</span><span>#### Debian 12 及以上的版本需要手动安装 rsyslog
|
||||
</span><span>
|
||||
</span><span>sudo apt-get install rsyslog
|
||||
</span><span>
|
||||
</span><span>####启动 Fail2ban 服务
|
||||
</span><span>
|
||||
</span><span>sudo systemctl start fail2ban
|
||||
</span><span>
|
||||
</span><span>#### 开机自启动
|
||||
</span><span>
|
||||
</span><span>sudo systemctl enable fail2ban
|
||||
</span><span>
|
||||
</span><span>#### 查看 Fail2ban 服务状态
|
||||
</span><span>
|
||||
</span><span>sudo systemctl status fail2ban
|
||||
</span><span>
|
||||
</span></code></pre>
|
||||
<p>但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了!</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>#### 执行以下命令生成.pub后缀的公钥和无后缀的密钥:
|
||||
</span><span>
|
||||
</span><span>ssh-keygen
|
||||
</span><span>
|
||||
</span><span>注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
|
||||
</span><span>
|
||||
</span><span>#### 随后将.pub后缀的公钥中的内容写入服务器的~/.ssh/authorized_keys中;
|
||||
</span><span>
|
||||
</span><span>#### 使用以下命令编译服务器的SSH配置:
|
||||
</span><span>
|
||||
</span><span>vim /etc/ssh/sshd_config
|
||||
</span><span>
|
||||
</span><span>将其中的该行改为PasswordAuthentication no,保存退出;随后使用
|
||||
</span><span>
|
||||
</span><span>sudo systemctl restart sshd
|
||||
</span><span>
|
||||
</span><span>重启SSH即可禁用密码登录;
|
||||
</span><span>
|
||||
</span><span>#### 将PermitRootLogin一栏改为PermitRootLogin prohibit-password**,即可实现仅root用户密钥登录;
|
||||
</span><span>
|
||||
</span><span>#### 使用以下命令查看输出,
|
||||
</span><span>
|
||||
</span><span>sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication'
|
||||
</span><span>
|
||||
</span><span>如有PasswordAuthentication no → 禁用密码登录以及PubkeyAuthentication yes → 允许密钥登录则成功。
|
||||
</span><span>
|
||||
</span><span>> 注意authorized_keys**的权限为600,如果不是则需要改正:chmod 600 ~/.ssh/authorized_keys
|
||||
</span></code></pre>
|
||||
<h2 id="guan-li">管理</h2>
|
||||
<p>现在服务器安全了,但随着服务器数量的增加,李华很快发现一个新问题,如何管理这些个SSH连接呢?手动输入太慢了,每次都要复制粘贴也很麻烦,但是又不得不用,总不能回退到密码时代吧?况且数量多了,密码也记不住。</p>
|
||||
<p>于是李华运用软件工程学的思想,想着,这种大众的需求应该有人解决过了吧?果然,李华很快在GitHub上找到了一个开源跨平台的SSH管理软件,<a href="https://github.com/electerm/electerm">electerm</a>!</p>
|
||||
<p><img src="/images/electerm.png" alt="electerm" /></p>
|
||||
<p>通过在electerm的书签中写入服务器的地址,登录用户和密钥,只要打开electerm并点击书签就可以连接了,太方便了!</p>
|
||||
<h2 id="fan-pu">返璞</h2>
|
||||
<p>随着技术阅历的增长,李华看electerm越来越不顺眼:用它管理SSH固然方便,但同时这就得在各个系统上安装一个Electron架构的软件,而且用electerm的shell并不好用,并且备份electerm的配置不能给其他软件使用。终于,在一次界面崩溃之后李华忍无可忍,决定更换新的方案!</p>
|
||||
<p>通过研究,李华发现原来openssh有自带的管理方法,且非常便捷好用。</p>
|
||||
<p>首先,李华在用户目录下创建了一个<code>.ssh</code>文件夹,linux中在<code>/home/username/.ssh</code>这里,windows下在<code>C:\Users\username\.ssh</code>这里。</p>
|
||||
<p>随后,李华安装了openssh在系统上,linux中一般已经存在,windows上在<code>设置-系统-可选功能-添加功能</code>中选中OpenSSH Client和openssh-server开启即可.</p>
|
||||
<p>随后,李华在.ssh文件夹下创建了一个文件,名为<code>config</code>,并在其中写入以下内容:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>Host US
|
||||
</span><span> HostName 114.514.114.514
|
||||
</span><span> User root
|
||||
</span><span> IdentityFile ~/.ssh/US
|
||||
</span><span> IdentitiesOnly yes
|
||||
</span></code></pre>
|
||||
<p>随后李华在对应的位置<code>~/.ssh/US</code>创建了一个文件,李华将服务器的私钥放了进去,里面是以<code>-----BEGIN OPENSSH PRIVATE KEY-----</code>开头<code>-----END OPENSSH PRIVATE KEY-----</code>结尾的私钥。</p>
|
||||
<p>现在,要登录<code>114.514.114.514</code>这台服务器,只需要使用<code>ssh US</code>命令就可以连上服务器了,不用再手动输入了!</p>
|
||||
<h2 id="gui-zhen">归真</h2>
|
||||
<p>在进一步了解SSH之后,李华很快又发现了新的问题,服务器的私钥放在本地是不安全的!尤其是Windows这种安装源松散,鱼龙混杂的系统上。究竟有没有更好的方法呢?在对keepassxc进行研究后,李华终于得出了一个几乎完美的方案!</p>
|
||||
<ul>
|
||||
<li>开启keepassxc的SSH代理集成</li>
|
||||
<li>本地.ssh文件夹只保留公钥</li>
|
||||
<li>私钥保存在keepassxc的一个组中</li>
|
||||
</ul>
|
||||
<p>这样一来,当你执行<code>ssh xxx</code>时,ssh 不是去读私钥文件,而是通过<code>SSH_AUTH_SOCK</code>环境变量找到 KeePassXC 的 agent。KeePassXC 会提示你解锁数据库/确认使用密钥。私钥不会离开 KeePassXC,只是 KeePassXC <code>用私钥做一次签名</code>,把结果返回给 ssh。这样,<code>硬盘上不需要保存私钥文件</code>,安全性更高,且<code>只需要备份.ssh文件夹和keepassxc的kbdx文件</code>即可.</p>
|
||||
<p>那么该怎么做呢?</p>
|
||||
<p>首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的<code>~/.ssh/US.pub</code>公钥文件,里面是以ssh-ed25519或者ssh-rsa开头的公钥.</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>Host US
|
||||
</span><span> HostName 114.514.114.514
|
||||
</span><span> User root
|
||||
</span><span> IdentityFile ~/.ssh/US.pub
|
||||
</span><span> IdentitiesOnly yes
|
||||
</span></code></pre>
|
||||
<p>随后在keepassxc的设置-ssh代理中开启<code>启用SSH代理集成</code>.(openssh)</p>
|
||||
<p>接下来在keepassxc中左侧栏<code>新建一个文件夹</code>,名为SSH,里面<code>新建条目</code>,标题为US(和config中一致),然后在右侧<code>高级</code>中<code>新建</code>附件,文件名为US(和config中保持一致),文件内容为US的私钥.随后在左侧SSH代理中选中<code>在打开或解锁数据库的时候,向代理添加密钥</code>和<code>数据库锁定或关闭时,从SSH代理中删除密钥</code>这两个选项,并将下面的<code>私钥</code>选择<code>附件</code>,即为我们刚刚在高级中新建的US,可以看到对应的公钥也出现了,上一步没有公钥的可以在这里添加.按<code>确定</code>后关闭keepassxc并重新开启,这时候就可以使用<code>ssh US</code>命令登录了!</p>
|
||||
<blockquote>
|
||||
<p>注意每次登录前先开启keepassxc并解锁!</p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<p><strong>Done.</strong></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="pagination">
|
||||
<div class="pagination__title">
|
||||
<span class="pagination__title-h">Thanks for reading! Read other posts?</span>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="pagination__buttons">
|
||||
<span class="button previous">
|
||||
<a href="https://blog.dich.bid/about-baci/">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">乱七八糟:Baci实验笔记</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span class="button next">
|
||||
<a href="https://blog.dich.bid/about-gpg/">
|
||||
<span class="button__text">乱七八糟:GPG使用小记</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer__inner">
|
||||
<div class="copyright">
|
||||
<span>©
|
||||
2025
|
||||
Dichgrem</span>
|
||||
<span class="copyright-theme">
|
||||
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
<div class="post">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">网络艺术:Yt-dlp使用指南</a></h1>
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">下载系列(2):Yt-dlp使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
@@ -130,7 +130,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>停滞,youtube-dlc → yt-dlp 的诞生</strong>
|
||||
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,随即在 <strong>2021 年</strong>演变为更活跃的 <code>yt-dlp</code> 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,迅速在 Linux 发行版中取代 youtube-dl (如 Ubuntu 22.04 之后).</p>
|
||||
随着开发进度放缓,社区于 2020 年衍生出 youtube-dlc 分支,在<strong>2021 年</strong>演变为更活跃的 <code>yt-dlp</code> 项目,它继承了 youtube-dl 的核心功能,并引入更多改进,包括更好的格式选择、多线程下载等,成为了GitHub上star最多的项目之一.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>重构与功能拓展</strong>
|
||||
@@ -138,13 +138,13 @@
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="an-zhuang">安装</h2>
|
||||
<ul>
|
||||
<li>Windows</li>
|
||||
</ul>
|
||||
<p>下载官方最新可执行文件:</p>
|
||||
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">sudo</span><span> curl</span><span style="color:#ffb964;"> -L</span><span> https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp</span><span style="color:#ffb964;"> -o</span><span> /usr/local/bin/yt-dlp
|
||||
</span><span style="color:#ffb964;">sudo</span><span> chmod a+rx /usr/local/bin/yt-dlp
|
||||
</span></code></pre>
|
||||
<h3 id="windows">Windows</h3>
|
||||
<p>从yt-dlp官方GitHub上下载exe二进制文件:</p>
|
||||
<p><a href="https://github.com/yt-dlp/yt-dlp/releases/tag/2025.08.22">yt-dlp</a></p>
|
||||
<p>将其放到一个目录下,比如<code>C:\Users\<你的用户名>\yt-dlp\yt-dlp.exe</code>,随后添加环境变量。</p>
|
||||
<blockquote>
|
||||
<p>添加环境变量:Win键搜索“环境变量”,打开“编辑系统环境变量”,点击最下方的“环境变量”,选择“系统变量”中的path,点击“编辑”,新建一个变量,将上面的目录 C:\Users<你的用户名>\yt-dlp\ 写入,注意去掉前后引号,随后确定-确定-确定退出。</p>
|
||||
</blockquote>
|
||||
<p>更新版本:</p>
|
||||
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">yt-dlp -U
|
||||
</span></code></pre>
|
||||
@@ -153,22 +153,12 @@
|
||||
</ul>
|
||||
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">python3 -m</span><span> pip install</span><span style="color:#ffb964;"> -U</span><span> yt-dlp
|
||||
</span></code></pre>
|
||||
<h3 id="linux-fa-xing-ban">Linux 发行版</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Linux 发行版</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Debian / Ubuntu:<code>sudo apt install yt-dlp</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Arch / Manjaro:<code>sudo pacman -S yt-dlp</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Fedora:<code>sudo dnf install yt-dlp</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Nixos:</p>
|
||||
</li>
|
||||
<li>Debian / Ubuntu:<code>sudo apt install yt-dlp</code></li>
|
||||
<li>Arch / Manjaro:<code>sudo pacman -S yt-dlp</code></li>
|
||||
<li>Fedora:<code>sudo dnf install yt-dlp</code></li>
|
||||
<li>Nixos:</li>
|
||||
</ul>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>{pkgs, ...}: {
|
||||
</span><span> home.packages = with pkgs; [
|
||||
@@ -176,14 +166,90 @@
|
||||
</span><span> ];
|
||||
</span><span>}
|
||||
</span></code></pre>
|
||||
<ul>
|
||||
<li>Android(Termux)</li>
|
||||
</ul>
|
||||
<h3 id="android-termux">Android(Termux)</h3>
|
||||
<pre data-lang="bash" style="background-color:#151515;color:#e8e8d3;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#ffb964;">pkg</span><span> update && </span><span style="color:#ffb964;">pkg</span><span> upgrade
|
||||
</span><span style="color:#ffb964;">pkg</span><span> install python libexpat openssl ffmpeg
|
||||
</span><span style="color:#ffb964;">python3 -m</span><span> pip install</span><span style="color:#ffb964;"> -U</span><span> yt-dlp
|
||||
</span></code></pre>
|
||||
<h2 id="chang-yong-ming-ling">常用命令</h2>
|
||||
<h2 id="xia-zai-shi-zhan">下载实战</h2>
|
||||
<ul>
|
||||
<li><strong>下载B站带字幕视频</strong>:</li>
|
||||
</ul>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
|
||||
</span><span>
|
||||
</span><span>--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
|
||||
</span><span>
|
||||
</span><span>--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
|
||||
</span><span>
|
||||
</span><span>--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
|
||||
</span></code></pre>
|
||||
<ul>
|
||||
<li><strong>下载YouTube视频</strong></li>
|
||||
</ul>
|
||||
<p>先使用这个命令查看可用格式:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx
|
||||
</span></code></pre>
|
||||
<p>然后它会列举出所有可用的格式,如下:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>[youtube] MgtOAVOXBWo: Downloading webpage
|
||||
</span><span>[youtube] MgtOAVOXBWo: Downloading tv client config
|
||||
</span><span>[youtube] MgtOAVOXBWo: Downloading tv player API JSON
|
||||
</span><span>[youtube] MgtOAVOXBWo: Downloading ios player API JSON
|
||||
</span><span>[youtube] MgtOAVOXBWo: Downloading m3u8 information
|
||||
</span><span>[info] Available formats for MgtOAVOXBWo:
|
||||
</span><span>ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC MORE INFO
|
||||
</span><span>──────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||
</span><span>sb2 mhtml 48x27 0 │ mhtml │ images storyboard
|
||||
</span><span>sb1 mhtml 80x45 0 │ mhtml │ images storyboard
|
||||
</span><span>sb0 mhtml 160x90 0 │ mhtml │ images storyboard
|
||||
</span><span>233 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, low
|
||||
</span><span>234 mp4 audio only │ m3u8 │ audio only unknown Untested, Default, high
|
||||
</span><span>602 mp4 256x144 15 │ ~ 9.23MiB 81k m3u8 │ vp09.00.10.08 81k video only Untested
|
||||
</span><span>269 mp4 256x144 30 │ ~ 14.94MiB 130k m3u8 │ avc1.4D400C 130k video only Untested
|
||||
</span><span>603 mp4 256x144 30 │ ~ 15.90MiB 139k m3u8 │ vp09.00.11.08 139k video only Untested
|
||||
</span><span>229 mp4 426x240 30 │ ~ 33.33MiB 291k m3u8 │ avc1.4D4015 291k video only Untested
|
||||
</span><span>604 mp4 426x240 30 │ ~ 25.82MiB 225k m3u8 │ vp09.00.20.08 225k video only Untested
|
||||
</span><span>230 mp4 640x360 30 │ ~ 73.50MiB 642k m3u8 │ avc1.4D401E 642k video only Untested
|
||||
</span><span>605 mp4 640x360 30 │ ~ 55.73MiB 487k m3u8 │ vp09.00.21.08 487k video only Untested
|
||||
</span><span>231 mp4 854x480 30 │ ~104.35MiB 911k m3u8 │ avc1.4D401F 911k video only Untested
|
||||
</span><span>606 mp4 854x480 30 │ ~ 94.79MiB 827k m3u8 │ vp09.00.30.08 827k video only Untested
|
||||
</span><span>311 mp4 1280x720 60 │ ~330.73MiB 2887k m3u8 │ avc1.4D4020 2887k video only Untested
|
||||
</span><span>612 mp4 1280x720 60 │ ~197.04MiB 1720k m3u8 │ vp09.00.40.08 1720k video only Untested
|
||||
</span><span>312 mp4 1920x1080 60 │ ~486.64MiB 4248k m3u8 │ avc1.64002A 4248k video only Untested
|
||||
</span><span>617 mp4 1920x1080 60 │ ~369.06MiB 3222k m3u8 │ vp09.00.41.08 3222k video only Untested
|
||||
</span><span>623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested
|
||||
</span></code></pre>
|
||||
<p>我们下载312和233,即视频和音频,使用以下命令:</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx
|
||||
</span></code></pre>
|
||||
<p>这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频,注意新的名称不能太长,否则会下载失败。</p>
|
||||
<p>如果要下载带字幕的视频,则使用</p>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx
|
||||
</span></code></pre>
|
||||
<p>这个命令会:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>下载1080p视频</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>下载中文和英文字幕(包括自动生成的)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>将字幕嵌入到视频文件中</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>同时保存单独的字幕文件</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>参数说明</p>
|
||||
</li>
|
||||
</ul>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>--write-subs: 下载手动字幕
|
||||
</span><span>--write-auto-subs: 下载自动生成的字幕
|
||||
</span><span>--embed-subs: 将字幕嵌入到视频中
|
||||
</span><span>--sub-langs "zh.*": 指定下载中文字幕(所有中文变体)
|
||||
</span><span>--sub-format srt: 指定字幕格式(可选)
|
||||
</span></code></pre>
|
||||
<h2 id="chang-yong-can-shu">常用参数</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<p><strong>下载视频</strong>:</p>
|
||||
@@ -259,18 +325,7 @@
|
||||
<p><strong>配置文件设定默认参数</strong>:</p>
|
||||
<p>在 <code>~/.config/yt-dlp/config</code> 文件中添加习惯参数,如下载路径、格式偏好等。</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>比如下载B站带字幕视频的命令</strong>:</p>
|
||||
</li>
|
||||
</ul>
|
||||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
|
||||
</span><span>
|
||||
</span><span>--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
|
||||
</span><span>
|
||||
</span><span>--embed-subs: 将下载的字幕嵌入到视频文件中(如果格式支持)
|
||||
</span><span>
|
||||
</span><span>--sub-langs all,-live_chat: 下载所有字幕语言,但排除像“弹幕/实时聊天”之类的非标准字幕流
|
||||
</span></code></pre>
|
||||
<hr />
|
||||
<p><strong>Done.</strong></p>
|
||||
|
||||
@@ -286,14 +341,14 @@
|
||||
<span class="button previous">
|
||||
<a href="https://blog.dich.bid/network-download-1/">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">网络艺术:下载技术的历史</span>
|
||||
<span class="button__text">下载系列(1):下载技术的历史</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
|
||||
<span class="button next">
|
||||
<a href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="button__text">网络艺术:Aria2使用指南</span>
|
||||
<span class="button__text">下载系列(3):Aria2使用指南</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
@@ -104,7 +104,40 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">网络艺术:Yt-dlp使用指南</a></h1>
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-aria2/">下载系列(3):Aria2使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-04-15
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 Aria2是一款开源、跨平台的命令行界面下载管理器,常常被各种下载器软件使用。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-yt-dlp/">下载系列(2):Yt-dlp使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
@@ -116,7 +149,7 @@
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
@@ -137,7 +170,7 @@
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">网络艺术:下载技术的历史</a></h1>
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-download-1/">下载系列(1):下载技术的历史</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-frp/">网络艺术:FRP使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-03-01
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 FRP (Fast Reverse Proxy) 是一个用Go语言开发的高性能反向代理应用,可以帮助您轻松地进行内网穿透,对外提供服务.</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-frp/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-frp/">网络艺术:FRP使用指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2025-03-01
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 FRP (Fast Reverse Proxy) 是一个用Go语言开发的高性能反向代理应用,可以帮助您轻松地进行内网穿透,对外提供服务.</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-frp/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-ventoy/">乱七八糟:Ventoy战斗盘部署</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-nginx/">网络艺术:Docker建站与反向代理</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-07-14
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 Docker的出现极大简化了建站流程,较过去的LAMP方式优雅了许多,配合Nginx反向代理可以快速上线HTTPS站点。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-nginx/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-nginx/">网络艺术:Docker建站与反向代理</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-07-14
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 Docker的出现极大简化了建站流程,较过去的LAMP方式优雅了许多,配合Nginx反向代理可以快速上线HTTPS站点。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-nginx/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-server-set/">乱七八糟:服务器初始化与安全设置</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/windows-4-auto/">Windows系列(4):封装与全自动安装</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-05-29
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/windows/">#Windows</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 由于厂商默认安装windows家庭版导致各种问题频发,这里作者封装了一个开箱即用的,全自动安装,激活和优化的Windows11镜像。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/windows-4-auto/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/windows-4-auto/">Windows系列(4):封装与全自动安装</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-05-29
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/windows/">#Windows</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 由于厂商默认安装windows家庭版导致各种问题频发,这里作者封装了一个开箱即用的,全自动安装,激活和优化的Windows11镜像。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/windows-4-auto/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/windows-3-jh/">Windows系列(3):分类与激活</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-podcast-use/">乱七八糟:播客收听指北</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-03-06
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 讲起播客,许多人第一反应是喜马拉雅,但其实播客的订阅和收听有许多种方式。本文带你了解订阅播客的各种方式,并告诉你市面上有哪些不错的播客客户端可供选择。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/about-podcast-use/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-podcast-use/">乱七八糟:播客收听指北</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-03-06
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 讲起播客,许多人第一反应是喜马拉雅,但其实播客的订阅和收听有许多种方式。本文带你了解订阅播客的各种方式,并告诉你市面上有哪些不错的播客客户端可供选择。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/about-podcast-use/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-rss-read/">乱七八糟:RSS阅读指南</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-cdn/">网络艺术:CDN技术与应用</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-02-16
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 内容分发网络(CDN)是一组分布在不同地理位置的服务器网络,使用户能够就近获取内容,从而降低延迟并缓解源站压力.</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-cdn/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-cdn/">网络艺术:CDN技术与应用</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2024-02-16
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 内容分发网络(CDN)是一组分布在不同地理位置的服务器网络,使用户能够就近获取内容,从而降低延迟并缓解源站压力.</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/network-cdn/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/network-ssl/">网络艺术:SSL/TLS证书</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-blog/">乱七八糟:个人博客搭建</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2023-10-12
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 个人博客的搭建具有许多的方案可以选择,本文介绍如何快速部署一个博客,并将其发布到公网。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/about-blog/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-blog/">乱七八糟:个人博客搭建</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2023-10-12
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 个人博客的搭建具有许多的方案可以选择,本文介绍如何快速部署一个博客,并将其发布到公网。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/about-blog/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/about-mechrev-keyboard/">乱七八糟:机械革命键盘失灵拯救记</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
@@ -232,39 +265,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-tv/">综合工程:Android-TV 折腾小记</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2023-08-14
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/zong-he-gong-cheng/">#综合工程</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV (以下简称ATV)安装的一些要点。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/awesome-android-tv/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
|
||||
@@ -104,6 +104,39 @@
|
||||
<div class="posts">
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-tv/">综合工程:Android-TV 折腾小记</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
<span class="post-date">
|
||||
2023-08-14
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<span class="post-tags-inline">
|
||||
:: tags:
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/zong-he-gong-cheng/">#综合工程</a></span>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="post-content">
|
||||
<p>前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV (以下简称ATV)安装的一些要点。</p>
|
||||
</div>
|
||||
<div>
|
||||
<!-- ︎ -- force text style - some devices render this as emoji -->
|
||||
<a class="read-more button" href="https://blog.dich.bid/awesome-android-tv/">
|
||||
<span class="button__text">Read more</span>
|
||||
<span class="button__icon">↩︎</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="post on-list">
|
||||
|
||||
<h1 class="post-title"><a href="https://blog.dich.bid/awesome-android-root/">综合工程:安卓刷机与root教程</a></h1>
|
||||
<div class="post-meta-inline">
|
||||
|
||||
|
||||
BIN
public/pagefind/fragment/en_1061674.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_1061674.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_1101d96.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_1101d96.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_1185a3c.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_1185a3c.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_15721d4.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_15721d4.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_1af34b3.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_1af34b3.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_1d499a6.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_1d499a6.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_208734d.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_208734d.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_23e7edd.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_23e7edd.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_36c2d4b.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_36c2d4b.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_7df052f.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_7df052f.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_943bdaf.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_943bdaf.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_9686d6e.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_9686d6e.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_9688546.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_9688546.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_9dba92a.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_9dba92a.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_ac3ca12.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_ac3ca12.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_c3fdd25.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_c3fdd25.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_c97dfaa.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_c97dfaa.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_ce9dba3.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_ce9dba3.pf_fragment
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/fragment/en_f7355e6.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_f7355e6.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/fragment/en_fedfd75.pf_fragment
Normal file
BIN
public/pagefind/fragment/en_fedfd75.pf_fragment
Normal file
Binary file not shown.
BIN
public/pagefind/index/en_1c8ae3f.pf_index
Normal file
BIN
public/pagefind/index/en_1c8ae3f.pf_index
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/index/en_8fd34f8.pf_index
Normal file
BIN
public/pagefind/index/en_8fd34f8.pf_index
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/index/en_d766f25.pf_index
Normal file
BIN
public/pagefind/index/en_d766f25.pf_index
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/pagefind/index/en_eb69490.pf_index
Normal file
BIN
public/pagefind/index/en_eb69490.pf_index
Normal file
Binary file not shown.
BIN
public/pagefind/index/en_fc36fff.pf_index
Normal file
BIN
public/pagefind/index/en_fc36fff.pf_index
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
{"version":"1.3.0","languages":{"en":{"hash":"en_92c2735c2e","wasm":"en","page_count":93}}}
|
||||
{"version":"1.3.0","languages":{"en":{"hash":"en_9e10693336","wasm":"en","page_count":93}}}
|
||||
Binary file not shown.
BIN
public/pagefind/pagefind.en_9e10693336.pf_meta
Normal file
BIN
public/pagefind/pagefind.en_9e10693336.pf_meta
Normal file
Binary file not shown.
@@ -177,6 +177,10 @@
|
||||
<loc>https://blog.dich.bid/network-nginx/</loc>
|
||||
<lastmod>2024-07-14</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://blog.dich.bid/network-ssh/</loc>
|
||||
<lastmod>2025-05-02</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://blog.dich.bid/network-ssl/</loc>
|
||||
<lastmod>2024-02-15</lastmod>
|
||||
@@ -224,9 +228,6 @@
|
||||
<url>
|
||||
<loc>https://blog.dich.bid/tags/network/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://blog.dich.bid/tags/wang-luo-yi-shu/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://blog.dich.bid/tags/windows/</loc>
|
||||
</url>
|
||||
|
||||
@@ -116,13 +116,7 @@
|
||||
|
||||
<li class="tag-list">
|
||||
<a href="https://blog.dich.bid/tags/network/">
|
||||
Network (10 posts)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="tag-list">
|
||||
<a href="https://blog.dich.bid/tags/wang-luo-yi-shu/">
|
||||
网络艺术 (2 posts)
|
||||
Network (13 posts)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ Dich'blog</title>
|
||||
<div class="post">
|
||||
<h1 class="post-title">
|
||||
tag: #Network
|
||||
(10 posts)
|
||||
(13 posts)
|
||||
</h1>
|
||||
|
||||
<a href="https://blog.dich.bid/tags">
|
||||
@@ -116,9 +116,39 @@ Dich'blog</title>
|
||||
|
||||
|
||||
<ul><li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-ssh/">
|
||||
<span class="post-date">2025-05-02</span>
|
||||
:: <span class="post-list-title">网络艺术:SSH使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="post-date">2025-04-15</span>
|
||||
:: <span class="post-list-title">下载系列(3):Aria2使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-yt-dlp/">
|
||||
<span class="post-date">2025-04-12</span>
|
||||
:: <span class="post-list-title">下载系列(2):Yt-dlp使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/network/">#Network</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-download-1/">
|
||||
<span class="post-date">2025-04-11</span>
|
||||
:: <span class="post-list-title">网络艺术:下载技术的历史</span></a>
|
||||
:: <span class="post-list-title">下载系列(1):下载技术的历史</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
|
||||
@@ -1,162 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
Dich'blog</title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||
<meta name="robots" content="noodp"/>
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
|
||||
|
||||
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="description" content="All posts tagged 网络艺术">
|
||||
|
||||
<meta property="og:description" content="All posts tagged 网络艺术">
|
||||
<meta property="og:title" content="Dich'blog">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://blog.dich.bid/tags/wang-luo-yi-shu/">
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:description" content="All posts tagged 网络艺术">
|
||||
<meta name="twitter:title" content="Dich'blog">
|
||||
<meta property="twitter:domain" content="blog.dich.bid">
|
||||
<meta property="twitter:url" content="https://blog.dich.bid/tags/wang-luo-yi-shu/">
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" title="Dich'blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href=/dich.webp />
|
||||
|
||||
<!-- ✅ Added center alignment styles -->
|
||||
<style>
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.footer__inner {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="">
|
||||
<div class="container">
|
||||
|
||||
<header class="header">
|
||||
<div class="header__inner">
|
||||
<div class="header__logo">
|
||||
|
||||
<a href="https://blog.dich.bid" style="text-decoration: none;">
|
||||
<div class="logo">
|
||||
|
||||
Dich'blog
|
||||
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<nav class="menu">
|
||||
<ul class="menu__inner">
|
||||
<li><a href="https://blog.dich.bid">blog</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/archive">archive</a></li>
|
||||
|
||||
<li class="active"><a href="https://blog.dich.bid/tags">tags</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/search">search</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/about">about me</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/links">links</a></li>
|
||||
|
||||
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
|
||||
|
||||
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<div class="content">
|
||||
|
||||
<div class="post">
|
||||
<h1 class="post-title">
|
||||
tag: #网络艺术
|
||||
(2 posts)
|
||||
</h1>
|
||||
|
||||
<a href="https://blog.dich.bid/tags">
|
||||
Show all tags
|
||||
</a>
|
||||
|
||||
|
||||
<ul><li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-aria2/">
|
||||
<span class="post-date">2025-04-15</span>
|
||||
:: <span class="post-list-title">网络艺术:Aria2使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
|
||||
</li>
|
||||
<li class="post-list">
|
||||
<a href="https://blog.dich.bid/network-yt-dlp/">
|
||||
<span class="post-date">2025-04-12</span>
|
||||
:: <span class="post-list-title">网络艺术:Yt-dlp使用指南</span></a>
|
||||
|
||||
<span class="post-tags-inline">
|
||||
::
|
||||
<a class="post-tag" href="https://blog.dich.bid/tags/wang-luo-yi-shu/">#网络艺术</a></span>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<footer class="footer">
|
||||
<div class="footer__inner">
|
||||
<div class="copyright">
|
||||
<span>©
|
||||
2025
|
||||
Dichgrem</span>
|
||||
<span class="copyright-theme">
|
||||
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
BIN
static/images/electerm.png
Normal file
BIN
static/images/electerm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
BIN
static/images/s905-atv.webp
Normal file
BIN
static/images/s905-atv.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 727 KiB |
Reference in New Issue
Block a user