[Libav-user] EXTERNAL: Re: AV_CODEC_ID_SMPTE_KLV not recognized

Sears, Zachary zachary.sears at lmco.com
Wed Aug 13 19:43:30 CEST 2014

Thanks for the quick reply, I started down that path and do have code that generates valid TS packets with KLV data, from what you're saying it sounds like that was the right path to take.  I guess the problem that I keep getting hung up on after that is how to create the additional stream to have a type of AVMEDIA_TYPE_VIDEO and at least an id of AV_CODEC_ID_SMPTE_KLV, from the output of ffprobe it certainly seems like this is recognized by ffmpeg but I can't figure out how to do it.  For the video stream at least I do avformat_new_stream(avFormatContext, avCodec), but since there is no codec for the KLV data (NULL is returned from avcodec_find_encoder), I guess I am a little confused on how to get to that point.  The end that I need to find eventually is getting down to av_interleaved_write_frame where the AVFormatContext has a valid data stream.

-----Original Message-----
From: libav-user-bounces at ffmpeg.org [mailto:libav-user-bounces at ffmpeg.org] On Behalf Of wm4
Sent: Wednesday, August 13, 2014 10:08 AM
To: libav-user at ffmpeg.org
Subject: EXTERNAL: Re: [Libav-user] AV_CODEC_ID_SMPTE_KLV not recognized

On Wed, 13 Aug 2014 15:53:33 +0000
"Sears, Zachary" <zachary.sears at lmco.com> wrote:

> Hello,
> I am trying to create an application that can add a KLV data stream into an MPEG-TS stream.  I started with the muxing.C example and have everything working as far as creating a valid MPEG-TS video, but when I try and include the KLV stream the encoder can't be found.  In particular it is failing when I try AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_SMPTE_KLV), it returns with a failure to open the encoder.  When I add the video stream the codec id is AV_CODEC_ID_MPEG2VIDEO which it finds perfectly fine and everything works just fine.  I am using ffmpeg 2.1.4.
> I also have a known good sample video that has KLV metadata in it and when I try to use ffprobe on that video it finds both streams but returns with "Unsupported codec with id 1263294017 for input stream 1" where input stream 1 is the KLV stream.  Could it just be that I missed a flag at compile time, or simply need a newer version of FFMPEG?
> Thanks for any help

I have no idea what KLV is, but looking at the source, it seems KLV is supported for demuxing and muxing (in libavformat), but there are no encoders or decoders. I assume this means you have to interpret/generate KLV data yourself.
Libav-user mailing list
Libav-user at ffmpeg.org

More information about the Libav-user mailing list