提问人:Omid.N 提问时间:9/21/2023 最后编辑:πάντα ῥεῖOmid.N 更新时间:9/21/2023 访问量:54
如何使用 FFmpeg-libav 从 mp3 中提取 ID3 标签
How to extract ID3 tags from mp3 using FFmpeg-libav
问:
有没有办法使用 ffmpeg-libav 提取 ID3 标签? 我已经尝试了下面的代码,但它没有提取任何东西:
fun extractMetadata(mp3FilePath: String) {
avformat.av_register_all()
val formatContext = AVFormatContext(null)
if (avformat.avformat_open_input(formatContext, mp3FilePath, null, null) < 0) {
println("Failed to open input file")
return
}
if (avformat.avformat_find_stream_info(formatContext, null) < 0) {
println("Failed to retrieve stream information")
avformat.avformat_close_input(formatContext)
return
}
var metadataEntry: AVDictionaryEntry? = null
while (true) {
metadataEntry = avformat.av_dict_get(formatContext.metadata, "", metadataEntry, avformat.AV_DICT_IGNORE_SUFFIX)
if (metadataEntry == null) {
break
}
val key = metadataEntry.key().getString()
val value = metadataEntry.value().getString()
println("Key: $key, Value: $value")
}
avformat.avformat_close_input(formatContext)
}
顺便说一句,这段代码是用 Kotlin 编写的,并使用 lib,它是 libav 的包装器。您可以给我 C++ 代码,我将能够轻松地将其转换为 kotlin 代码。org.bytedecoe.ffmpeg-platform
答: 暂无答案
评论
av_dict_get
av_dict_iterate
av_dict_get
av_register_all()
在 ffmpeg 4 中被弃用,所以我想你可能使用的是非常旧的 ffmpeg。