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:

installer options screenshot

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
  Depends: ubuntu-restricted-addons
  Recommends: libavcodec-extra
  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?

Totem error screenshot

Ubuntu Software error message

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
INVERSE_TELECINE                 -
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         y

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
  • 1
    I usually install ubuntu-restricted-addons to avoid ms fonts. You can just check what it wants to pull in with sudo apt-get -s install ubuntu-restricted-addons. Jul 26, 2019 at 21:27
  • I'm guessing ubuntu-restricted-addons is the package offered by the installer because when I try your suggestion I see "ubuntu-restricted-addons is already the newest version (26)". Also I confirm all the media codecs it includes are already installed. Jul 27, 2019 at 6:23
  • wired dpkg -L gstreamer1.0-plugins-ugly | grep libgstx264
    – nobody
    Jul 28, 2019 at 11:29
  • @nobody output:/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstx264.so, @andrew.46 Same results after moving the cache file. I've discovered that Totem will play the exact same problem files in MKV container format, something about MP4 breaks playback. Jul 29, 2019 at 18:31
  • Please can you show vainfo and vdpauinfo . The error message could lead in the false direction.
    – nobody
    Jul 30, 2019 at 9:29

3 Answers 3


Something wrong with gstreamer1.0-vaapi First make a simulation, please. apt --dry-run purge gstreamer1.0-vaapi because of dependencies.

  • Interesting, it had no dependencies so I purged it and the problem is gone. Any idea what causes this? Also, thank you for helping me. Jul 30, 2019 at 19:27

I had a similar issue recently and installing gstreamer1.0-libav fixed it.

  • Sounds more like a comment... You could actually state the command you executed in the terminal or maybe it's a package you just installed through an interface... Just saying. May 13, 2020 at 1:00
  • In recent Ubuntu releases at least, the gstreamer1.0-libav package is listed in the totem dependencies in the "Suggested" section instead of in the "Recommended" section. Because of this, it's not installed by default. But this is a basic functionality in my opinion. Maybe it deserves a bug report?
    – leogama
    Apr 7, 2021 at 22:37

Using totem 3.34.1 a dialog popped up to search Ubuntu software for GStreamer Multimedia Codecs.

After installing the GStreamer plugins from the "bad" set version 1.16.2-2.1ubuntu1 from the category Add-ons → Codecs, totem was able to play the avi.

GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared to the rest. They might be close to being good quality, but they're missing something - be it a good code review, some documentation, a set of tests, a real live maintainer, or some actual wide use.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.