การใช้แพ็คเกจ Debian chromium-widevine


10

ในฐานะที่เป็นอย่างน้อย Debian 9 (ยืด), chromium-widevineเดมีแพคเกจ คำอธิบายของแพ็คเกจนี้คือ:

แพคเกจนี้ให้การสนับสนุนโมดูลถอดรหัสเนื้อหาแบบกว้าง

อย่างไรก็ตามหลังจากติดตั้งแพคเกจนี้ฉันไม่สามารถหาสัญญาณใด ๆ ที่ Chromium รู้จักหรือกำลังโหลดปลั๊กอินนี้ สถานที่ตั้งของ Widevine /usr/lib/chromium/libwidevinecdmadapter.soในแพคเกจนี้คือ

การใช้งานปัจจุบันของฉันสำหรับแพ็คเกจนี้คือการเล่น Amazon Prime Video บน Chromium ขณะนี้ฉันได้รับข้อผิดพลาด:

เว็บเบราว์เซอร์ของคุณไม่มีองค์ประกอบของสิทธิ์ดิจิทัล ไปที่ chrome: // components และภายใต้ WidevineCdm คลิก Check for update

chrome: // components ไม่แสดงรายการ WidevineCdm ภายใต้ Chromium

สำหรับแปลกพิเศษฉันได้รับ:

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)

ดังนั้นlibwidevinecdm.soแก้ไขอะไร?

มีความคิดอะไรที่ฉันควรจะทำที่นี่? chromium-widevineไม่มีเอกสารหรือข้อบ่งชี้วิธีการหนึ่งที่ควรจะดำเนินการต่อไป

หมายเหตุ: คำถามนี้ล้าสมัยอย่างน้อยเป็นของ Debian 10 / บัสเตอร์เนื่องจากไม่มีแพ็คเกจโครเมียม - วิเวียน


หากไม่มีเอกสารในแพ็คเกจให้รายงานข้อผิดพลาดระบุว่า IMO ที่เป็นข้อบกพร่องระดับความรุนแรง "สำคัญ" (หรืออาจแม้แต่ "หลุมฝังศพ")
cas

คำตอบ:


9

ฉันโชคไม่ดีที่ใช้ netflix กับchromium-widevinedebian 9.3 จาก contrib repo สิ่งที่ฉันทำคือ:

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

เพื่อให้ชัดเจนสูตรนี้เหมาะกับคุณหรือไม่
Faheem Mitha

1
ใช่ดู netflix บน debian 9.3 บนโครเมียมในตอนนี้ :)
a_z

ขอบคุณสำหรับการยืนยัน. ฉันจะลองวิธีนี้ แม้ว่าฉันจะสงสัยว่าทำไมแพ็คเกจ Debian ไม่ทำงาน
Faheem Mitha

1
@FaheemMitha มีคนทำbugs.debian.org/cgi-bin/bugreport.cgi?bug=921738
Braiam

3
ฉันเพิ่งลองสิ่งนี้ใน Mint 19.2 ด้วย Chromium 76 และใช้งานไม่ได้
Bernd Wechner

0

Debian ระบุว่าแพคเกจทั้งหมดที่รวมอยู่ในการแจกจ่ายอย่างเป็นทางการเป็นซอฟต์แวร์ฟรี แต่ไลบรารี Widevine CDM ไม่ได้อยู่ในหมวดหมู่นี้ มีหยดไบนารีที่มีอยู่ในคือการสร้างการอ้างอิง Chromeแม้ว่า


มันไม่มีประโยชน์มากนักรวมถึงแพ็คเกจที่ไม่มีการอ้างอิงว่าควรใช้อย่างไร ฉันได้เพิ่มลิงค์/usr/lib/chromium# ln -s /opt/google/chrome/libwidevinecdm.so .ตอนนี้ Prime Video ไม่ได้บ่นว่า "ขาดองค์ประกอบด้านสิทธิ์ดิจิทัล" แต่ก็ไม่ได้ผลเช่นกัน มันได้รับข้อผิดพลาดเดียวกันกับ Google Chrome ซึ่งไม่ได้ทำงานอย่างใดอย่างหนึ่งในขณะนี้
Faheem Mitha

@FaheemMitha Chrome มีแนวโน้มที่ทั้งสองจะทำงานได้ดีขึ้น คุณมีความคิดใด ๆ ว่าทำไมมันถึงมีปัญหา?
สุนัขจิ้งจอก

สวัสดีสุนัขจิ้งจอก ไม่ฉันทำไม่ได้ มันทำงานจนกระทั่งเมื่อไม่นานมานี้ แต่ฉันคิดว่ามีการอัปเกรดล่าสุด
Faheem Mitha

0

ฉันได้อัพเดตสคริปต์ที่พบใน Arch Linux เพื่อดาวน์โหลดและติดตั้ง widevine ใน chromium คุณเพียงแค่ต้องอัปเดตพา ธ ไปยังไดเรกทอรีการติดตั้ง Chromium ความแตกต่างที่สำคัญคือมันจะติดตั้งไฟล์ Manifest ที่รวมอยู่ในไฟล์เก็บถาวรที่ดาวน์โหลดมาด้วยวิธีนี้สามารถแสดงเวอร์ชั่นของวิเวียนผ่านโครเมียม: // ส่วนประกอบในโครเมียม นี่มันคือ:

#!/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/"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.