klv stream not detected

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

klv stream not detected

Arturo Flores
Hello,

gstreamer 1.0 fails to detect a klv metadata stream on certain files.  For example, see the sample file for ESRI's FMV extension: http://esriurl.com/FMVSampleCheyenne 

If I run ffprobe on this file, I get:

$ ffprobe CheyenneVAhospital.mpeg4
ffprobe version 4.2 Copyright (c) 2007-2019 the FFmpeg developers
...
Input #0, mpegts, from 'CheyenneVAhospital.mpeg4':
  Duration: 00:01:05.15, start: 271.125322, bitrate: 5535 kb/s
  Program 1
    Stream #0:0[0x100]: Video: h264 (Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 129 kb/s
    Stream #0:2[0x102]: Data: klv (KLVA / 0x41564C4B)
Unsupported codec with id 100356 for input stream 2

However, if I run gst-discoverer-1.0 (built from gst-build github on 6/21) on this file, I get: 
$ gst-discoverer-1.0 CheyenneVAhospital.mpeg4
Analyzing file:///home/aflores/Desktop/CheyenneVAhospital.mpeg4
Done discovering file:///[snip]/CheyenneVAhospital.mpeg4

Properties:
  Duration: 0:01:04.533864333
  Seekable: yes
  Live: no
  container: MPEG-2 Transport Stream
    audio: MPEG-2 AAC
      Stream ID: d5dea03afad24b384745b1909a8c321236d8570899490e8018cbbb58bb13eb4e:1/00000101
      Language: <unknown>
      Channels: 2 (front-left, front-right)
      Sample rate: 48000
      Depth: 32
      Bitrate: 0
      Max bitrate: 0
    video: H.264 (Baseline Profile)
      Stream ID: d5dea03afad24b384745b1909a8c321236d8570899490e8018cbbb58bb13eb4e:1/00000100
      Width: 1920
      Height: 1080
      Depth: 24
      Frame rate: 30000/1001
      Pixel aspect ratio: 1/1
      Interlaced: false
      Bitrate: 0
      Max bitrate: 0

However, I have discovered that if I copy the file using ffmpeg:
$ ffmpeg -i CheyenneVAhospital.mpeg4 -map 0:0 -map 0:1 -map 0:2 -c copy copy.ts

And then run gst-discoverer on this file, gstreamer can now detect the klv stream:

$ gst-discoverer-1.0 copy.ts
Analyzing file:///home/aflores/Desktop/copy.ts
Done discovering file:///[snip]/copy.ts
Missing plugins
 (gstreamer|1.0|gst-discoverer-1.0|meta/x-klv decoder|decoder-meta/x-klv)

Properties:
  Duration: 0:01:04.714110851
  Seekable: yes
  Live: no
  container: MPEG-2 Transport Stream
    unknown: meta/x-klv
    audio: MPEG-2 AAC
      Stream ID: b8cc9a4934c090599f66f9cfaafe0f433d249a18204856ece3313273331dc55f:1/00000101
      Language: <unknown>
      Channels: 2 (front-left, front-right)
      Sample rate: 48000
      Depth: 32
      Bitrate: 0
      Max bitrate: 0
    video: H.264 (Baseline Profile)
      Stream ID: b8cc9a4934c090599f66f9cfaafe0f433d249a18204856ece3313273331dc55f:1/00000100
      Width: 1920
      Height: 1080
      Depth: 24
      Frame rate: 30000/1001
      Pixel aspect ratio: 1/1
      Interlaced: false
      Bitrate: 0
      Max bitrate: 0

Why is gstreamer unable to recognize the klv stream in the original file?  How does ffmpeg copy operation change the file such that the klv stream is now detected by gstreamer?

Arturo



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel