I have a fresh install of Ubuntu 19.04 and I am unable to play a MP4 video in Totem. Following the suggestion to install the necessary decoder was unsuccessful. Which codecs must I install to play this video file, which uses a H.264 (High Profile) video codec and a MPEG-4 AAC audio codec?
During the install I checked the box to install third-party graphics software and additional media formats:
I have the main, universe, restricted, and multiverse repositories enabled.
I have multiple gstreamer packages and codecs installed already:
tom@desktop:~$ apt list --installed | grep gstreamer
gir1.2-gstreamer-1.0/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-alsa/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-clutter-3.0/disco,now 3.0.27-1 amd64 [installed,automatic]
gstreamer1.0-gl/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-gtk3/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-libav/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-packagekit/disco,now 1.1.12-5 amd64 [installed,automatic]
gstreamer1.0-plugins-bad/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-plugins-base-apps/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-plugins-base/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-plugins-good/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-plugins-ugly/disco,now 1.15.90-1 amd64 [installed,automatic]
gstreamer1.0-pulseaudio/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-tools/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-vaapi/disco-updates,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-x/disco,now 1.15.90-1 amd64 [installed,automatic]
libgstreamer-gl1.0-0/disco,now 1.15.90-1 amd64 [installed,automatic]
libgstreamer-plugins-bad1.0-0/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
libgstreamer-plugins-base1.0-0/disco,now 1.15.90-1 amd64 [installed,automatic]
libgstreamer-plugins-good1.0-0/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
libgstreamer1.0-0/disco,now 1.15.90-1ubuntu1 amd64 [installed,automatic]
libreoffice-avmedia-backend-gstreamer/disco-updates,disco-security,now 1:6.2.5-0ubuntu0.19.04.1 amd64 [installed,automatic]
I have Totem installed, with the default packages and plugins:
tom@desktop:~$ apt list --installed | grep totem
gir1.2-totem-1.0/disco,now 3.32.0-1ubuntu1 amd64 [installed,automatic]
gir1.2-totemplparser-1.0/disco,now 3.26.3-1ubuntu1 amd64 [installed,automatic]
libtotem-plparser-common/disco,disco,now 3.26.3-1ubuntu1 all [installed,automatic]
libtotem-plparser18/disco,now 3.26.3-1ubuntu1 amd64 [installed,automatic]
libtotem0/disco,now 3.32.0-1ubuntu1 amd64 [installed,automatic]
totem-common/disco,disco,now 3.32.0-1ubuntu1 all [installed,automatic]
totem-plugins/disco,now 3.32.0-1ubuntu1 amd64 [installed,automatic]
totem/disco,now 3.32.0-1ubuntu1 amd64 [installed,automatic]
I am not installing ubuntu-restricted-extras
because I do not want the extra packages (Microsoft fonts, etc...) but I have manually installed the AV codecs (libavcodec-extra
libavcodec-extra58
) which are included with it:
tom@desktop:~$ apt-cache depends ubuntu-restricted-extras
ubuntu-restricted-extras
Depends: ubuntu-restricted-addons
Recommends: libavcodec-extra
libavcodec-extra58
Recommends: ttf-mscorefonts-installer
Recommends: unrar
I note I can play back the video file no problem by dragging it from Nautilus into an empty Firefox or Chromium tab, but Totem will not play it.
When I click the "Find in Ubuntu Software" button, Ubuntu Software displays the message "Unable to Find Requested Software" (This last bit is probably a bug but I don't mind, I just need to know which packages to manually install). Any suggestions please? How do I play this file in Totem on a fresh 19.04 install?
Edit: Upon further troubleshooting, I have discovered that Totem will play the same files if they are in MKV container format instead of MP4. I use youtube-dl
(latest version, not from the repos) to download BBC iPlayer videos. I can set the --merge-output-format mkv
option and play the downloaded file. Without that option it outputs to an MP4 which I cannot play. This is an OK workaround, but I'd love to know what exactly is interfering with MP4 playback and fix that.
If you are in an area served by iPlayer and wish to test, I used this short three-minute video https://www.bbc.co.uk/iplayer/episode/p07hlmxr/the-news-explained-a-tale-of-two-tankers
which downloads the files The_News_Explained_A_Tale_of_Two_Tankers.fstream-uk-iptv_streaming_concrete_combined_hd_mf_limelight_uk_dash_https-video=5070000.mp4
and The_News_Explained_A_Tale_of_Two_Tankers.fstream-uk-iptv_streaming_concrete_combined_hd_mf_limelight_uk_dash_https-audio_eng_1=128000.m4a
, then merges them into MP4 or MKV.
Output of vainfo
command (from comments):
error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nouveau_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Mesa Gallium driver 19.0.2 for NV136
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
Output of vdpauinfo
command (from comments):
display: :0 screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0
Video surface:
name width height types
-------------------------------------------
420 16384 16384 NV12 YV12
422 16384 16384 UYVY YUYV
444 16384 16384 Y8U8V8A8 V8U8Y8A8
Decoder capabilities:
name level macbs width height
----------------------------------------------------
MPEG1 --- not supported ---
MPEG2_SIMPLE --- not supported ---
MPEG2_MAIN --- not supported ---
H264_BASELINE --- not supported ---
H264_MAIN --- not supported ---
H264_HIGH --- not supported ---
VC1_SIMPLE --- not supported ---
VC1_MAIN --- not supported ---
VC1_ADVANCED --- not supported ---
MPEG4_PART2_SP --- not supported ---
MPEG4_PART2_ASP --- not supported ---
DIVX4_QMOBILE --- not supported ---
DIVX4_MOBILE --- not supported ---
DIVX4_HOME_THEATER --- not supported ---
DIVX4_HD_1080P --- not supported ---
DIVX5_QMOBILE --- not supported ---
DIVX5_MOBILE --- not supported ---
DIVX5_HOME_THEATER --- not supported ---
DIVX5_HD_1080P --- not supported ---
H264_CONSTRAINED_BASELINE --- not supported ---
H264_EXTENDED --- not supported ---
H264_PROGRESSIVE_HIGH --- not supported ---
H264_CONSTRAINED_HIGH --- not supported ---
H264_HIGH_444_PREDICTIVE --- not supported ---
HEVC_MAIN --- not supported ---
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---
Output surface:
name width height nat types
----------------------------------------------------
B8G8R8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8
R8G8B8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8
R10G10B10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8
B10G10R10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8
Bitmap surface:
name width height
------------------------------
B8G8R8A8 16384 16384
R8G8B8A8 16384 16384
R10G10B10A2 16384 16384
B10G10R10A2 16384 16384
A8 16384 16384
Video mixer:
feature name sup
------------------------------------
DEINTERLACE_TEMPORAL y
DEINTERLACE_TEMPORAL_SPATIAL -
INVERSE_TELECINE -
NOISE_REDUCTION y
SHARPNESS y
LUMA_KEY y
HIGH QUALITY SCALING - L1 y
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -
parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH y 48 4096
VIDEO_SURFACE_HEIGHT y 48 4096
CHROMA_TYPE y
LAYERS y 0 4
attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR y
CSC_MATRIX y
NOISE_REDUCTION_LEVEL y 0.00 1.00
SHARPNESS_LEVEL y -1.00 1.00
LUMA_KEY_MIN_LUMA y
LUMA_KEY_MAX_LUMA y