2019年5月

直播推流是离不开ffmpeg组件的。尤其像我这种全天推电视剧的直播间。而我不可能一直在我的电脑上开着直播(这不现实),所以我需要一台最基本的服务器来维持它。而一般的服务器默认都是配置CentOS系统的。而且推流也不是什么需要保证稳定的东西,因此通过yum直接安装是最省时省力的。但是CentOS默认的源中没有该组件。因此需要自行进行一些配置才可以。

1、安装EPEL Release

因为安装需要使用其他的repo源,所以需要EPEL支持

yum install -y epel-release

如果出现缺少Code提示,可以:
sudo rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

安装完成之后,可以查看是否安装成功:

yum repolist

2、导入一个Code

这一步可能不成功(提示404找不到文件),但是根据我的测试来看,对之后好像没什么影响。

rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

3、安装nux-dextop 源

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

可以通过 yum repolist 查看repo源,看是否安装成功

4、安装ffmpeg

yum install -y ffmpeg

完成。可以通过 ffmpeg -version 检查版本信息。

闲来去读DDE-Dock的代码,发现了一点儿东西,可以把颜色换成亮色,很简单。

从GitHub上下载DDE-Dock源码包

前往GitHub,搜索 DDE-dock ,可以找到 linuxdeepin/dde-dock 项目,进入之后下载即可。

修改代码

将下载的源码包解压,进入其中的 frame 文件夹。

  • 打开 main.cpp ,查找 dark ,将找到的文本改为light,保存退出。
  • 进入 panel 文件夹,打开 mainpanel.cpp ,查找 DarkColor ,将找到的更改为 LightColor
  • 在下一行,应该有一个设置颜色的函数,其参数为 55,63,71 .将这个值更改为 248,248,255 ,保存退出。

安装编译环境

该环境需要的包比较多,推荐在虚拟机中进行。

需要安装的包如下(通过apt命令安装即可):

cmake g++ qt-sdk qt-base5-dev libqt5x11extras5-dev libdtkwidget-dev libxcb-ewmh-dev libdframeworkdbus-dev libgsettings-qt-dev libdde-network-utils-dev libxcb-image0-dev libxcb-composite0-dev libxtst-dev libxcb-icccm4-dev libdbusmenu-qt5-dev qtbase5-private-dev

构建过程

在源码的根目录下打开终端,依次输入如下命令:

mkdir build
cd build
cmake ..
make

可能有一些插件报错,可以将报错的语句注释掉再进行构建,在接下来的安装过程中排除掉这些插件即可。

安装

  • build/frame 文件夹下可以找到 dde-dock 文件,用其替换掉 /usr/bin/dde-dock
  • build/plugin 文件夹下可以找到一些基本的dde-dock插件,用这些对应的替换掉 /usr/lib/dde-dock 下的同名文件(在这下面还有一些子文件夹,如果有对应的也一并替换掉)

重启电脑,DDE-dock的底色就变成Mac OS的模样了。

商店中的OBS版本实在不敢恭维…尤其到了15.7以后,推流总会闪退。遂想到来自己编译最新版本的OBS。而本着服务大众的理念,便将其打包成Appimage格式,便于传播的同时还可以避免各种依赖的问题。

一、编译安装OBS

OBS是开源软件,所以可以方便的从官方网站获取源码进行编译安装。

  1. 使用命令  sudo apt install build-essential pkg-config cmake git-core checkinstall 完成编译环境的搭建
  2. 使用
sudo apt install libx11-dev libgl1-mesa-dev libvlc-dev libpulse-dev libxcomposite-dev libxinerama-dev libv4l-dev libudev-dev libfreetype6-dev libfontconfig-dev qtbase5-dev libqt5x11extras5-dev libx264-dev libxcb-xinerama0-dev libxcb-shm0-dev libjack-jackd2-dev libcurl4-openssl-dev luajit-5.1-dev swig python3.6-dev libluajit-5.1-dev python3-dev ffmpeg 

安装依赖包

  1. 安装aac依赖: sudo apt-get install libavcodec-dev libavfilter-dev libavdevice-dev libfdk-aac-dev
  2. 编译安装OBS。下列命令依次执行(首先安装好git和cmake命令):
   git clone --recursive https://github.com/obsproject/obs-studio.git 
   cd obs-studio
   mkdir build && cd build
   cmake -DUNIX_STRUCTURE=1 -DCMAKE_INSTALL_PREFIX=/usr ..
   make -j4
   sudo checkinstall --pkgname=obs-studio --fstrans=no --backup=no --pkgversion="$(date +%Y%m%d)-git" --deldoc=yes

编译安装完成,同时,在 obs-studio/build 下面可以找到一个deb格式的安装包。如果没有更新需要,保留这个安装包,以后就可以直接安装了(需要安装依赖)。

二、打包成appimage格式

诚如前面所讲,现在拥有的deb还是需要各种依赖才能正常安装运行的。如果为了携带或者便于传播,可以将当前版本打包成appimage格式的包。这样,通过一个文件便能在几乎所有Debian系的Linux上面运行了(不敢说RHEL系也能用,但是至少Debian系足够了)

  1. 前往 https://github.com/AppImage/AppImages ,点击文件列表右上绿色的Clone or Download按钮,弹出气泡选择Download ZIP,获得脚本
  2. 将下载得到的ZIP文件整体解压出来,得到一个名为 AppImages-master 的文件夹
  3. 将前面编译得到的deb文件复制进这个文件夹
  4. 在这个文件夹中打开终端,使用命令 bash -ex ./pkg2appimage recipes/OBS-Studio.yml 完成appimage的打包(过程较长,耐心等待)
  5. 完成。现在可以在 AppImages-master/out 下面找到刚刚打包好的appimage版本OBS了。

至此,新版本的OBS安装包制作完成。推流、录像都不再有问题了,美滋滋

KDE下不能启动deepin wine一直是个挺难受的事情。就我个人来说,喜欢KDE的桌面风格,但又不想放弃deepin wine里边比较优质的程序。所以想到了一个比较骚的招数,也算是解决了吧。

主要思路:可能是deepin-wine在打包时无意间加入了gnome依赖。所以补齐依赖就可以了。

方法很简单,安装gnome-settings-daemon

之后,将/etc/xdg/autostart/org.gnome.SettingsDaemon.XSettings.desktop 复制到 ~/.config/autostart/

最后,去往设置—开机和关机—自动启动 中,将gnome的一项勾选启动即可。

一直使用shadowsocks-qt5做ss客户端,之前在DDE下面也能方便的设置全局代理,但是到了KDE下,它的代理设置方法就没有那么方便了。所以在其他桌面下,一般在终端使用ss更好一些。但是这样一来,就没有一个图形界面可以使用了。而在网上能搜索到教程又少,好不容易找到qt5的又不成功,所以只能自己摸索了。不过还好,经过一番实验,终于在KDE下把qt5整成全局代理了,遂记录在此。

一、生成一份pac文件

这个的用处很明显,只代理不可访问的地址,以确保可访问的不绕路,不可访问的可联通。

  • 安装pip(如果系统未安装,需安装)
sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv
  • 安装Genepac以自动生成pac文件

sudo pip install genpac

  • 选择一个存放pac文件的文件夹,并生成

genpac --proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o 输出文件地址 --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"

pac文件就成功创建了。

二、KDE下设置代理

假设已经安装了shadowsocks-qt5且已经启动。现在只需要将其与全局代理和pac文件关联起来就完成了。

打开KDE的系统设置,切换到网络—设置—代理。

在“配置所用的代理服务器”窗口中,选择“使用手动配置的代理服务器”。

在弹出的表单中将“SOCK5代理”处添上 127.0.0.1,后面的“端口”填1080,“例外”处填写刚刚生成的pac文件位置,file:///开头(是三个斜线,如file:///home/kevin/proxy.pac)。

最后,勾选“只为排除列表中的地址使用代理服务器”,确认。

全局代理就设置好了。

得益于Linux较为缺陷的驱动程序们,Linux是比较费电的。这集中表现在电池的使用时间会明显短于Windows下面使用。但是借助一些电源管理软件,我们可以最大限度的提升Linux在电池情况下面使用的时长,甚至在相同工作量下面超过Windows。

比较好用的软件就是TLP。TLP提供优秀的Linux高级电源管理功能,不需要了解所有技术细节。默认配置已经对电池使用时间进行了优化,只要安装即可享受更长的使用时间。但如果想最大限度的优化电量损耗,还是需要自行进行配置。

在tlp更新到1.3后,配置文件结构有较大改动。下文会将新增/变更部分加粗表示,删除部分则直接加上删除线以区分。

一、相关软件包

一定需要安装的:tlp

无线设备控制:tlp-rdw

硬盘降速:smartmontools

CPU高级节能:x86_energy_perf_policy

网络唤醒更改:ethtool

对ThinkPad的电源优化:tp_smapi(充电阈值与电池校准)、acpi_call(Sandy Bridge及更新型号上面的充电阈值与电池校准)

二、服务调整

通过命令systemctl enable tlp(tlp-sleep服务已被移除)来启动TLP服务,并通过命令systemctl mask systemd-rfkill.servicesystemctl mask systemd-rfkill.socket来屏蔽systemd的rfkill服务及套接字以防止冲突,保证TLP无线设备的开关选项可以正确运行。

如果安装了tlp-rdw以便控制无线设备节能,则需通过systemctl enable NetworkManager-dispatcher启用此服务,并通过命令systemctl mask systemd-rfkill.servicesystemctl mask systemd-rfkill.socket来屏蔽systemd的rfkill服务及套接字以防止冲突,保证TLP无线设备的开关选项可以正确运行。

一般情况下都使用NetworkManager作为网络管理器。如果使用其他的,请编辑 /etc/systemd/system/multi-user.target.wants/tlp.service ,将 After=multi-user.target bluetooth.service NetworkManager.service 一行的 NetworkManager.service 去掉以避免错误。

现在,注销重新登录一下,默认配置的TLP就已经启动了。此时电脑消耗的电量应该比之前少了一些。但如果想要做到最大程度的节能,需要自行编辑一下TLP的配置文件。

三、配置文件的几个主要配置

用root权限的文本编辑器打开 /etc/default/tlp ,这是TLP的配置文件。

配置方式在1.3后变更较大。用户既可以修改/etc/tlp.conf,亦可以在/etc/tlp.d下以设置项=值的配置文件形式实现更改。该文件夹遵循下述规则:

  • 加载顺序受文件名最开始的数字影响,越大的数加载越晚,越能覆盖前面的设置
  • 00-template.conf为示例,用户自定义时亦需参考这个文件的命名方法和书写方式
  • 如果/etc/tlp.d下有些设置与/etc/tlp.conf冲突,则遵循tlp.d下的设置

推荐直接修改/etc/tlp.conf,因为这个文件的配置方法与以前的版本相同。下面的内容全部针对此文件。

每一项都是什么作用已经通过注释标记在这个文件中了。你可以根据自己的需要对相应的位置进行修改。但经过我自己的探索,给出几个自己最好改一改的位置。

1、TLP_DEFAULT_MODE

这一项记录了TLP启动时默认的模式。改成BAT可默认以电池供电方式启动,达到节省电量的目的。

2、TLP_PERSISTENT_DEFAULT

配合TLP_DEFAULT_MODE的修改,此处改成0以保证在连接电源线时电脑会以非节点模式运作以达到最高性能,而当改成电池供电,TLP自动将状态修改为节点模式以节约电量。

3、CPU_HWP_ON_AC和CPU_HWP_ON_BAT

使用Intel Skylake架构或更新的CPU并且Linux内核版本 >= 4.10可启用该配置。这两项分别对应通过电源连接和通过电池供电时候CPU的运作模式。可选performance, balance_performance, default, balance_power, power,依次为最高性能、优先考虑性能、默认、优先考虑节能、最大节能。

可以设置为CPU_HWP_ON_AC=balance_performance和CPU_HWP_ON_BAT=power可以保证电源供电时候偏好性能而电池供电时最大节能。

至于Skylake架构以前或Linux内核版本低于4.10时该配置失效,可忽略该项而将CPU_SCALING_GOVERNOR_ON_AC和CPU_SCALING_GOVERNOR_ON_BAT两项进行修改(如果有注释符则取消注释)。

对于酷睿i系列,可选项powersave和performance(推荐前者);其他型号可选项ondemand, powersave, performance, conservative, schedutil(推荐ondemand)

4、ENERGY_PERF_POLICY_ON_AC=performance和ENERGY_PERF_POLICY_ON_BAT=power

CPU相对节能策略。可选项performance, balance-performance, default, balance-power, power

5、DISK_DEVICES

该项关乎到之后的磁盘节能策略涉及到的磁盘。默认只有sda和sdb两块磁盘。如果你有更多的磁盘,请都加到引号内,通过空格分隔。磁盘label可以通过命令fdisk -l获得

如果此处修改了磁盘的数量,那么所有关于磁盘的设置项都需要对应的修改。如:

6、DISK_APM_LEVEL

这个设置意在调整硬盘在空闲时间节电,必要时候可以将低转速来实现。这里同样对应着AC和BAT。可以把AC设置成默认,即写为keep。注意,有几块磁盘写几个配置,中间通过空格分隔。如我有三块磁盘,DISK_DEVICES改为了"sda sdb sdc",则此处对应修改为"keep keep keep"

至于BAT一项,可以设置节电等级。其中1~127的节电等级可能会使硬盘降速,128~255则不会改变。因此对于SSD,设置128以上即可,HDD则可以设置成120左右的数字来兼顾唤醒延迟和降速节电。同样需要注意,在DISK_DEVICES写了几块硬盘,这里将要写几个参数。如我的三块硬盘,此处写成了"128 128 120"

7、SATA_LINKPWR

磁盘ALPM节电选项。同样对应着AC和BAT。

可选项min_power, med_power_with_dipm, medium_power, max_performance。其中,med_power_with_dipm需要4.15及以上版本的内核支持。

与6同理,有几块硬盘写几个配置,通过空格分开。如我的三块硬盘:

`SATA_LINKPWR_ON_AC="max_performance max_performance med_power_with_dipm"
SATA_LINKPWR_ON_BAT="min_power min_power min_power"`

8、RUNTIME_PM_BLACKLIST

如果使用bumblebee来控制英伟达显卡,那么把这一项的注释取消掉,然后在后面的引号中输入英伟达显卡的硬件地址以使Bumblebee控制GPU的电源。

获取硬件地址可以通过命令 lspci 来查看。一般情况下是 01:00.0

更多的设定还望自行阅读说明进行调整。如此设定之后,Linux在电池供电时,使用时间应该可以明显的提升了。