Bug 1039163

Summary: gstreamer is Unable to play MPEG-1 or MPEG-2 video files on nVidia gpu
Product: [openSUSE] openSUSE Distribution Reporter: Jason Mader <jmader2>
Component: OtherAssignee: Dave Plater <davejplater>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: davejplater, ismail, jmader2, ohering, olaf, vliaskovitis
Version: Leap 42.2   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: Output of zypper se -si gst on working system
MPEG-1 Video
strace gst-discoverer-1.0 Front.mpg
rpm-qa.trxt
MPEG-1 in avi container
MPEG-1 in matroska container
rpm-qa non-working system
gst-inspect-1.0 -a
Dirac video in a matroska container
gst-discoverer-1.0 --gst-debug-level=4 --gst-debug=libav Front.mpg

Description Jason Mader 2017-05-15 17:23:05 UTC
On Leap 42.2 we’ve been unable to play MPEG videos such as,

Front.mpg: MPEG sequence, v1, progressive Y'CbCr 4:2:0 video, LD-TV 640P, 4:3, 29.97 fps
High_Speed.mpg: MPEG sequence, v2, program multiplex

$ gst-discoverer-1.0 Front.mpg

Analyzing file:///home/jason/Desktop/Front.mpg
Done discovering file:///home/jason/Desktop/Front.mpg
An error was encountered while discovering the file
 No valid frames decoded before end of stream

And I believe, this is the plugin that should provide support,
gstreamer-plugins-bad-1.8.3-5.5.4.x86_64
ffmpeg-3.3-6.8.1.x86_64

whereas, on Leap 42.1,

$ gst-discoverer-1.0 Front.mpg
Analyzing file:///home/jason/Front.mpg
Done discovering file:///home/jason/Front.mpg

Topology:
  video: MPEG-1 Video

Properties:
  Duration: 0:00:15.907000000
  Seekable: yes
  Tags:
      video codec: MPEG-1 Video
      bitrate: 12450509

$ gst-discoverer-1.0 High_Speed.mpg
Analyzing file:///home/jason/High_Speed.mpg
Done discovering file:///home/jason/High_Speed.mpg

Topology:
  container: MPEG-2 System Stream
    audio: MPEG-1 Layer 2 (MP2)
    video: MPEG-2 Video (Main Profile)

Properties:
  Duration: 0:00:21.720000000
  Seekable: yes
  Tags:
      audio codec: MPEG-1 Audio
      has crc: false
      channel mode: stereo
      nominal bitrate: 256000
      bitrate: 256000
      video codec: MPEG-2 Video

gstreamer-plugins-bad-1.8.2-113.1.x86_64
ffmpeg-3.1.1-82.1.x86_64


On Leap 42.2, gst debug shows,

0:00:00.363383039  2683 0x7fa258002000 WARN            videodecoder gstvideodecoder.c:1167:gst_video_decoder_sink_event_default:<avdec_mpeg2_cuvid0> error: No valid frames decoded before end of stream
0:00:00.363387785  2683 0x7fa258002000 WARN            videodecoder gstvideodecoder.c:1167:gst_video_decoder_sink_event_default:<avdec_mpeg2_cuvid0> error: no valid frames found
0:00:00.363404380  2683 0x7fa258002000 INFO        GST_ERROR_SYSTEM gstelement.c:1879:gst_element_message_full:<avdec_mpeg2_cuvid0> posting message: No valid frames decoded before end of stream
0:00:00.363433263  2683 0x7fa258002000 INFO        GST_ERROR_SYSTEM gstelement.c:1902:gst_element_message_full:<avdec_mpeg2_cuvid0> posted error message: No valid frames decoded before end of stream
0:00:00.363460628  2683      0x2485b20 WARN              discoverer gstdiscoverer.c:1321:handle_message:<avdec_mpeg2_cuvid0> Got an error [debug:gstvideodecoder.c(1167): gst_video_decoder_sink_event_default (): /GstPipeline:Discoverer/GstURIDecodeBin:discoverer-uri/GstDecodeBin:decodebin1/avdec_mpeg2_cuvid:avdec_mpeg2_cuvid0:

Whereas on Leap 42.1, the gst_video_decoder is "avdec_mpeg2video".
Comment 1 Vasilis Liaskovitis 2017-05-16 15:51:27 UTC
Have you tried adding the extra repos and packages described in this link? : http://opensuse-guide.org/codecs.php

I also guess you are not using gstreamer-plugins-vaapi for h/w video decoding?

If the problem persists: A link to a test video with the exact format you are trying might be helpful for reproducing.
Comment 2 Jason Mader 2017-05-16 17:22:00 UTC
Definitely not using gstreamer-plugins-vaapi, if that's installed then all other videos that play then would report the error "Could not initialize supporting library."

If I install all the stuff mentioned on http://opensuse-guide.org/codecs.php, the MPEG-1 and MPEG-2 files still do not play.

But our Leap 42.2 installation is quite similar to Leap 42.1 where these formats do play.

Here's an example MPEG-1 that I can play on Leap 42.1, but not on Leap 42.2,
  https://media.ccsa.gmu.edu/s/uvattjgghod1tf5/Front.mpg
Comment 3 Jan Engelhardt 2017-05-17 09:45:19 UTC
idoenmez, do you think we can enable the MPEG-1 Video and MPEG-2 video decoders just like you did for MPEG-1 Audio Layer 3 and AC3?
Comment 4 Dave Plater 2017-05-17 12:03:01 UTC
(In reply to Jason Mader from comment #2)
> Definitely not using gstreamer-plugins-vaapi, if that's installed then all
> other videos that play then would report the error "Could not initialize
> supporting library."
> 
> If I install all the stuff mentioned on
> http://opensuse-guide.org/codecs.php, the MPEG-1 and MPEG-2 files still do
> not play.
> 
> But our Leap 42.2 installation is quite similar to Leap 42.1 where these
> formats do play.
> 
> Here's an example MPEG-1 that I can play on Leap 42.1, but not on Leap 42.2,
>   https://media.ccsa.gmu.edu/s/uvattjgghod1tf5/Front.mpg

You don't mention which front end you are attempting to play the videos with.
Can you post the output of zypper -si libavcodec please.
Comment 5 Jason Mader 2017-05-17 15:22:25 UTC
totem. the player called "Videos". I provided the output of gst-discoverer-1.0, you can see that it cannot recognize the MPEG-1 or MPEG-2 content.

$ zypper si libavcodec
Reading installed packages...
Loading repository data...
Source package 'libavcodec' not found.
Comment 6 Dave Plater 2017-05-18 05:28:21 UTC
(In reply to Jason Mader from comment #5)
> totem. the player called "Videos". I provided the output of
> gst-discoverer-1.0, you can see that it cannot recognize the MPEG-1 or
> MPEG-2 content.
> 
> $ zypper si libavcodec
> Reading installed packages...
> Loading repository data...
> Source package 'libavcodec' not found.

My mistake I meant zypper se libavcodec, if your instal from 
http://opensuse-guide.org/codecs.php worked then you should have ffmpeg from Packman. Does the command line "ffplay Front.mpg" play?
Comment 7 Dave Plater 2017-05-18 06:13:42 UTC
If you have unrestricted gstreamer-plugins-ugly-orig-addon, gstreamer-plugins-libav libavcodec and libavformat you should be able to play almost any video. If ffplay fails then you must have the wrong set of ffmpeg libs.

The last patent to expire for MPEG-2 6181712 expires on 30 January 2018, all the others have expired.
Comment 8 Jason Mader 2017-05-18 15:19:57 UTC
$ rpm -qa gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav libavcodec57 libavformat57 ffmpeg
gstreamer-plugins-ugly-orig-addon-1.8.3-2.4.x86_64
libavformat57-3.3-6.8.1.x86_64
libavcodec57-3.3-6.8.1.x86_64
ffmpeg-3.3-6.8.1.x86_64
gstreamer-plugins-libav-1.8.3-2.7.x86_64

ffplay works just fine.

$ ffplay Front.mpg
ffplay version 3.3 Copyright (c) 2003-2017 the FFmpeg developers
  built with gcc 4.8 (SUSE Linux)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-libcdio --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-netcdf --enable-vaapi --enable-vdpau --enable-libfdk_aac --enable-nonfree --enable-libmp3lame --enable-libtwolame --enable-libx264 --enable-libx265 --enable-libxvid
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libavresample   3.  5.  0 /  3.  5.  0
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
[mpegvideo @ 0x7fe808009240] Estimating duration from bitrate, this may be inaccurate
Input #0, mpegvideo, from 'Front.mpg':
  Duration: 00:00:00.52, bitrate: 104857 kb/s
    Stream #0:0: Video: mpeg1video, yuv420p(tv), 640x480 [SAR 1:1 DAR 4:3], 104857 kb/s, 29.97 fps, 29.97 tbr, 1200k tbn, 29.97 tbc
   3.48 M-V: -0.006 fd=   2 aq=    0KB vq=  376KB sq=    0B f=0/0
Comment 9 Jan Engelhardt 2017-05-18 15:31:18 UTC
Removing myself since this apparently not the original openSUSE build of ffmpeg.
Comment 10 Dave Plater 2017-05-19 06:44:36 UTC
I suspect that the problem lies with the "Multimedia Codecs" page. Which method did you use, zypper or "one click install"?
On my system downgrading gstreamer-plugins-bad to the official version doesn't prevent MPEG-1 or MPEG-2 files from being recognized by gst-discoverer-1.0.
Please post the output from "zypper se -si gst" and I will try and identify the gstreamer package that needs to be changed.
Comment 11 Jason Mader 2017-05-19 09:17:42 UTC
S | Name                              | Type        | Version     | Arch   | Repository
--+-----------------------------------+-------------+-------------+--------+--------------------------------------------
i | GStreamer Multimedia Codecs       | application |             | noarch | Online updates for openSUSE Leap (standard)
i | PackageKit-gstreamer-plugin       | package     | 1.1.3-2.3   | x86_64 | openSUSE-Leap-Oss
i | gstreamer                         | package     | 1.8.3-2.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | gstreamer-lang                    | package     | 1.8.3-2.3.1 | noarch | Online updates for openSUSE Leap (standard)
i | gstreamer-libnice                 | package     | 0.1.13-4.5  | x86_64 | openSUSE-Leap-Oss
i | gstreamer-plugin-gstclutter-3_0   | package     | 3.0.18-1.5  | x86_64 | openSUSE-Leap-Oss
i | gstreamer-plugins-bad             | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | gstreamer-plugins-bad-lang        | package     | 1.8.3-5.5.4 | noarch | Packman Essentials
i | gstreamer-plugins-base            | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | gstreamer-plugins-base-lang       | package     | 1.8.3-5.3.2 | noarch | Online updates for openSUSE Leap (standard)
i | gstreamer-plugins-cogl            | package     | 1.22.2-1.10 | x86_64 | openSUSE-Leap-Oss
i | gstreamer-plugins-farstream       | package     | 0.2.8-1.5   | x86_64 | openSUSE-Leap-Oss
i | gstreamer-plugins-good            | package     | 1.8.3-5.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | gstreamer-plugins-good-lang       | package     | 1.8.3-5.3.1 | noarch | Online updates for openSUSE Leap (standard)
i | gstreamer-plugins-libav           | package     | 1.8.3-2.7   | x86_64 | Packman Essentials
i | gstreamer-plugins-ugly            | package     | 1.8.3-2.4   | x86_64 | Packman Essentials
i | gstreamer-plugins-ugly-lang       | package     | 1.8.3-2.4   | noarch | Packman Essentials
i | gstreamer-plugins-ugly-orig-addon | package     | 1.8.3-2.4   | x86_64 | Packman Essentials
i | gstreamer-utils                   | package     | 1.8.3-2.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | libclutter-gst-3_0-0              | package     | 3.0.18-1.5  | x86_64 | openSUSE-Leap-Oss
i | libgstadaptivedemux-1_0-0         | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstallocators-1_0-0            | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstapp-1_0-0                   | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstaudio-1_0-0                 | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstbadaudio-1_0-0              | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstbadbase-1_0-0               | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstbadvideo-1_0-0              | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstbasecamerabinsrc-1_0-0      | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstcodecparsers-1_0-0          | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstfft-1_0-0                   | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstgl-1_0-0                    | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstmpegts-1_0-0                | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstpbutils-1_0-0               | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstphotography-1_0-0           | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstreamer-1_0-0                | package     | 1.8.3-2.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstriff-1_0-0                  | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstrtp-1_0-0                   | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstrtsp-1_0-0                  | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstsdp-1_0-0                   | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgsttag-1_0-0                   | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgsturidownloader-1_0-0         | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgstvideo-1_0-0                 | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | libgstwayland-1_0-0               | package     | 1.8.3-5.5.4 | x86_64 | Packman Essentials
i | libgupnp-dlna-backend-gstreamer   | package     | 0.10.5-3.2  | x86_64 | openSUSE-Leap-Oss
i | typelib-1_0-ClutterGst-3_0        | package     | 3.0.18-1.5  | x86_64 | openSUSE-Leap-Oss
i | typelib-1_0-Gst-1_0               | package     | 1.8.3-2.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | typelib-1_0-GstAudio-1_0          | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | typelib-1_0-GstPbutils-1_0        | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | typelib-1_0-GstTag-1_0            | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
i | typelib-1_0-GstVideo-1_0          | package     | 1.8.3-5.3.2 | x86_64 | Online updates for openSUSE Leap (standard)
Comment 12 Jason Mader 2017-05-19 17:58:42 UTC
It seems that the Packman Essentials gstreamer-plugins-libav interferes with MPEG-1/2 Video playback that's provided by packman:gstreamer-plugins-ugly-orig-addon
Comment 13 Dave Plater 2017-05-20 05:12:05 UTC
(In reply to Jason Mader from comment #12)
> It seems that the Packman Essentials gstreamer-plugins-libav interferes with
> MPEG-1/2 Video playback that's provided by
> packman:gstreamer-plugins-ugly-orig-addon

I removed gstreamer-plugins-libav from my system and still had gst MPEG-1 and 2 playback. I'll parse your list and try to duplicate your problem later on.
Comment 14 Jason Mader 2017-05-20 16:51:34 UTC
Dave, you don't need packman:gstreamer-plugins-libav to play MPEG-1/2 Video; you need packman:gstreamer-plugins-ugly-orig-addon. But once packman:gstreamer-plugins-libav get's installed then MPEG-1/2 Video playback stops working with the error. And then removing packman:gstreamer-plugins-libav MPEG-1/2 Video playback will work again (but so many other formats need packman:gstreamer-plugins-libav to play, so they'll stop working.)
Comment 15 Dave Plater 2017-05-21 09:11:43 UTC
(In reply to Jason Mader from comment #14)
> Dave, you don't need packman:gstreamer-plugins-libav to play MPEG-1/2 Video;
> you need packman:gstreamer-plugins-ugly-orig-addon. But once
> packman:gstreamer-plugins-libav get's installed then MPEG-1/2 Video playback
> stops working with the error. And then removing
> packman:gstreamer-plugins-libav MPEG-1/2 Video playback will work again (but
> so many other formats need packman:gstreamer-plugins-libav to play, so
> they'll stop working.)

I think I've managed to get my gstreamer plugins to match yours but without gstreamer-plugins-libav I do lose x264 and 5 capabilities though reinstalling it and removing gstreamer-plugins-ugly-orig-addon doesn't lose MPEG-1/2 capabilities. I'm wondering if gstreamer-plugins-ugly-orig-addon is even necessary.
 zypper se -si gstreamer|grep pacman
i | gstreamer-plugins-bad            | package     | 1.8.3-5.5.4    | x86_64 | pacman                           
i | gstreamer-plugins-libav          | package     | 1.8.3-2.7      | x86_64 | pacman                           
i | gstreamer-plugins-ugly           | package     | 1.8.3-2.4      | x86_64 | pacman                           
i | gstreamer-plugins-ugly-doc       | package     | 1.8.3-2.4      | x86_64 | pacman                           
i | gstreamer-plugins-ugly-lang      | package     | 1.8.3-2.4      | noarch | pacman                           
All the rest of my gstreamer is up to date from openSUSE, I also have a number of gstreamer-0_10 packages which I can't remove yet due to key packages which depend on it but I maintain most of them so I'll take steps to rectify this in the near future:
i | gstreamer-0_10                   | package     | 0.10.36-16.2   | x86_64 | oss                              
i | gstreamer-0_10-lang              | package     | 0.10.36-16.2   | noarch | oss                              
i | gstreamer-0_10-plugin-esd        | package     | 0.10.31-17.3.1 | x86_64 | update                           
i | gstreamer-0_10-plugin-gnomevfs   | package     | 0.10.36-14.6   | x86_64 | oss                              
i | gstreamer-0_10-plugins-bad       | package     | 0.10.23-27.1   | x86_64 | update                           
i | gstreamer-0_10-plugins-bad-lang  | package     | 0.10.23-27.1   | noarch | update                           
i | gstreamer-0_10-plugins-base      | package     | 0.10.36-14.6   | x86_64 | oss                              
i | gstreamer-0_10-plugins-base-lang | package     | 0.10.36-14.6   | noarch | oss                              
i | gstreamer-0_10-plugins-good      | package     | 0.10.31-17.3.1 | x86_64 | update                           
i | gstreamer-0_10-plugins-good-lang | package     | 0.10.31-17.3.1 | noarch | update                           
i | gstreamer-0_10-plugins-ugly      | package     | 0.10.19-17.3   | x86_64 | oss                              
i | gstreamer-0_10-plugins-ugly-lang | package     | 0.10.19-17.3   | noarch | oss                              
i | libgstreamer-0_10-0              | package     | 0.10.36-16.2   | x86_64 | oss                              
i | python-gstreamer-0_10            | package     | 0.10.22-14.4   | x86_64 | oss                              

I'm using gst-discoverer-1.0 to test, I assume that this isn't a totem bug.
Comment 16 Jason Mader 2017-05-22 17:22:06 UTC
We need packman:gstreamer-plugins-ugly-orig-addon to play Microsoft ASF files,

Topology:
  container: Advanced Streaming Format (ASF)
    video: Windows Media Video 9 Screen

but, not having it installed or having it installed, MPEG-1/2 Video always has the error, "No valid frames decoded before end of stream" while packman:gstreamer-plugins-libav is installed.

I'm not sure how you're getting different results.
Comment 17 Dave Plater 2017-05-23 06:40:18 UTC
Created attachment 725987 [details]
Output of zypper se -si gst on working system

Try matching my gstreamer, ignore the 0_10 packages and for now remove gstreamer-plugins-ugly-orig-addon. gstreamer-plugins-libav is where most of my capabilities come from via ffmpeg codecs.
This is a list of ffmpeg libs that you should ensure are from Packman, the latest version that gstreamer-plugins-libav should be built against is 3.3.
S | Name                | Type    | Version | Arch   | Repository
--+---------------------+---------+---------+--------+-----------
v | libavcodec-devel    | package | 3.2.4-0 | x86_64 | rpms      
v | libavcodec57        | package | 3.2.4-0 | x86_64 | rpms      
v | libavdevice-devel   | package | 3.2.4-0 | x86_64 | rpms      
v | libavdevice57       | package | 3.2.4-0 | x86_64 | rpms      
v | libavfilter-devel   | package | 3.2.4-0 | x86_64 | rpms      
v | libavfilter6        | package | 3.2.4-0 | x86_64 | rpms      
v | libavformat-devel   | package | 3.2.4-0 | x86_64 | rpms      
v | libavformat57       | package | 3.2.4-0 | x86_64 | rpms      
v | libavresample-devel | package | 3.2.4-0 | x86_64 | rpms      
v | libavresample3      | package | 3.2.4-0 | x86_64 | rpms      
v | libavutil-devel     | package | 3.2.4-0 | x86_64 | rpms      
v | libavutil55         | package | 3.2.4-0 | x86_64 | rpms      
You don't need the devel packages.
Comment 18 Dave Plater 2017-05-23 06:45:44 UTC
I couldn't retrieve the video from the link you posted, can you attach your Mpeg test videos.
Comment 19 Jason Mader 2017-05-23 12:09:26 UTC
These are the libraries I've had installed all along.

S | Name           | Type    | Version   | Arch   | Repository
--+----------------+---------+-----------+--------+-------------------
i | libavcodec57   | package | 3.3-6.8.1 | x86_64 | Packman Essentials
i | libavdevice57  | package | 3.3-6.8.1 | x86_64 | Packman Essentials
i | libavfilter6   | package | 3.3-6.8.1 | x86_64 | Packman Essentials
i | libavformat57  | package | 3.3-6.8.1 | x86_64 | Packman Essentials
i | libavresample3 | package | 3.3-6.8.1 | x86_64 | Packman Essentials
i | libavutil55    | package | 3.3-6.8.1 | x86_64 | Packman Essentials
Comment 20 Jason Mader 2017-05-23 12:11:16 UTC
Created attachment 726039 [details]
MPEG-1 Video
Comment 21 Dave Plater 2017-05-24 06:30:52 UTC
Can you execute "strace gst-discoverer-1.0 Front.mpg", save the output in a text file and attach it to this bug.
Comment 22 Olaf Hering 2017-05-24 06:45:57 UTC
Does 'zypper dup --from packman' fix it by any chance?
Comment 23 Jason Mader 2017-05-24 14:57:07 UTC
Created attachment 726234 [details]
strace gst-discoverer-1.0 Front.mpg
Comment 24 Jason Mader 2017-05-24 15:04:41 UTC
(In reply to Olaf Hering from comment #22)
> Does 'zypper dup --from packman' fix it by any chance?

Nope, it made these changes,

The following NEW package is going to be installed:
  libtxc_dxtn

The following package is going to be REMOVED:
  s2tc

but still "No valid frames decoded before end of stream" on MPEG playback.
Comment 25 Olaf Hering 2017-05-25 07:12:21 UTC
Created attachment 726362 [details]
rpm-qa.trxt

It happens to work for me. Please attach rpm-qa.txt:

rpm -qa --qf '%{NAME} %{VERSION} %{RELEASE} %{DISTRIBUTION}\n' | \
sort | tee /dev/shm/rpm-qa.txt
Comment 26 Dave Plater 2017-05-25 07:34:26 UTC
Created attachment 726368 [details]
MPEG-1 in avi container

execute gst-discoverer-1.0 Front.avi and post output.
Comment 27 Dave Plater 2017-05-25 07:35:56 UTC
Created attachment 726369 [details]
MPEG-1 in matroska container

Execute gst-discoverer-1.0 Front.mkv and post output
Comment 28 Dave Plater 2017-05-25 07:40:23 UTC
Execute gst-inspect-1.0 -a > inspect.txt and attach inspect.txt.
Comment 29 Jason Mader 2017-05-25 16:01:36 UTC
Created attachment 726442 [details]
rpm-qa non-working system
Comment 30 Jason Mader 2017-05-25 16:07:25 UTC
Created attachment 726443 [details]
gst-inspect-1.0 -a

non-working system
Comment 31 Dave Plater 2017-05-26 05:41:40 UTC
Created attachment 726487 [details]
Dirac video in a matroska container

I need the result from running gst-discoverer-1.0 on the mpeg-1 coded files in avi and mkv (matroska) containers, also the attached Frontvp8.mkv file which is a vpx encoded video in a matroska container. Both vpx and matroska aren't patent encumbered and are available in the main distribution.
As you can see from Olaf's comment you have a unique problem.
It appears to me that your gsstreamer system is unable to read mpeg containers as opposed to the actual mpeg 1 and 2 video codecs.
Comment 32 Dave Plater 2017-05-26 05:42:34 UTC
Set needinfo
Comment 33 Olaf Hering 2017-05-26 08:02:31 UTC
I think you should just run 'zypper dup' to see which pkgs will be replaced.
Comment 34 Dave Plater 2017-05-26 11:34:11 UTC
(In reply to Olaf Hering from comment #33)
> I think you should just run 'zypper dup' to see which pkgs will be replaced.

See comment #22, I'm working with the same gstreamer as the reporter and I don't get the problem. There's something on the reporter's system that's interfering with gstreamer, gstreamer-plugins-libav can only come from multimedia:libs or packman.
Comment 35 Dave Plater 2017-05-28 11:59:52 UTC
Although your version and release numbers match mine your gstreamer-plugins-libav is different to mine, your plugins good is also different. A force install of all of your gst libraries should fix your problem.
Also post the output of zypper lr "Packman Essentials" so I can see the url that you use, maybe that will explain something.
Comment 36 Jason Mader 2017-05-30 07:53:09 UTC
Alias          : packman
Name           : Packman Essentials
URI            : http://packman.inode.at/suse/openSUSE_Leap_42.2/Essentials/
Enabled        : Yes
GPG Check      : (r ) Yes
Priority       : 99 (default priority)
Autorefresh    : On
Keep Packages  : Off
Type           : rpm-md
GPG Key URI    :
Path Prefix    : /
Parent Service :
Keywords       : ---
Repo Info Path : /etc/zypp/repos.d/packman.repo
MD Cache Path  : /var/cache/zypp/raw/packman
Comment 37 Dave Plater 2017-05-30 08:16:34 UTC
(In reply to Jason Mader from comment #36)
> Alias          : packman
> Name           : Packman Essentials
> URI            : http://packman.inode.at/suse/openSUSE_Leap_42.2/Essentials/
> Enabled        : Yes
> GPG Check      : (r ) Yes
> Priority       : 99 (default priority)
> Autorefresh    : On
> Keep Packages  : Off
> Type           : rpm-md
> GPG Key URI    :
> Path Prefix    : /
> Parent Service :
> Keywords       : ---
> Repo Info Path : /etc/zypp/repos.d/packman.repo
> MD Cache Path  : /var/cache/zypp/raw/packman

This explains your problem. A complex repository structure, understood more by Olaf than myself was setup to prevent openSUSE/Packman gstreamer problems. Essentials is one of the internal repositories that make up the whole Packman repo and by including it at the end of your repo url you have bypassed the correct gstreamer in Packman. You need to delete Essentials from the end of your:
URI            : http://packman.inode.at/suse/openSUSE_Leap_42.2/Essentials/
or delete the repository and open Yast Software Repositories and select "Add" then "community repositories" then add the Packman reository from there.
Following this you need to force install your Packman gstreamer packages. I'm confident that this will solve your problem.
Comment 38 Jason Mader 2017-05-30 16:37:58 UTC
I’ve reinstalled Leap 42.2 and changed the repository URI. I cannot play the MPEG-1/2 Video files, same error, No valid frames decoded before end of stream.

Alias          : Packman Repository
Name           : Packman Repository
URI            : http://packman.inode.at/suse/openSUSE_Leap_42.2/
Enabled        : Yes
GPG Check      : (r ) Yes
Priority       : 99 (default priority)
Autorefresh    : On
Keep Packages  : Off
Type           : rpm-md
GPG Key URI    :
Path Prefix    :
Parent Service :
Keywords       : ---
Repo Info Path : /etc/zypp/repos.d/Packman Repository.repo
MD Cache Path  : /var/cache/zypp/raw/Packman Repository

I tried `zypper dup --from 'Packman Repository'`: "Nothing to do."

S | Name                              | Type    | Version     | Arch   | Repository
--+-----------------------------------+---------+-------------+--------+-------------------
i | gstreamer                         | package | 1.8.3-2.3.1 | x86_64 | Online updates for openSUSE Leap (standard)
i | gstreamer-plugins-libav           | package | 1.8.3-2.7   | x86_64 | Packman Repository
i | gstreamer-plugins-ugly-orig-addon | package | 1.8.3-2.4   | x86_64 | Packman Repository
i | libavcodec57                      | package | 3.3-6.8.1   | x86_64 | Packman Repository
i | libavformat57                     | package | 3.3-6.8.1   | x86_64 | Packman Repository
Comment 39 Dave Plater 2017-05-31 15:15:51 UTC
I still need you to post the results from gst-discoverer-1.0 when run on the avi and two mkv versions of Front that I attached.
Also run gst-discoverer-1.0 --gst-debug-level=4 --gst-debug=libav Front.mpg > discover.txt and attach discover.txt
Comment 40 Jason Mader 2017-05-31 15:55:38 UTC
Analyzing file:///home/jason/Desktop/Front.mkv
Done discovering file:///home/jason/Desktop/Front.mkv
An error was encountered while discovering the file
 No valid frames decoded before end of stream

Analyzing file:///home/jason/Desktop/Front.avi
Done discovering file:///home/jason/Desktop/Front.avi
An error was encountered while discovering the file
 No valid frames decoded before end of stream
Comment 41 Jason Mader 2017-05-31 16:01:36 UTC
Created attachment 727179 [details]
gst-discoverer-1.0 --gst-debug-level=4 --gst-debug=libav Front.mpg

non-working system
Comment 42 Jason Mader 2017-06-03 14:33:46 UTC
Updating to the latest packages fixed the problem.

v | Packman Essentials                          | ffmpeg                      | 3.3-6.8.1   | 3.3-6.11.1  | x86_64

v | Online updates for openSUSE Leap (standard) | gstreamer-plugins-good      | 1.8.3-5.3.1 | 1.8.3-5.6.1 | x86_64
v | Online updates for openSUSE Leap (standard) | gstreamer-plugins-good-lang | 1.8.3-5.3.1 | 1.8.3-5.6.1 | noarch
v | Packman Essentials                          | gstreamer-plugins-libav     | 1.8.3-2.7   | 1.8.3-2.8   | x86_64

v | Packman Essentials                          | libavcodec57                | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
v | Packman Essentials                          | libavdevice57               | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
v | Packman Essentials                          | libavfilter6                | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
v | Packman Essentials                          | libavformat57               | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
v | Packman Essentials                          | libavresample3              | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
v | Packman Essentials                          | libavutil55                 | 3.3-6.8.1   | 3.3-6.11.1  | x86_64
Comment 43 Dave Plater 2017-06-03 16:23:31 UTC
I'd still love to know what went wrong or was it using Essentials as a repo?
Comment 44 Dave Plater 2017-06-03 16:40:08 UTC
There's bug #1041794 which has just been fixed and would have resulted in a gstreamer rebuild. What video hardware do you have? The bug I referred to resulted in the disabling of cuda hardware extensions in ffmpeg.
Comment 45 Jason Mader 2017-06-03 20:18:32 UTC
Even a computer with the Essentials as the repo, after the update works.

All the computers involved have NVIDIA graphics (with the same driver)
Comment 46 Dave Plater 2017-06-04 04:19:24 UTC
Glad you have your video working, may I ask you what drivers you use for your computer's nvidia graphics and the results of (as root) hwinfo --gfxcard on each computer.
Comment 47 Jason Mader 2017-06-04 15:41:47 UTC
Here are two examples, but MPEG Video wasn't working on any of the computers with Leap 42.2 installations with NVIDIA (we do not use other graphics, so I have no other example).  Driver: NVIDIA-Linux-x86_64-378.13.run

25: PCI 200.0: 0300 VGA compatible controller (VGA)
  [Created at pci.378]
  Unique ID: B35A.4kNYRDtRQF3
  Parent ID: _Znp.nMBktMhAWbC
  SysFS ID: /devices/pci0000:00/0000:00:02.0/0000:02:00.0
  SysFS BusID: 0000:02:00.0
  Hardware Class: graphics card
  Model: "nVidia GK106GL [Quadro K4000]"
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x11fa "GK106GL [Quadro K4000]"
  SubVendor: pci 0x10de "nVidia Corporation"
  SubDevice: pci 0x097c
  Revision: 0xa1
  Driver: "nvidia"
  Driver Modules: "nvidia"
  Memory Range: 0xfa000000-0xfaffffff (rw,non-prefetchable)
  Memory Range: 0x20fe0000000-0x20fefffffff (ro,non-prefetchable)
  Memory Range: 0x20ff0000000-0x20ff1ffffff (ro,non-prefetchable)
  I/O Ports: 0xe000-0xefff (rw)
  Memory Range: 0xfb000000-0xfb07ffff (ro,non-prefetchable,disabled)
  IRQ: 37 (15024763 events)
  Module Alias: "pci:v000010DEd000011FAsv000010DEsd0000097Cbc03sc00i00"
  Driver Info #0:
    Driver Status: nouveau is not active
    Driver Activation Cmd: "modprobe nouveau"
  Driver Info #1:
    Driver Status: nvidia_drm is active
    Driver Activation Cmd: "modprobe nvidia_drm"
  Driver Info #2:
    Driver Status: nvidia is active
    Driver Activation Cmd: "modprobe nvidia"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #9 (PCI bridge)

Primary display adapter: #25

---

27: PCI 300.0: 0300 VGA compatible controller (VGA)
  [Created at pci.378]
  Unique ID: svHJ.sWjAI4_xKX2
  Parent ID: _Znp.kuTAJnFSM93
  SysFS ID: /devices/pci0000:00/0000:00:02.0/0000:03:00.0
  SysFS BusID: 0000:03:00.0
  Hardware Class: graphics card
  Model: "nVidia GF100GL [Quadro 4000]"
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x06dd "GF100GL [Quadro 4000]"
  SubVendor: pci 0x10de "nVidia Corporation"
  SubDevice: pci 0x0780
  Revision: 0xa1
  Driver: "nvidia"
  Driver Modules: "nvidia"
  Memory Range: 0xee000000-0xeeffffff (rw,non-prefetchable)
  Memory Range: 0xf0000000-0xf7ffffff (ro,non-prefetchable)
  Memory Range: 0xf8000000-0xf9ffffff (ro,non-prefetchable)
  I/O Ports: 0xe000-0xefff (rw)
  Memory Range: 0xef000000-0xef07ffff (ro,non-prefetchable,disabled)
  IRQ: 41 (93319611 events)
  Module Alias: "pci:v000010DEd000006DDsv000010DEsd00000780bc03sc00i00"
  Driver Info #0:
    Driver Status: nouveau is not active
    Driver Activation Cmd: "modprobe nouveau"
  Driver Info #1:
    Driver Status: nvidia_drm is active
    Driver Activation Cmd: "modprobe nvidia_drm"
  Driver Info #2:
    Driver Status: nvidia is active
    Driver Activation Cmd: "modprobe nvidia"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #10 (PCI bridge)

Primary display adapter: #27
Comment 48 Dave Plater 2017-06-05 05:46:16 UTC
Can you reinstall your ffmpeg libraries from:
http://pmbs-api.links2linux.org:8080/home:/davepl/Leap_42.2/
and see if the problem comes back.
I think this is a bug in gstreamer-plugins-libav, it's not supposed to use libavcodec hardware codecs and this use has been disabled in 1.9.x versions.
Comment 49 Jason Mader 2017-06-06 17:54:27 UTC
The problem returns with those packages.

# gst-discoverer-1.0 Front.mpg
Analyzing file:///home/jason/Desktop/Front.mpg
Done discovering file:///home/jason/Desktop/Front.mpg

Topology:
  video: MPEG-1 Video

Properties:
  Duration: 0:00:15.907000000
  Seekable: yes
  Tags:
      video codec: MPEG-1 Video
      bitrate: 12450509

# zypper in davepl:ffmpeg
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 10 packages are going to be upgraded:
  ffmpeg libavcodec57 libavdevice57 libavfilter6 libavformat57 libavresample3 libavutil55 libpostproc54 libswresample2 libswscale4

10 packages to upgrade.
Overall download size: 7.7 MiB. Already cached: 0 B. After the operation, additional 1.7 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package libavutil55-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                           (1/10), 184.0 KiB (444.0 KiB unpacked)
Retrieving: libavutil55-3.3.1-157.1.x86_64.rpm ......[done (18.0 KiB/s)]
Retrieving package libswscale4-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                           (2/10), 165.0 KiB (568.5 KiB unpacked)
Retrieving: libswscale4-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libswresample2-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                        (3/10),  73.0 KiB (143.0 KiB unpacked)
Retrieving: libswresample2-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libpostproc54-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                         (4/10),  69.4 KiB (123.3 KiB unpacked)
Retrieving: libpostproc54-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libavresample3-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                        (5/10),  71.3 KiB (151.6 KiB unpacked)
Retrieving: libavresample3-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libavcodec57-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                          (6/10),   4.0 MiB ( 11.7 MiB unpacked)
Retrieving: libavcodec57-3.3.1-157.1.x86_64.rpm ......[done (1001.0 KiB/s)]
Retrieving package libavformat57-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                         (7/10), 860.9 KiB (  2.2 MiB unpacked)
Retrieving: libavformat57-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libavfilter6-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                          (8/10), 762.8 KiB (  2.4 MiB unpacked)
Retrieving: libavfilter6-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package libavdevice57-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                         (9/10),  78.1 KiB (155.1 KiB unpacked)
Retrieving: libavdevice57-3.3.1-157.1.x86_64.rpm ......[done]
Retrieving package ffmpeg-3.3.1-157.1.x86_64                                                                                                                                                                                                                                                                               (10/10),   1.5 MiB (  2.3 MiB unpacked)
Retrieving: ffmpeg-3.3.1-157.1.x86_64.rpm ......[done]
Checking for file conflicts: ......[done]
( 1/10) Installing: libavutil55-3.3.1-157.1.x86_64 ......[done]
( 2/10) Installing: libswscale4-3.3.1-157.1.x86_64 ......[done]
( 3/10) Installing: libswresample2-3.3.1-157.1.x86_64 ......[done]
( 4/10) Installing: libpostproc54-3.3.1-157.1.x86_64 ......[done]
( 5/10) Installing: libavresample3-3.3.1-157.1.x86_64 ......[done]
( 6/10) Installing: libavcodec57-3.3.1-157.1.x86_64 ......[done]
( 7/10) Installing: libavformat57-3.3.1-157.1.x86_64 ......[done]
( 8/10) Installing: libavfilter6-3.3.1-157.1.x86_64 ......[done]
( 9/10) Installing: libavdevice57-3.3.1-157.1.x86_64 ......[done]
(10/10) Installing: ffmpeg-3.3.1-157.1.x86_64 ......[done]
There are some running programs that might use files deleted by recent upgrade. You may wish to check and restart some of them. Run 'zypper ps -s' to list these programs.
# gst-discoverer-1.0 Front.mpg
Analyzing file:///home/jason/Desktop/Front.mpg
Done discovering file:///home/jason/Desktop/Front.mpg
An error was encountered while discovering the file
 No valid frames decoded before end of stream
Comment 50 Dave Plater 2017-06-07 04:26:59 UTC
Thanks for confirming that this is a bug in gstreamer-plugins-libav when it uses cuvid codecs on nVidia graphics hardware.
Comment 51 Dave Plater 2017-06-07 08:55:29 UTC
Can you please test the patched gstreamer-plugins-libav with the ffmpeg from the same repository:
http://pmbs-api.links2linux.org:8080/home:/davepl/Leap_42.2/
If cuvid is ever enabled in ffmpeg again this will prevent further problems.
Comment 52 Jason Mader 2017-06-07 13:34:44 UTC
(In reply to Dave Plater from comment #51)
> Can you please test the patched gstreamer-plugins-libav with the ffmpeg from
> the same repository:
> http://pmbs-api.links2linux.org:8080/home:/davepl/Leap_42.2/

I'm not sure what you're asking me to do.
Comment 53 Dave Plater 2017-06-07 16:57:59 UTC
(In reply to Jason Mader from comment #52)
> (In reply to Dave Plater from comment #51)
> > Can you please test the patched gstreamer-plugins-libav with the ffmpeg from
> > the same repository:
> > http://pmbs-api.links2linux.org:8080/home:/davepl/Leap_42.2/
> 
> I'm not sure what you're asking me to do.

In the same repository as you installed libavcodec57-3.3.1-157.1.x86_64 and friends is gstreamer-plugins-libav-1.8.3-5.1.x86_64.rpm which has a fix for this bug.
I would appreciate if you can test that it does indeed fix this bug and then I can enable cuvid and cuda extensions in the Packman ffmpeg build.
Comment 54 Jason Mader 2017-06-07 17:02:03 UTC
I’ve refreshed that repository, but I’m not seeing any other version of gstreamer-plugins-libav.
Comment 55 Dave Plater 2017-06-07 17:32:58 UTC
(In reply to Jason Mader from comment #54)
> I’ve refreshed that repository, but I’m not seeing any other version of
> gstreamer-plugins-libav.

Sorry, publishing was disabled. You should see it now after a refresh.
Comment 56 Jason Mader 2017-06-07 18:38:16 UTC
# zypper up davepl:gstreamer-plugins-libav
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following package is going to be upgraded:
  gstreamer-plugins-libav

1 package to upgrade.
Overall download size: 171.8 KiB. Already cached: 0 B. After the operation, additional 40.5 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package gstreamer-plugins-libav-1.8.3-5.1.x86_64                                                                                                                                                                                                                                                                  (1/1), 171.8 KiB (441.5 KiB unpacked)
Retrieving: gstreamer-plugins-libav-1.8.3-5.1.x86_64.rpm .....[done (47.6 KiB/s)]
Checking for file conflicts: .....[done]
(1/1) Installing: gstreamer-plugins-libav-1.8.3-5.1.x86_64 .....[done]
There are some running programs that might use files deleted by recent upgrade. You may wish to check and restart some of them. Run 'zypper ps -s' to list these programs.

# gst-discoverer-1.0 Front.mpg
Analyzing file:///home/jason/Desktop/Front.mpg
Done discovering file:///home/jason/Desktop/Front.mpg

Topology:
  video: MPEG-1 Video

Properties:
  Duration: 0:00:15.907000000
  Seekable: yes
  Tags:
      video codec: MPEG-1 Video
      bitrate: 12450509

# zypper se -si ffmpeg gstreamer-plugins-libav libavcodec57 libavdevice57 libavfilter6 libavformat57 libavresample3 libavutil55 libswresample2 libswscale4
Refreshing service 'Center for Collision Safety and Analysis'.
Loading repository data...
Reading installed packages...

S | Name                    | Type    | Version     | Arch   | Repository
--+-------------------------+---------+-------------+--------+------------------
i | ffmpeg                  | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | gstreamer-plugins-libav | package | 1.8.3-5.1   | x86_64 | davepl
i | libavcodec57            | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libavdevice57           | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libavfilter6            | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libavformat57           | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libavresample3          | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libavutil55             | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libswresample2          | package | 3.3.1-157.1 | x86_64 | (System Packages)
i | libswscale4             | package | 3.3.1-157.1 | x86_64 | (System Packages)
Comment 57 Dave Plater 2017-06-08 04:08:46 UTC
Thanks for helping to fix this bug, I can submit the patched plugins-libav.