klv stream not detected

Arturo Flores arflobow at gmail.com
Thu Jun 25 02:42:36 UTC 2020


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

p.s., This is a follow up to this thread:
https://lists.freedesktop.org/archives/gstreamer-devel/2018-July/068698.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200624/0dcee6fa/attachment-0001.htm>


More information about the gstreamer-devel mailing list