Sử dụng gói Debian crom-widevine


10

Kể từ ít nhất Debian 9 (kéo dài), Debian chứa gói contrib chromium-widevine. Mô tả của gói này là:

Gói này cung cấp hỗ trợ cho mô-đun giải mã nội dung rộng.

Tuy nhiên, sau khi cài đặt gói này, tôi không thể tìm thấy bất kỳ dấu hiệu nào mà Chromium nhận ra hoặc đang tải plugin này. Vị trí của Widevine trong gói này là /usr/lib/chromium/libwidevinecdmadapter.so.

Công dụng hiện tại của tôi cho gói này là phát Amazon Prime Video trên Chromium. Hiện tại tôi đang nhận được lỗi:

Trình duyệt web của bạn đang thiếu một thành phần quyền kỹ thuật số. Chuyển đến chrome: // thành phần và bên dưới WidevineCdm, nhấp Kiểm tra cập nhật.

chrome: // các thành phần không liệt kê WidevineCdm trong Chromium.

Để thêm kỳ lạ, tôi nhận được:

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)

Vậy libwidevinecdm.sogiải quyết thế nào?

Có ai biết tôi phải làm gì ở đây không? Không chromium-widevinecó tài liệu hoặc chỉ dẫn làm thế nào một người được cho là tiến hành.

LƯU Ý: Câu hỏi này đã hết hạn, ít nhất là từ Debian 10 / buster, vì gói crom-widevine không còn tồn tại.


nếu không có tài liệu trong gói, thì hãy báo cáo lỗi cho biết điều đó. IMO ít nhất là một mức độ nghiêm trọng "quan trọng" (hoặc thậm chí là "nghiêm trọng") .
cas

Câu trả lời:


9

Tôi đã không gặp may khi sử dụng netflix với chromium-widevinedebian 9.3 từ reprib contrib. Những gì tôi đã làm là:

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

Chỉ cần rõ ràng, công thức này đã làm việc cho bạn?
Faheem Mitha

1
vâng, xem netflix trên debian 9.3 trên chromium ngay bây giờ :)
a_z

Cảm ơn bạn đã xác nhận. Tôi sẽ thử phương pháp này. Mặc dù tôi tự hỏi tại sao gói Debian không hoạt động.
Faheem Mitha

1
@FaheemMitha Ai đó đã làm bug.debian.org/cgi-bin/orpreport.cgi?orms=921738
Braiam

3
Tôi mới thử cái này trên Mint 19.2. với Chromium 76 và không hoạt động được.
Bernd Wechner

0

Debian nói rằng tất cả các gói có trong bản phân phối chính thức là phần mềm miễn phí, nhưng các thư viện CDM của Widevine không nằm trong danh mục này. Có một blob nhị phân có sẵn trong bản dựng tham chiếu Chrome .


Mặc dù vậy, nó không hữu ích lắm kể cả một gói như vậy mà không có tài liệu tham khảo về cách sử dụng nó. Tôi đã thêm một liên kết /usr/lib/chromium# ln -s /opt/google/chrome/libwidevinecdm.so .Bây giờ Prime Video không phàn nàn về việc "thiếu một thành phần quyền kỹ thuật số", nhưng nó cũng không hoạt động. Nó cũng gặp lỗi tương tự như Google Chrome, hiện không hoạt động.
Faheem Mitha

@FaheemMitha Chrome có nhiều khả năng hoạt động của cả hai. Bạn có biết tại sao nó có thể có vấn đề?
Cáo

Chào Fox. Không, tôi không. Nó đã làm việc cho đến gần đây. Nhưng tôi nghĩ rằng đã có những nâng cấp gần đây.
Faheem Mitha

0

Tôi đã cập nhật một tập lệnh được tìm thấy trên Arch Linux để tải xuống và cài đặt widevine bằng crom. Bạn chỉ cần cập nhật đường dẫn đến thư mục cài đặt chromium. Sự khác biệt chính là nó cũng sẽ cài đặt bảng kê khai có trong kho lưu trữ được tải xuống và cách này có thể hiển thị phiên bản widevine thông qua các thành phần chrome: // trong crom. Đây là:

#!/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/"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.