mirror of
https://github.com/tuxbox-neutrino/libstb-hal.git
synced 2025-08-26 23:13:16 +02:00
79 lines
1.6 KiB
C
79 lines
1.6 KiB
C
/* konfetti
|
|
* gpl
|
|
* 2010
|
|
*
|
|
* example utitility to show metatags with ffmpeg.
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include <libavutil/avutil.h>
|
|
#include <libavformat/avformat.h>
|
|
|
|
static AVFormatContext* avContext = NULL;
|
|
|
|
void dump_metadata()
|
|
{
|
|
AVDictionaryEntry *tag = NULL;
|
|
while ((tag = av_dict_get(avContext->metadata, "", tag, AV_DICT_IGNORE_SUFFIX)))
|
|
printf("%s: %s\n", tag->key, tag->value);
|
|
}
|
|
|
|
|
|
int main(int argc,char* argv[])
|
|
{
|
|
char file[255] = {""};
|
|
int err, i;
|
|
|
|
if (argc < 2)
|
|
{
|
|
printf("give me a filename please\n");
|
|
return -1;
|
|
}
|
|
|
|
if (strstr(argv[1], "://") == NULL)
|
|
{
|
|
strcpy(file, "file://");
|
|
}
|
|
|
|
strcat(file, argv[1]);
|
|
|
|
av_register_all();
|
|
|
|
if ((err = avformat_open_input(&avContext, file, NULL, 0)) != 0) {
|
|
char error[512];
|
|
|
|
printf("avformat_open_input failed %d (%s)\n", err, file);
|
|
av_strerror(err, error, 512);
|
|
printf("Cause: %s\n", error);
|
|
|
|
return -1;
|
|
}
|
|
|
|
if (av_find_stream_info(avContext) < 0)
|
|
{
|
|
printf("Error av_find_stream_info\n");
|
|
}
|
|
|
|
printf("\n***\n");
|
|
dump_metadata();
|
|
|
|
printf("\nstream specific metadata:\n");
|
|
for (i = 0; i < avContext->nb_streams; i++)
|
|
{
|
|
AVStream* stream = avContext->streams[i];
|
|
|
|
if (stream)
|
|
{
|
|
AVDictionaryEntry *tag = NULL;
|
|
if (stream->metadata != NULL)
|
|
while ((tag = av_dict_get(stream->metadata, "", tag, AV_DICT_IGNORE_SUFFIX)))
|
|
printf("%s: %s\n", tag->key, tag->value);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|