我正在try 使用C#/.NET中的Mediainfo库(DLL v23.09)从媒体文件(不限于,但特别是音频文件)中提取封面艺术(或多个存在的片段).官方的DLL库下载包括一个包装类,用于从C#/.NET内部调用函数调用.

我try 了以下方法,但不起作用:

MediaInfo mi = new MediaInfo();
mi.Open(filePath);
mi.Option("Complete"); // Same result even with mi.Option("Complete", "1");
string base64data = mi.Get(StreamKind.General, 0, "Cover_Data"); // Same result also with stream ID = 1 or 2 for example

它应该将封面艺术作为Base64编码的string返回,但返回的流是空的.

顺便说一句,用:mi.Get(StreamKind.General, 0, "Cover")查询容器中现有的封面图片实际上返回"是/是",这是正确的,因为文件(mpeg-4/m4a)确实包含两个嵌入的封面.

你有什么办法让这件事奏效吗?

推荐答案

Mediainfo默认不提供封面数据(体量庞大,使用人数不多),需要增加一个选项:

mi.Option("Cover_Data", "base64"); 

在打开文件之前.

热罗姆,Mediainfo的开发商.

Csharp相关问答推荐

如何在Visual Studio中为C# spread操作符设置格式规则?

一种安全的方式来存储SSH凭证(MAUI/C#应用程序)

图形API基于appid列表检索多个应用程序

如何测量在使用UTF8而不是C#中的UTF16编码字符串时内存使用量的增长

在.NET核心项目中创建Startup.cs比在Program.cs中注册服务好吗?

如何使用MoQ模拟Resources GroupCollection?

如何使用自定义负载均衡器管理Ocelot负载均衡器中的多线程和批读取

Docker Container中的HttpRequest后地址不可用

每个http请求需要60秒,为什么?

Regex字母数字校验

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

在扩展方法中,IEnumerable<;T>;不会转换为IEumerable<;T&>

无法向Unity注册Microsoft Logger

ASP.NET核心8:app.UseStaticFiles()管道执行顺序

C#中COM对象的实际地址

为什么我的属性即使没有显式地设置任何[必需]属性,也会显示验证?

使用postman 测试配置了身份的.NET 6应用程序

如何保存具有多个重叠图片框的图片框?

如何在C#中反序列化Java持续时间?

分别切换用于读取和写入的EF核心日志(log)