PINE64
Netflix, state of the art? - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=111)
+--- Forum: Linux on Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=114)
+--- Thread: Netflix, state of the art? (/showthread.php?tid=9680)

Pages: 1 2 3 4 5 6 7 8 9


RE: Netflix, state of the art? - PakoSt - 04-23-2020

I'm not that good with setting those ids and groups either.
Using sudo with podman required pretty much no changes to run for me as well, @appelgriebsch

Hmm, so apart from the font errors, these 3 ought to be the responsible ones for the dropped frames with the initial version:
Code:
...
...
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
libEGL warning: DRI2: failed to open rockchip (search paths /usr/lib/arm-linux/gnueabinf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
...
...


Thing is Manjaro (and pretty much every distro using mainline-ish kernels) aren't using the rockchip kernel drivers and I can already see a few changes to mesa with your newest commit , @hthiemann .
I wonder if we can switch to debian testing or even unstable within the container to use the latest available mesa package as an experiment.


Update: Well, there is an image tag for debian unstable Smile


RE: Netflix, state of the art? - PakoSt - 04-24-2020

Wow, that's a difference Smile  I'm not even using any of the chromium flags either - sure there are dropped frames but it's going well enough at 1080p for casual video playback at full screen.

@hthiemann , try with unstable:

Code:
FROM docker.io/arm32v7/debian:unstable  
MAINTAINER Henning Thiemann <henning.thiemann@gmail.com>
 
# Install dependencies
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
  git fontconfig fontconfig-config fonts-dejavu-core gconf-service gconf2-common \
  libasn1-8-heimdal libasound2 libasound2-data libatk1.0-0 libatk1.0-data libavahi-client3 libavahi-common-data \
  libavahi-common3 libcairo2 libcups2 libdatrie1 libdbus-1-3 libdbus-glib-1-2 libexpat1 libfontconfig1 \
  libfreetype6 libgconf-2-4 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgmp10 \
  libgnutls30 libgraphite2-3 libgssapi-krb5-2 libgssapi3-heimdal libgtk2.0-0 \
  libgtk2.0-common libharfbuzz0b libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 \
  libhx509-5-heimdal libjbig0 libk5crypto3 libkeyutils1 \
  libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libnettle6 libnspr4 libnss3 \
  libp11-kit0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpng16-16 libroken18-heimdal \
  libsasl2-2 libsasl2-modules-db libsqlite3-0 libtasn1-6 libthai-data libthai0 libtiff5 libwind0-heimdal libx11-6 \
  libx11-data libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 \
  libxext6 libxfixes3 libxi6 libxinerama1 libxml2 libxrandr2 libxrender1 libxss1 libxtst6 shared-mime-info ucf \
  x11-common xdg-utils libpulse0 pulseaudio-utils wget libatk-bridge2.0-0 libatspi2.0-0 libgtk-3-0 \
  mesa-va-drivers mesa-vdpau-drivers mesa-utils libosmesa6 libegl1-mesa libwayland-egl1-mesa libgl1-mesa-dri
# Adding Mesa. Should need improvements - not sure what the debian packages are including by default (thinking panfrost)
# Consulting with users of the Unofficial Debian installer for the PBP would be preferable.

 
# Add chromium dependencies
ADD dependencies/chromium-browser_78.0.3904.97-0ubuntu0.16.04.1_armhf.deb chromium-browser.deb
ADD dependencies/chromium-codecs-ffmpeg-extra_78.0.3904.97-0ubuntu0.16.04.1_armhf.deb chromium-codecs.deb
RUN echo "Updating Chromium..." && dpkg -i chromium-codecs.deb && dpkg -i chromium-browser.deb
 
# Add settings
ADD chromium-settings /etc/chromium-browser/default
 
# Install Widevine
ADD widevine/libwidevinecdm.so /usr/lib/chromium-browser
ADD widevine/PepperFlash /usr/lib/chromium-browser/pepper
 
# Copy Pulseaudio config
COPY pulse-client.conf /etc/pulse/client.conf
 
# Set up the user
ENV UNAME mediaguy
RUN export UNAME=$UNAME UID=1000 GID=1000 && \
    mkdir -p "/home/${UNAME}" && \
    echo "${UNAME}:x:${UID}:${GID}:${UNAME} User,,,:/home/${UNAME}:/bin/bash" >> /etc/passwd && \
    echo "${UNAME}:x:${UID}:" >> /etc/group && \
    mkdir -p /etc/sudoers.d && \
    echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${UNAME} && \
    chmod 0440 /etc/sudoers.d/${UNAME} && \
    chown ${UID}:${GID} -R /home/${UNAME} && \
    gpasswd -a ${UNAME} audio
USER $UNAME
ENV HOME /home/${UNAME}
 
CMD ["/usr/bin/chromium-browser", "--user-agent='Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'"]
 


Update: Here is a comparison with the original Dockerfile that was using rockchip mesa and the one I posted above:
- Original Dockerfile using rockchip: https://drive.google.com/file/d/1gqC2UtnjFgDhYxbkE0FdiYZ8DIg4p-U5/view?usp=drivesdk
- Dockerfile using debian unstable from above: https://drive.google.com/file/d/1gmqo0AXGl6YqmP7BxjvXFncfCcfMbgnA/view?usp=drivesdk

Removing the chromium flags file could be good as well - my chromium settings is empty.


RE: Netflix, state of the art? - hthiemann - 04-24-2020

(04-24-2020, 02:29 AM)PakoSt Wrote: Wow, that's a difference Smile  I'm not even using any of the chromium flags either - sure there are dropped frames but it's going well enough at 1080p for casual video playback at full screen.

@hthiemann , try with unstable:

Code:
FROM docker.io/arm32v7/debian:unstable  
MAINTAINER Henning Thiemann <henning.thiemann@gmail.com>
 
# Install dependencies
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
  git fontconfig fontconfig-config fonts-dejavu-core gconf-service gconf2-common \
  libasn1-8-heimdal libasound2 libasound2-data libatk1.0-0 libatk1.0-data libavahi-client3 libavahi-common-data \
  libavahi-common3 libcairo2 libcups2 libdatrie1 libdbus-1-3 libdbus-glib-1-2 libexpat1 libfontconfig1 \
  libfreetype6 libgconf-2-4 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgmp10 \
  libgnutls30 libgraphite2-3 libgssapi-krb5-2 libgssapi3-heimdal libgtk2.0-0 \
  libgtk2.0-common libharfbuzz0b libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 \
  libhx509-5-heimdal libjbig0 libk5crypto3 libkeyutils1 \
  libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libnettle6 libnspr4 libnss3 \
  libp11-kit0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpng16-16 libroken18-heimdal \
  libsasl2-2 libsasl2-modules-db libsqlite3-0 libtasn1-6 libthai-data libthai0 libtiff5 libwind0-heimdal libx11-6 \
  libx11-data libxau6 libxcb-render0 libxcb-shm0 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 \
  libxext6 libxfixes3 libxi6 libxinerama1 libxml2 libxrandr2 libxrender1 libxss1 libxtst6 shared-mime-info ucf \
  x11-common xdg-utils libpulse0 pulseaudio-utils wget libatk-bridge2.0-0 libatspi2.0-0 libgtk-3-0 \
  mesa-va-drivers mesa-vdpau-drivers mesa-utils libosmesa6 libegl1-mesa libwayland-egl1-mesa libgl1-mesa-dri
# Adding Mesa. Should need improvements - not sure what the debian packages are including by default (thinking panfrost)
# Consulting with users of the Unofficial Debian installer for the PBP would be preferable.

 
# Add chromium dependencies
ADD dependencies/chromium-browser_78.0.3904.97-0ubuntu0.16.04.1_armhf.deb chromium-browser.deb
ADD dependencies/chromium-codecs-ffmpeg-extra_78.0.3904.97-0ubuntu0.16.04.1_armhf.deb chromium-codecs.deb
RUN echo "Updating Chromium..." && dpkg -i chromium-codecs.deb && dpkg -i chromium-browser.deb
 
# Add settings
ADD chromium-settings /etc/chromium-browser/default
 
# Install Widevine
ADD widevine/libwidevinecdm.so /usr/lib/chromium-browser
ADD widevine/PepperFlash /usr/lib/chromium-browser/pepper
 
# Copy Pulseaudio config
COPY pulse-client.conf /etc/pulse/client.conf
 
# Set up the user
ENV UNAME mediaguy
RUN export UNAME=$UNAME UID=1000 GID=1000 && \
    mkdir -p "/home/${UNAME}" && \
    echo "${UNAME}:x:${UID}:${GID}:${UNAME} User,,,:/home/${UNAME}:/bin/bash" >> /etc/passwd && \
    echo "${UNAME}:x:${UID}:" >> /etc/group && \
    mkdir -p /etc/sudoers.d && \
    echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${UNAME} && \
    chmod 0440 /etc/sudoers.d/${UNAME} && \
    chown ${UID}:${GID} -R /home/${UNAME} && \
    gpasswd -a ${UNAME} audio
USER $UNAME
ENV HOME /home/${UNAME}
 
CMD ["/usr/bin/chromium-browser", "--user-agent='Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'"]
 


Update: Here is a comparison with the original Dockerfile that was using rockchip mesa and the one I posted above:
- Original Dockerfile using rockchip: https://drive.google.com/file/d/1gqC2UtnjFgDhYxbkE0FdiYZ8DIg4p-U5/view?usp=drivesdk
- Dockerfile using debian unstable from above: https://drive.google.com/file/d/1gmqo0AXGl6YqmP7BxjvXFncfCcfMbgnA/view?usp=drivesdk

Removing the chromium flags file could be good as well - my chromium settings is empty.
That's amazing, thank you very much for your investigation.

I will try it later today and create an updated image if it is working as expected.


RE: Netflix, state of the art? - PakoSt - 04-24-2020

Great work @hthiemann !

I'm doing some silly experiments with the flags atm. I got the silly idea to alter them and try to get Chromium to force touch ui and request mobile view Big Grin


RE: Netflix, state of the art? - spikerguy - 04-24-2020

Just tested the docker image with debian unstable and it works quite well on full screen mode. While testing I ended up watching a whole movie on Netflix Big Grin

I would like to know if I can package it with a desktop icon for normal users to just install the package which will run all the commands inside post_install and use chromium as a normal browser for Widevine platforms.

@hthiemann  Can I re-use the git content inside the package ?

Thanks for such an amazing work.


RE: Netflix, state of the art? - hthiemann - 04-25-2020

(04-24-2020, 03:26 PM)spikerguy Wrote: Just tested the docker image with debian unstable and it works quite well on full screen mode. While testing I ended up watching a whole movie on Netflix Big Grin

I would like to know if I can package it with a desktop icon for normal users to just install the package which will run all the commands inside post_install and use chromium as a normal browser for Widevine platforms.

@hthiemann  Can I re-use the git content inside the package ?

Thanks for such an amazing work.

@spikerguy feel free to use it. Would be great to have a packaged application for it!


RE: Netflix, state of the art? - gleachkr - 04-25-2020

Not sure if this is the right forum, but I wonder how this works on the pine(phone|tab)?


RE: Netflix, state of the art? - PakoSt - 04-25-2020

Quote:@gleachkr : Not sure if this is the right forum, but I wonder how this works on the pine(phone|tab)?


It should - after all it's just chromium running inside a container that's not specifically tied to the PBP really.



There will be a few "gotch'a" moments:
- It will run in desktop mode (I expected more when I tried to start chromium with the tablet or top-touch-ui flags - could be expected as ChromeOS has tighter integration there)
- It will request the desktop websites -> for the DRM to work, it is using a specific useragent from ChromeOS which is in desktop mode (changing the user agent breaks the DRM).
- The last line of the Dockerfile sets up the user agent and you won't be able to use the Settings page of Chromium (same as mrfixit's Debian image). Maybe someone knows how to enable a "safe" launch command for the container?
- I'm not sure if it would run in purely Wayland setup (though at least Plasma-mobile/ Phosh should be using Xwayland by default, not sure about UBports tbh) -> the PBP or PP will be viewing remotely the X session with Chromium inside the container


There can be a few more pieces that would throw a tantrum (like the kernel not having virtualization flags or something similar)


RE: Netflix, state of the art? - PakoSt - 04-26-2020

Thanks to @spikerguy for checking Amazon Prime - at the moment, it won't be played with an error for outdated browser version.

This is interesting and related - the widevine fetch script explicitly outlines Chromium v79+ as untested. This could be part of the explanation as to why I can't just replace the browser version (if I try to build the docker container with chromium v80, it doesn't load the drm).
I can't recall where I saw that there were changes with v80 about loading the drm.

Maybe later today I will be trying with Vivaldi instead of Chromium.


RE: Netflix, state of the art? - spikerguy - 04-26-2020

(04-26-2020, 04:13 AM)PakoSt Wrote: Thanks to @spikerguy for checking Amazon Prime - at the moment, it won't be played with an error for outdated browser version.

This is interesting and related - the widevine fetch script explicitly outlines Chromium v79+ as untested. This could be part of the explanation as to why I can't just replace the browser version (if I try to build the docker container with chromium v80, it doesn't load the drm).
I can't recall where I saw that there were changes with v80 about loading the drm.

Maybe later today I will be trying with Vivaldi instead of Chromium.

Hey,
It would be better if you can fetch the libwidevine.so from this package. But you will have to build it first

PKGBUILD Here.

Try which ever is eaiser for you