FFmpeg:获取视频Metadata信息(参考metadata.c)

如果不是特别熟悉C/C++,又要使用FFmpeg.API处理一些简单的音视频业务,那么可以使用org.bytedeco:ffmpeg-platform,下面记录一下使用ffmpeg-platform获取视频Metadata信息的方法。

使用FFmpeg.API获取Metadata信息比较简单,参考ffmpeg的metadata.c示例,实现代码如下:

public class Metadata {

    public static void main(String[] args) throws IOException {
        readMetadata("t.mp4");
    }

    public static void readMetadata(String input) throws IOException {
        AVFormatContext fmt_ctx = new AVFormatContext(null);
        AVDictionaryEntry tag = new AVDictionaryEntry(null);

        try {
            int ret = avformat.avformat_open_input(fmt_ctx, input, null, null);
            if (ret < 0) {
                throw new IOException(ret + ":avformat_open_input error");
            }

            ret = avformat.avformat_find_stream_info(fmt_ctx, (AVDictionary) null);
            if (ret < 0) {
                throw new IOException(ret + ":avformat_find_stream_info error");
            }

            // To iterate through all the dictionary entries, you can set the matching key
            // to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag.
            // ::av_dict_iterate::
            while (Objects
                    .nonNull(tag = avutil.av_dict_get(fmt_ctx.metadata(), "", tag, avutil.AV_DICT_IGNORE_SUFFIX))) {
                System.out.printf("%s=%s\n", tag.key().getString(), tag.value().getString());
            }
        } finally {
            avformat.avformat_close_input(fmt_ctx);
        }
    }
}

打印信息:

major_brand=isom
minor_version=512
compatible_brands=isomiso2mp41
encoder=Lavf59.27.100
posted @   HiIT青年  阅读(70)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示