随笔 - 59,  文章 - 1,  评论 - 0,  阅读 - 24152

如果不是特别熟悉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 on   $$X$$  阅读(826)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

点击右上角即可分享
微信分享提示