2020-07-29 qutebrowser 不能播放 drm 内容的解决办法
- 我系统基本情况
- 我的系统, 安装的是源里面的 nvidia 驱动
- screenfectch 输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[archlinux@myhostname ~]$ screenfetch
-`
.o+` archlinux@myhostname
`ooo/ OS: Arch Linux
`+oooo: Kernel: x86_64 Linux 5.7.7-arch1-1
`+oooooo: Uptime: 10m
-+oooooo+: Packages: 802
`/:-:++oooo+: Shell: bash 5.0.17
`/++++/+++++++: Resolution: 1920x1080
`/++++++++++++++: DE: GNOME
`/+++ooooooooooooo/` WM: KWin
./ooosssso++osssssso+` GTK Theme: Adwaita [GTK2/3]
.oossssso-````/ossssss+` Icon Theme: Adwaita
-osssssso. :ssssssso. Font: Cantarell 11
:osssssss/ osssso+++. Disk: 35G / 882G (5%)
/ossssssss/ +ssssooo/- CPU: Intel Core i7-4770K @ 8x 3.9GHz [42.0°C]
`/ossssso+/:- -:/+osssso+- GPU: GeForce GTX 780
`+sso+:-` `.-/+oso: RAM: 2719MiB / 7897MiB
`++:. `-/+/
.` `/
- 解决办法
- 首先安装 chromium-widevine
1
[archlinux@myhostname ~]$ yaourt -S chromium-widevine
- 创建
/etc/pacman.d/hooks/nvidia.hook
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[archlinux@myhostname ~]$ cat /etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
Target=linux
# Change the linux part above and in the Exec line if a different kernel is used
[Action]
Description=Update Nvidia module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'- 在
/etc/mkinitcpio.conf
文件中的 MODULES=() 行的括号中加入 nvidia nvidia_modeset nvidia_uvm nvidia_drm , 如下所示:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(piix ide_disk reiserfs)
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect block filesystems)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev block filesystems)
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS=(base udev block mdadm encrypt filesystems)
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS=(base udev block lvm2 filesystems)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)
# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()- 在
/etc/default/grub
中的第六行中加入 nvidia-drm.modeset=1, 如如下展示:
1
GRUB_CMDLINE_LINUX_DEFAULT="nvidia-drm.modeset=1 loglevel=3 quiet"
- 运行grub-mkconfig
1
[archlinux@myhostname ~]$ sudo grub-mkconfig -o /boot/grub/grub.cfg
- 最后得注意, 在进行第三步时运行
1
[archlinux@myhostname ~]$ sudo mkinitcpio -P
- 重启, 并设置 content.headers.user_agent 参数, 在qutebrowser 中运行如下命令
1
:set content.headers.user_agent 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {qt_key}/{qt_version} {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}'
- 最后就可以在 qutebrowser 中播放 drm 内容了。
- 在
2020-07-29 qutebrowser 不能播放 drm 内容的解决办法
https://www.supermew.top/2020/07/29/qutebrowser-不能播放-drm-内容的解决办法/