Verwendung des Chrom-Widevine-Debian-Pakets


10

Ab mindestens Debian 9 (Stretch) enthält Debian das Contrib-Paket chromium-widevine. Die Beschreibung dieses Pakets lautet:

Dieses Paket bietet Unterstützung für das Widevine-Modul zur Entschlüsselung von Inhalten.

Nach der Installation dieses Pakets kann ich jedoch kein Anzeichen dafür finden, dass Chromium dieses Plugin erkennt oder lädt. Der Standort von Widevine in diesem Paket ist /usr/lib/chromium/libwidevinecdmadapter.so.

Ich verwende dieses Paket derzeit zum Abspielen von Amazon Prime Video auf Chromium. Derzeit erhalte ich den Fehler:

In Ihrem Webbrowser fehlt eine Komponente für digitale Rechte. Gehen Sie zu chrome: // components und klicken Sie unter WidevineCdm auf Nach Updates suchen.

chrome: // components listet WidevineCdm nicht unter Chromium auf.

Für extra komisch bekomme ich:

root@orwell:/usr/lib/chromium# ldd libwidevinecdmadapter.so 
        linux-vdso.so.1 (0x00007ffccbfad000)
        libwidevinecdm.so => not found
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f08c6e5b000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f08c6ad3000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f08c6733000)
        /lib64/ld-linux-x86-64.so.2 (0x000055e84bdbe000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f08c642b000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f08c6213000)

Also libwidevinecdm.sozu nichts auflöst?

Irgendeine Idee, was ich hier machen soll? Das chromium-widevinehat keine Dokumentation oder Angabe, wie man vorgehen soll.

HINWEIS: Diese Frage ist zumindest ab Debian 10 / Buster veraltet, da das Chrom-Widevine-Paket nicht mehr vorhanden ist.


Wenn das Paket keine Dokumentation enthält, reichen Sie einen Fehlerbericht ein, der dies angibt. IMO, das ist zumindest ein "wichtiger" (oder vielleicht sogar "schwerwiegender") Schweregradfehler .
Cas

Antworten:


8

Ich hatte kein Glück mit Netflix mit chromium-widevineDebian 9.3 von Contrib Repo. Was ich getan habe war:

wget https://dl.google.com/widevine-cdm/1.4.8.1008-linux-x64.zip
unzip 1.4.8.1008-linux-x64.zip
sudo mkdir /usr/lib/chromium
sudo mv libwidevinecdm.so /usr/lib/chromium
sudo chmod 644 /usr/lib/chromium/libwidevinecdm.so

Nur um klar zu sein, hat dieses Rezept für Sie funktioniert?
Faheem Mitha

1
Ja, ich schaue gerade Netflix auf Debian 9.3 auf Chrom :)
a_z

Danke für die Bestätigung. Ich werde diesen Ansatz versuchen. Obwohl ich mich frage, warum das Debian-Paket nicht funktioniert.
Faheem Mitha


2
Ich habe es gerade auf Mint 19.2 versucht. mit Chrom 76 und funktionierte leider nicht.
Bernd Wechner

0

Debian gibt an, dass alle in der offiziellen Distribution enthaltenen Pakete freie Software sind, aber die Widevine CDM-Bibliotheken gehören nicht zu dieser Kategorie. Im Chrome-Referenz-Build ist jedoch ein binärer Blob verfügbar .


Es ist jedoch nicht besonders nützlich, ein solches Paket einzuschließen, ohne darauf zu verweisen, wie es verwendet werden soll. Ich habe einen Link hinzugefügt. /usr/lib/chromium# ln -s /opt/google/chrome/libwidevinecdm.so .Jetzt beschwert sich Prime Video nicht über das "Fehlen einer Komponente für digitale Rechte", aber es funktioniert auch nicht. Es wird der gleiche Fehler wie bei Google Chrome selbst angezeigt, das derzeit ebenfalls nicht funktioniert.
Faheem Mitha

@FaheemMitha Chrome funktioniert am wahrscheinlichsten. Haben Sie eine Idee, warum es Probleme geben könnte?
Fox

Hallo Fox. Nein, ich nicht. Es hat bis vor kurzem funktioniert. Aber ich denke, es gab kürzlich Upgrades.
Faheem Mitha

0

Ich habe ein unter Arch Linux gefundenes Skript aktualisiert, um widevine in Chrom herunterzuladen und zu installieren. Sie müssen nur den Pfad zum Chrom-Installationsverzeichnis aktualisieren. Der Hauptunterschied besteht darin, dass auch das im heruntergeladenen Archiv enthaltene Manifest installiert wird und auf diese Weise die Widevine-Version über chrome: // Komponenten in Chrom angezeigt werden kann. Hier ist es:

#!/bin/sh

# For ARM use this instead
# https://gist.github.com/ruario/19a28d98d29d34ec9b184c42e5f8bf29

available () {
  command -v "$1" >/dev/null 2>&1
}

# Make sure we have wget or curl
if available wget; then
  SILENT_DL="wget -qO-"
  LOUD_DL="wget"
elif available curl; then
  SILENT_DL="curl -s"
  LOUD_DL="curl -O"
else
  echo "Install wget or curl" >&2
  exit 1
fi

# Set Output dir
#WIDEVINE_DIR="${WIDEVINE_INSTALL_DIR:-/opt/google/chrome}"
#WIDEVINE_DIR="${WIDEVINE_INSTALL_DIR:-/usr/lib/chromium}"
WIDEVINE_DIR="${WIDEVINE_INSTALL_DIR:-/usr/lib/chromium-browser}"

# Use the architecture of the current machine or whatever the user has set
# externally
ARCH="${ARCH:-$(uname -m)}"
case "$ARCH" in
  x86_64) WIDEVINE_ARCH="x64" 
          WIDEVINE_INSTALL_DIR="$WIDEVINE_DIR/WidevineCdm/_platform_specific/linux_x64" ;;
    i?86) WIDEVINE_ARCH="ia32" 
          WIDEVINE_INSTALL_DIR="$WIDEVINE_DIR/WidevineCdm/_platform_specific/linux_x86" ;;
    arm*) echo "For ARM use https://gist.github.com/ruario/19a28d98d29d34ec9b184c42e5f8bf29 instead" >&2 ; exit 1 ;;
       *) echo "The architecture $ARCH is not supported." >&2 ; exit 1 ;;
esac

# Set temp dir
TMP="${TMP:-/tmp}"

# Set staging dir
STAGINGDIR="$TMP/widevine-staging"

# Work out the latest Widevine version
#WIDEVINE_VERSION="${WIDEVINE_VERSION:-$($SILENT_DL https://dl.google.com/widevine-cdm/current.txt)}"
WIDEVINE_VERSION="${WIDEVINE_VERSION:-$($SILENT_DL https://dl.google.com/widevine-cdm/versions.txt | tail -n1)}"
echo latest Version: $WIDEVINE_VERSION

# Error out if $CDMVERISON is unset, e.g. because previous command failed
if [ -z "$WIDEVINE_VERSION" ]; then
  echo "Could not work out the latest version; exiting" >&2
  exit 1
fi

# Find current installed version
INSTALLED_VERSION=$(grep '"version":' $WIDEVINE_DIR/WidevineCdm/manifest.json|cut -f4 -d'"')

# Don't start repackaging if the same version is already installed
if [ $WIDEVINE_VERSION = $INSTALLED_VERSION ]; then
  echo "The latest Widevine ($WIDEVINE_VERSION) is already installed"
  exit 0
fi

# If the staging directory is already present from the past, clear it down and
# re-create it.
if [ -d "$STAGINGDIR" ]; then
  rm -fr "$STAGINGDIR"
fi

# Stop on any error
set -eu

# Make and switch to the staging directory
mkdir -p "$STAGINGDIR"
cd "$STAGINGDIR"

# Now get the latest widevine zip for the users architecture
$LOUD_DL "https://dl.google.com/widevine-cdm/${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip"

# Extract the contents of Widevine package
if available unzip; then
  unzip "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" libwidevinecdm.so
  unzip "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" manifest.json 
elif available bsdtar; then
  bsdtar xf "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" libwidevinecdm.so
  bsdtar xf "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" manifest.json
else
  # The user's system has no obvious handler for Zip files. GZip can extract
  # the first entry from a Zip. If libwidevinecdm.so is the first entry, we
  # might just pull this off! ;)
  missing_extractor_error () {
    echo "Install InfoZip Unzip or BSD tar" >&2
    exit 1
  }
  # Look in first 50 bytes for libwidevinecdm.so as it'll be mentioned there
  # if it is the first entry in the zip
  if head -c50 "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" | grep -Fq libwidevinecdm.so; then
    # Hide the warning about multiple entries and ensure an exit code of 0
    gzip -d < "${WIDEVINE_VERSION}-linux-${WIDEVINE_ARCH}.zip" > libwidevinecdm.so 2> /dev/null ||:
    # Check that it looks like an executable
    if ! file libwidevinecdm.so | grep -Fq ELF; then
      missing_extractor_error
    fi
  else
    missing_extractor_error
  fi
fi

# Add version number file
#touch "widevine-$WIDEVINE_VERSION"
#SED_PAR="s/\"version\": \".*\"/\"version\": \"$WIDEVINE_VERSION\"/"
#if [ -e $WIDEVINE_DIR/WidevineCdm/manifest.json ]; then
#  sed $WIDEVINE_DIR/WidevineCdm/manifest.json -e "$SED_PAR" >$STAGINGDIR/manifest.json
#fi

# Escalate privileges if needed and copy files into place
#SED_PAR="s/\"version\": \".*\"/\"version\": \"$WIDEVINE_VERSION\"/"
if [ "$USER" = "root" ]; then
  install -Dm644 libwidevinecdm.so "$WIDEVINE_INSTALL_DIR/libwidevinecdm.so"
  if [ -e $STAGINGDIR/manifest.json ]; then
#     mv $WIDEVINE_DIR/WidevineCdm/manifest_neu.json $WIDEVINE_DIR/WidevineCdm/manifest.json
     install -Dm644 manifest.json "$WIDEVINE_DIR/WidevineCdm/manifest.json"
  fi
elif [ -r /etc/os-release ] && grep -qxE 'ID=((ubuntu)|(debiiian))' /etc/os-release; then
  echo "Calling sudo ... If prompted, please enter your password so Widevine can be copied into place"
  sudo  install -Dm644 libwidevinecdm.so "$WIDEVINE_INSTALL_DIR/libwidevinecdm.so"
  if [ -e "$WIDEVINE_INSTALL_DIR/libwidevinecdm.so" ]; then
    if [ -e $STAGINGDIR/manifest.json ]; then
      sudo install -Dm644 manifest.json "$WIDEVINE_DIR/WidevineCdm/manifest.json"
    fi
  else
    echo "Something went wrong installing libwidevinecdm.so" >&2
    exit 1
  fi
else
  echo "Please enter your root password so Widevine can be copied into place"
  su -c "sh -c \"install -Dm644 libwidevinecdm.so $WIDEVINE_INSTALL_DIR/libwidevinecdm.so && install -Dm644 manifest.json $WIDEVINE_DIR/WidevineCdm/manifest.json\""
fi

# Tell the user we are done
echo "Widevine ($WIDEVINE_VERSION) installed into $WIDEVINE_INSTALL_DIR/"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.