0%

准备

  • 已经安装KVM或者Virtual Box的Ubuntu 16.04 64bit。
  • 下载MPQUIC镜像,下载地址,下载后解压。

配置环境

创建虚拟机

  1. 在KVM或者Virtual Box中创建一个虚拟机,内存推荐2G以上。
  2. 虚拟机硬盘为下载的MPQUIC镜像。
  3. 设置虚拟机的网卡为e1000,其他的网卡可能不支持。
  4. 启动虚拟机,用户名和密码均为mininet
  5. 测试虚拟机是否可以上网。

部署测试环境

  1. 挂载内存盘,虚拟机每次重启都要进行该步骤

    1
    2
    3
    4
    bash ~/mount_tmpfs.sh
    # 或者
    sudo mkdir -p /mnt/tmpfs
    sudo mount -t tmpfs -o size=256M tmpfs /mnt/tmpfs
  2. 创建ssh密钥

    1
    2
    3
    ssh-keygen # 一直回车即可,之前创建过的可以忽略
    # 设置ssh免密登录
    ssh-copy-id mininet@localhost
  3. 安装依赖

    1
    sudo apt install python-dev python-pip python-numpy
  4. 下载测试脚本

    1
    2
    cd ~/git
    git clone https://github.com/qdeconinck/minitopo-experiences.git

运行测试脚本

  1. 修改脚本参数,将待运行的脚本中的REMOTE_SERVER_RUNNER_PORT的值修改为["22"]

    1
    2
    # 以quic_mptcp_https_tests_expdes_wsp_highbdp_loss_quic.py脚本为例
    vim ~/git/minitopo-experiences/experiences/quic_mptcp_https_tests_expdes_wsp_highbdp_loss_quic.py
  2. 运行脚本。脚本运行很慢,且无法用Ctrl-C终止,建议使用tmux或者screen等软件运行。

    1
    python ~/git/minitopo-experiences/experiences/quic_mptcp_https_tests_expdes_wsp_highbdp_loss_quic.py
  3. 查看运行结果。运行结果保存在/mnt/tmpfs中,测试结束后应及时复制出来,因为该目录为内存盘,重启后数据会丢失

更新日志

时间 修改内容
2020.07.08 更新ffmpeg-wrapper,修复无法显示ASS字幕的问题
2020.04.07 修改安装命令
2020.03.31 撰写文章

引言

由于群晖没有获得DTS的版权,因此群晖自带的VideoStation从某个版本开始不支持DTS、EAC3、TrueHD的音频格式,严重影响使用体验。搜索该问题,得到的答案均为将VideoStation降级到2.3.4-1468,但是这个版本的VideoStation不支持HEVC和4K解码,比较鸡肋。本文将利用第三方的ffmpeg替换VideoStation中自带的ffmpeg,实现对全视频格式的支持。

操作方法

安装ffmpeg

  1. 下载对应版本的ffmpeg安装包,其中DS918+对应的版本是apollolake,具体每个机型对应的版本可以在以下连接中找到:https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model

    下载地址:https://github.com/th0ma7/synology/tree/master/packages

  2. 登录DSM,打开套件中心,点击手动安装,选择刚刚下载的文件进行安装。

  3. 在DSM中打开控制面板,选择终端机和SNMP,勾选启动SSH功能,并调整对应的端口号。

  4. 用XSheel等软件以SSH的方式登录到NAS中,执行以下命令:

    1
    2
    3
    sudo chmod +s /var/packages/ffmpeg/target/bin/ffmpeg
    sudo chmod +s /var/packages/ffmpeg/target/bin/ffprobe
    sudo chmod +s /var/packages/ffmpeg/target/bin/vainfo

安装VideoStation

  1. 登录DSM,打开套件中心,安装最新版的VideoStation,本文撰写时,版本为2.4.7-1603,经测试,以下版本适用于本方法,其他版本未测试:2.4.6-15942.4.7-1603

  2. 用XSheel等软件以SSH的方式登录到NAS中,执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 备份
sudo sed -i'-BACKUP' -e 's/eac3/ZAAP/' -e 's/dts/ZAP/' -e 's/truehd/ZAPZAP/' /var/packages/VideoStation/target/lib/libsynovte.so
# 注意:ffmpeg的备份名称ffmpeg-BACKUP应与ffmpeg自定义脚本中$bin2保持一致
sudo mv /var/packages/VideoStation/target/bin/ffmpeg /var/packages/VideoStation/target/bin/ffmpeg-BACKUP
sudo mv /var/packages/VideoStation/target/bin/ffprobe /var/packages/VideoStation/target/bin/ffprobe-BACKUP
sudo mv /var/packages/VideoStation/target/bin/vainfo /var/packages/VideoStation/target/bin/vainfo-BACKUP

# 更新/var/packages/VideoStation/target/ffmpeg为自定义脚本,调用第三方的ffmpeg
# 具体脚本信息见附录
sudo su
echo "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" | base64 -d | gunzip > /var/packages/VideoStation/target/bin/ffmpeg
exit

# 更新ffprobe vainfo
sudo ln -s /var/packages/ffmpeg/target/bin/ffprobe /var/packages/VideoStation/target/bin/ffprobe
sudo ln -s /var/packages/ffmpeg/target/bin/vainfo /var/packages/VideoStation/target/bin/vainfo

# 解除对EAC3 DTS TrueHD的屏蔽
sudo sed -i'-BACKUP' -e 's/eac3/ZAAP/' -e 's/dts/ZAP/' -e 's/truehd/ZAPZAP/' /var/packages/VideoStation/target/lib/libsynovte.so

# 调整权限信息
sudo chmod +x /var/packages/VideoStation/target/bin/ffmpeg
sudo chmod +s /var/packages/VideoStation/target/bin/ffmpeg
sudo chown root:VideoStation /var/packages/VideoStation/target/bin/ffmpeg
阅读全文 »

libtorrent

安装依赖

1
2
3
4
5
6
7
8
sudo apt install 
automake \
gcc \
g++ \
libtool \
pkg-config \
libcrypto++-dev \
libssl-dev

下载源代码并解压

1
2
wget http://rtorrent.net/downloads/libtorrent-0.13.8.tar.gz
tar zxvf libtorrent-0.13.8.tar.gz

编译安装

1
2
3
4
5
cd libtorrent-0.13.8
./autogen.sh
./configure
make -j4
sudo make install
阅读全文 »

启用gzip只需要在相应的server或者location中添加以下参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 开启gzip
gzip on;

# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;

# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
gzip_comp_level 6;

# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;

# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";

使用下面的命令,可以让GIT将用户名和密码信息保存在硬盘上。

1
git config --global credential.helper store

如果只想保存某个仓库的用户名密码信息,可以去掉--global参数。

需要注意的是,该密码是明文存储,保存在~/.git-credentials文件中。
该文件内容类似于一下方式:

1
https://user:pass@example.com