Arm64v8-debian-kiosk-mode-browser does not play mp4 files

I’ve been trying to play a video in mp4 format in torizon/arm64v8-debian-kiosk-mode-browser:latest, but the browser can’t play it. In logs there are such errors:

[254:13:0619/134628.182347:ERROR:batching_media_log.cc(26)] MediaEvent: MEDIA_ERROR_LOG_ENTRY {"error":"FFmpegDemuxer: no supported streams"}
[254:1:0619/134628.189686:ERROR:batching_media_log.cc(26)] MediaEvent: PIPELINE_ERROR DEMUXER_ERROR_NO_SUPPORTED_STREAMS

How to make the browser play the video? Or are there other supported browsers where it’s possible?

My docker-compose file

version: "2.4"
services:
  weston:
    image: torizon/arm64v8-debian-weston-vivante:latest
    network_mode: host
    environment:
      - ACCEPT_FSL_EULA=1
    volumes:
      - type: bind
        source: /tmp
        target: /tmp
      - type: bind  
        source: /run/udev
        target: /run/udev
      - type: bind
        source: /dev
        target: /dev
    cap_add:
      - CAP_SYS_TTY_CONFIG
    # Add device access rights through cgroup...
    device_cgroup_rules:
      # ... for tty0
      - 'c 4:0 rmw'
      # ... for tty7
      - 'c 4:7 rmw'
      # ... for /dev/input devices
      - 'c 13:* rmw'
      - 'c 199:* rmw'
      # ... for /dev/dri devices
      - 'c 226:* rmw'
      - 'c 81:* rmw'
  browser:
    image: torizon/arm64v8-debian-kiosk-mode-browser:latest
    security_opt:
      - seccomp:unconfined
    command: --browser-mode https://www.w3schools.com/html/mov_bbb.mp4
    shm_size: 256mb
    volumes:
      - /tmp:/tmp
      - /var/run/dbus:/var/run/dbus
      - type: bind
        source: /dev/dri
        target: /dev/dri
    depends_on:
      - weston

Console output

Creating torizon_weston_1 ... done
Creating torizon_browser_1 ... done
Attaching to torizon_weston_1, torizon_browser_1
weston_1   | NXP EULA has already been accepted.
weston_1   | Switching to VT 7
weston_1   | NXP EULA has already been accepted.
weston_1   | touch: cannot touch '/tmp/nxp-eula-accepted': Permission denied
weston_1   | Date: 2020-06-19 UTC
weston_1   | [13:46:22.275] weston 5.0.0
weston_1   |                https://wayland.freedesktop.org
weston_1   |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston_1   |                Build: unknown (not built from git or tarball)
weston_1   | [13:46:22.275] Command line: /usr/bin/weston --current-mode
weston_1   | [13:46:22.275] OS: Linux, 4.14.170-4.0.0-devel+git.fb6b17a22634, #1-TorizonCore SMP PREEMPT Mon May 11 14:38:24 UTC 2020, aarch64
weston_1   | [13:46:22.276] Using config file '/etc/xdg/weston/weston.ini'
weston_1   | [13:46:22.276] Output repaint window is 16 ms maximum.
weston_1   | [13:46:22.276] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/drm-backend.so'
weston_1   | [13:46:22.278] initializing drm backend
weston_1   | [13:46:22.282] using /dev/dri/card0
weston_1   | [13:46:22.282] DRM: supports universal planes
weston_1   | [13:46:22.282] DRM: supports atomic modesetting
weston_1   | [13:46:22.282] DRM: does not support picture aspect ratio
weston_1   | [13:46:22.283] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/gl-renderer.so'
weston_1   | [13:46:22.292] EGL client extensions: EGL_EXT_client_extensions
weston_1   |                EGL_EXT_platform_base EGL_KHR_platform_wayland
weston_1   |                EGL_EXT_platform_wayland EGL_KHR_platform_gbm
weston_1   | [13:46:22.297] warning: neither EGL_EXT_swap_buffers_with_damage or EGL_KHR_swap_buffers_with_damage is supported. Performance could be affected.
weston_1   | [13:46:22.297] EGL_KHR_surfaceless_context available
weston_1   | [13:46:22.302] EGL version: 1.5
weston_1   | [13:46:22.302] EGL vendor: Vivante Corporation
weston_1   | [13:46:22.302] EGL client APIs: OpenGL_ES
weston_1   | [13:46:22.303] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
weston_1   |                EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
weston_1   |                EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
weston_1   |                EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
weston_1   |                EGL_EXT_image_dma_buf_import
weston_1   |                EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
weston_1   |                EGL_KHR_create_context EGL_KHR_surfaceless_context
weston_1   |                EGL_EXT_buffer_age EGL_ANDROID_native_fence_sync
weston_1   |                EGL_WL_bind_wayland_display
weston_1   |                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
weston_1   | [13:46:22.303] GL version: OpenGL ES 3.2 V6.2.4.p4.190076
weston_1   | [13:46:22.303] GLSL version: OpenGL ES GLSL ES 3.20
weston_1   | [13:46:22.303] GL vendor: Vivante Corporation
weston_1   | [13:46:22.303] GL renderer: Vivante GC7000XSVX
weston_1   | [13:46:22.303] GL extensions: GL_OES_vertex_type_10_10_10_2
weston_1   |                GL_OES_vertex_half_float GL_OES_element_index_uint
weston_1   |                GL_OES_mapbuffer GL_OES_vertex_array_object
weston_1   |                GL_OES_compressed_ETC1_RGB8_texture
weston_1   |                GL_OES_compressed_paletted_texture GL_OES_texture_npot
weston_1   |                GL_OES_rgb8_rgba8 GL_OES_depth_texture
weston_1   |                GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
weston_1   |                GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
weston_1   |                GL_OES_get_program_binary GL_OES_fragment_precision_high
weston_1   |                GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_sync
weston_1   |                GL_OES_texture_stencil8 GL_OES_shader_image_atomic
weston_1   |                GL_OES_sample_variables GL_OES_sample_shading
weston_1   |                GL_OES_texture_storage_multisample_2d_array
weston_1   |                GL_OES_shader_multisample_interpolation
weston_1   |                GL_OES_required_internalformat GL_OES_surfaceless_context
weston_1   |                GL_OES_copy_image GL_OES_draw_buffers_indexed
weston_1   |                GL_OES_geometry_shader GL_OES_geometry_point_size
weston_1   |                GL_OES_gpu_shader5 GL_OES_shader_io_blocks
weston_1   |                GL_OES_texture_border_clamp GL_OES_texture_buffer
weston_1   |                GL_OES_tessellation_shader GL_OES_tessellation_point_size
weston_1   |                GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex
weston_1   |                GL_OES_texture_half_float GL_OES_texture_float
weston_1   |                GL_OES_primitive_bounding_box
weston_1   |                GL_KHR_texture_compression_astc_ldr
weston_1   |                GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness
weston_1   |                GL_EXT_texture_type_2_10_10_10_REV
weston_1   |                GL_EXT_texture_filter_anisotropic
weston_1   |                GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
weston_1   |                GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
weston_1   |                GL_EXT_multi_draw_arrays GL_EXT_frag_depth
weston_1   |                GL_EXT_discard_framebuffer GL_EXT_blend_minmax
weston_1   |                GL_EXT_multisampled_render_to_texture
weston_1   |                GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
weston_1   |                GL_EXT_robustness GL_EXT_texture_sRGB_decode
weston_1   |                GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
weston_1   |                GL_EXT_texture_buffer GL_EXT_tessellation_shader
weston_1   |                GL_EXT_tessellation_point_size GL_EXT_geometry_shader
weston_1   |                GL_EXT_geometry_point_size GL_EXT_copy_image
weston_1   |                GL_EXT_texture_cube_map_array GL_EXT_gpu_shader5
weston_1   |                GL_EXT_shader_io_blocks GL_EXT_shader_implicit_conversions
weston_1   |                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
weston_1   |                GL_EXT_texture_rg GL_EXT_primitive_bounding_box GL_EXT_sRGB
weston_1   |                GL_ANDROID_extension_pack_es31a GL_VIV_direct_texture
weston_1   | [13:46:22.303] GL ES 2 renderer features:
weston_1   |                read-back format: BGRA
weston_1   |                wl_shm sub-image to texture: yes
weston_1   |                EGL Wayland extension: yes
weston_1   | [13:46:22.313] event2  - LITEON Technology USB Multimedia Keyboard: is tagged by udev as: Keyboard
weston_1   | [13:46:22.313] event2  - LITEON Technology USB Multimedia Keyboard: device is a keyboard
weston_1   | [13:46:22.317] event1  - Logitech USB Optical Mouse: is tagged by udev as: Mouse
weston_1   | [13:46:22.317] event1  - Logitech USB Optical Mouse: device is a pointer
weston_1   | [13:46:22.318] event0  - sc-powerkey: is tagged by udev as: Keyboard
weston_1   | [13:46:22.318] event0  - sc-powerkey: device is a keyboard
weston_1   | [13:46:22.330] event3  - colibri-vf50-ts: is tagged by udev as: Touchscreen
weston_1   | [13:46:22.331] event3  - colibri-vf50-ts: device is a touch device
weston_1   | [13:46:22.345] Touchscreen - colibri-vf50-ts - /sys/devices/platform/vf50-touchscreen/input/input3/event3
weston_1   | [13:46:22.345] input device event3 has no enabled output associated (none named), skipping calibration for now.
weston_1   | [13:46:22.371] DRM: head 'HDMI-A-1' found, connector 146 is connected, EDID make 'PHL', model 'PHL 234E5', serial 'UHB142400574'
weston_1   | [13:46:22.371] Registered plugin API 'weston_drm_output_api_v1' of size 24
weston_1   | [13:46:22.380] Chosen EGL config details:
weston_1   |                RGBA bits: 8 8 8 0
weston_1   |                swap interval range: 1 - 60
weston_1   | [13:46:22.381] No backlight control for output 'HDMI-A-1'
weston_1   | [13:46:22.381] Output HDMI-A-1 (crtc 36) video modes:
weston_1   |                1920x1080@60.0, preferred, current, 148.5 MHz
weston_1   |                1920x1080@59.9, 148.4 MHz
weston_1   |                1920x1080@50.0, 148.5 MHz
weston_1   |                1680x1050@59.9, 119.0 MHz
weston_1   |                1280x1024@75.0, 135.0 MHz
weston_1   |                1280x1024@60.0, 108.0 MHz
weston_1   |                1440x900@75.0, 136.8 MHz
weston_1   |                1440x900@59.9, 88.8 MHz
weston_1   |                1280x720@60.0, 74.2 MHz
weston_1   |                1280x720@59.9, 74.2 MHz
weston_1   |                1280x720@50.0, 74.2 MHz
weston_1   |                1024x768@75.0, 78.8 MHz
weston_1   |                1024x768@60.0, 65.0 MHz
weston_1   |                800x600@75.0, 49.5 MHz
weston_1   |                800x600@60.3, 40.0 MHz
weston_1   |                720x576@50.0, 27.0 MHz
weston_1   |                720x480@60.0, 27.0 MHz
weston_1   |                720x480@59.9, 27.0 MHz
weston_1   |                640x480@75.0, 31.5 MHz
weston_1   |                640x480@72.8, 31.5 MHz
weston_1   |                640x480@66.7, 30.2 MHz
weston_1   |                640x480@60.0, 25.2 MHz
weston_1   |                640x480@59.9, 25.2 MHz
weston_1   |                720x400@70.1, 28.3 MHz
weston_1   | [13:46:22.381] associating input device event2 with output HDMI-A-1 (none by udev)
weston_1   | [13:46:22.381] associating input device event1 with output HDMI-A-1 (none by udev)
weston_1   | [13:46:22.381] associating input device event0 with output HDMI-A-1 (none by udev)
weston_1   | [13:46:22.381] associating input device event3 with output HDMI-A-1 (none by udev)
weston_1   | [13:46:22.382] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
weston_1   | [13:46:22.382] Compositor capabilities:
weston_1   |                arbitrary surface rotation: yes
weston_1   |                screen capture uses y-flip: yes
weston_1   |                presentation clock: CLOCK_MONOTONIC, id 1
weston_1   |                presentation clock resolution: 0.000000001 s
weston_1   | [13:46:22.382] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston_1   | [13:46:22.385] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston_1   | [13:46:22.392] Loading module '/usr/lib/aarch64-linux-gnu/libweston-5/xwayland.so'
weston_1   | [13:46:22.412] Registered plugin API 'weston_xwayland_v1' of size 32
weston_1   | [13:46:22.412] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston_1   | [13:46:22.412] xserver listening on display :0
weston_1   | [13:46:22.413] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-move'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-copy'
weston_1   | could not load cursor 'dnd-none'
weston_1   | could not load cursor 'dnd-none'
weston_1   | [13:46:25.273] Spawned Xwayland server, pid 26
weston_1   | glamor: 'wl_drm' not supported
weston_1   | Missing Wayland requirements for glamor GBM backend
weston_1   | Failed to initialize glamor, falling back to sw
weston_1   | [13:46:25.570] xfixes version: 5.0
weston_1   | [13:46:25.631] created wm, root 908
browser_1  | [1:34:0619/134626.229604:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [1:219:0619/134626.770164:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
browser_1  | [1:224:0619/134626.859827:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [1:224:0619/134626.860406:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [1:224:0619/134626.860891:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [1:224:0619/134626.861313:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [1:224:0619/134626.861695:ERROR:bus.cc(393)] Failed to connect to the bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
browser_1  | [45:45:0619/134627.221535:ERROR:sandbox_linux.cc(369)] InitializeSandbox() called with multiple threads in process gpu-process.
browser_1  | [254:13:0619/134628.182347:ERROR:batching_media_log.cc(26)] MediaEvent: MEDIA_ERROR_LOG_ENTRY {"error":"FFmpegDemuxer: no supported streams"}
browser_1  | [254:1:0619/134628.189686:ERROR:batching_media_log.cc(26)] MediaEvent: PIPELINE_ERROR DEMUXER_ERROR_NO_SUPPORTED_STREAMS

Greetings @AlexeyZ,

I’m still investigating the issue here. However just to let you know video-acceleration in the browser isn’t quite supported yet so any video playback you do get will not be the best performance. Will this matter for your system?

Best Regards,
Jeremias

Hello @jeremias.tx

I came up to an idea that in my case it’s much easier to convert mp4 videos into videos in a supported format. I have done research, it seems mp4 video format support can be achieved by building Chromium with special arguments that activate required codecs. I tried to find details and settings of torizon/arm64v8-debian-kiosk-mode-browser, but found just a few things, so I thought that there may be some ways to configure it for my need. I will convert my videos, in my case it will be enough.

Jeremias, thank you very much!

Best Regards,
Alexey

That is interesting information, thank you for sharing your findings it will definitely help us in the future as we continue to mature our browser tools.

Best Regards,
Jeremias