Menggunakan paket Debian chromium-widevine

10

Setidaknya Debian 9 (peregangan), Debian berisi paket contrib chromium-widevine. Deskripsi paket ini adalah:

Paket ini memberikan dukungan untuk modul dekripsi konten widevine.

Namun, setelah menginstal paket ini, saya tidak dapat menemukan tanda bahwa Chromium mengenali atau sedang memuat plugin ini. Lokasi Widevine dalam paket ini adalah /usr/lib/chromium/libwidevinecdmadapter.so.

Penggunaan saya saat ini untuk paket ini adalah memutar Amazon Prime Video di Chromium. Saat ini saya mendapatkan kesalahan:

Peramban web Anda kehilangan komponen hak digital. Buka chrome: // komponen dan di bawah WidevineCdm, klik Periksa pembaruan.

chrome: // komponen tidak mencantumkan WidevineCdm di bawah Chromium.

Untuk tambahan aneh, saya mendapatkan:

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)

Jadi libwidevinecdm.sotidak ada keputusan?

Tahu apa yang harus saya lakukan di sini? Tidak chromium-widevinememiliki dokumentasi atau indikasi bagaimana seseorang seharusnya melanjutkan.

CATATAN: Pertanyaan ini sudah usang, setidaknya pada Debian 10 / buster, karena paket chromium-widevine tidak ada lagi.

Faheem Mitha
sumber
jika tidak ada dokumentasi dalam paket, maka ajukan laporan bug yang menyatakan itu. IMO itu setidaknya bug tingkat keparahan "penting" (atau bahkan "kuburan") .
cas

Jawaban:

9

Saya tidak beruntung menggunakan netflix dengan chromium-widevinepada debian 9.3 dari contrib repo. Apa yang saya lakukan adalah:

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
a_z
sumber
Supaya jelas, apakah resep ini bekerja untuk Anda?
Faheem Mitha
1
ya, menonton netflix di debian 9.3 di chromium sekarang :)
a_z
Terima kasih atas konfirmasinya. Saya akan mencoba pendekatan ini. Meskipun saya bertanya-tanya mengapa paket Debian tidak berfungsi.
Faheem Mitha
1
@FaheemMitha Seseorang melakukan bugs.debian.org/cgi-bin/bugreport.cgi?bug=921738
Braiam
3
Saya baru saja mencoba ini pada Mint 19.2. dengan Chromium 76, dan sayangnya tidak berhasil.
Bernd Wechner
0

Debian menyatakan bahwa semua paket yang termasuk dalam distribusi resmi adalah perangkat lunak bebas, tetapi pustaka CDM Widevine tidak dalam kategori ini. Ada gumpalan biner yang tersedia di rujukan referensi Chrome .

Rubah
sumber
Ini tidak terlalu berguna termasuk paket seperti itu tanpa referensi bagaimana seharusnya digunakan. Saya menambahkan tautan /usr/lib/chromium# ln -s /opt/google/chrome/libwidevinecdm.so .Now Prime Video tidak mengeluh tentang "kehilangan komponen hak digital", tetapi tidak berhasil juga. Ini mendapatkan kesalahan yang sama seperti Google Chrome itu sendiri, yang saat ini tidak berfungsi.
Faheem Mitha
@FaheemMitha Chrome lebih memungkinkan keduanya bekerja. Apakah Anda tahu mengapa mungkin ada masalah?
Fox
Hai Fox. Tidak, saya tidak. Itu bekerja hingga saat ini. Tapi saya pikir ada peningkatan terbaru.
Faheem Mitha
0

Saya telah memperbarui skrip yang ditemukan di Arch Linux untuk mengunduh dan menginstal widevine di chromium. Anda hanya perlu memperbarui jalur ke direktori pemasangan kromium. Perbedaan utama adalah bahwa ia juga akan menginstal manifes yang termasuk dalam arsip yang diunduh dan dengan cara ini dapat menampilkan versi widevine melalui chrome: // komponen dalam kromium. Ini dia:

#!/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/"
trupf
sumber