获取mp3文件长度

2023-11-29

我目前正在尝试用 C# 编写一个音频播放器。我正在使用 BASS 库来处理播放音乐,但现在我在获取歌曲长度方面遇到了小问题。

好吧,我读过 BASS 文档并找到了一种方法: 我需要做的“所有”就是

int stream = Bass.BASS_StreamCreateFile(filepath,....);
int length = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream));

在大多数情况下,我都能得到有效的歌曲长度。问题就从这里开始了。据我所知,流创建操作非常昂贵(如果我弄错了,请纠正我)并且创建流只是为了获得歌曲的长度看起来有点愚蠢。

所以我的问题是:有没有其他方法可以在不创建蒸汽文件的情况下获得它(不是那么昂贵)。稍后我会考虑读取 id3 标签。创建该流是否是“无论如何都必须完成的邪恶”,即使我尝试使用其他库获取它,它也会做完全相同的事情?


您可以使用Microsoft.WindowsAPICodePack.Shell:

using Microsoft.WindowsAPICodePack.Shell;

然后像这样编码:

string file = "myfile.mp3"
ShellFile so = ShellFile.FromFilePath(file);
double 100nanoseconds;
double.TryParse(so.Properties.System.Media.Duration.Value.ToString(), out 100nanoseconds);

有一个代码项目也可以帮助你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取mp3文件长度 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 在Java中根据子字符串对字符串进行排序[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有一个字符串列表def123 abc999 zzz000 abc123 zzz111 我希望对列表进行排序 使得前三个字符按升序排序 后三个字符按降序排序 所以输出应该是abc999
  • 在另一个程序的窗口中查找按钮的句柄

    我需要一些帮助 我在最后写了我的问题 并首先解释我的代码到底应该做什么 我正在制作一个可以与其他程序通信的程序 我需要我的软件做的是能够单击另一个程序上的按钮 我相信执行此操作的适当代码是 SendMessage hWnd Msg wPar
  • Google Cloud Platform 外部 IP 指向新加坡的实例,但显示在美国

    我购买了一个 GCP 虚拟机实例亚洲 东南1并预留了一个外部IP为此在同一地区 GCP控制台中显示的实例和IP信息似乎没问题 但是当我将网站部署到其中时 响应非常慢 我的静态IP 虚拟机实例所以我查找我的 IP 工具显示我的 IP 来自美国
  • 不兼容的类型:java.lang.Object 无法转换为 T

    这是我的代码 package datastructures import java util Iterator public class Stack
  • 对于我的情况,如何在 Oracle 中编写 SQL?

    所以 这是表格 create table person id number name varchar2 50 create table injury place id number place varchar2 50 create tabl
  • 如何在 iOS 上获取音频音量级别和音量更改通知?

    我正在编写一个非常简单的应用程序 按下按钮时会播放声音 由于当设备设置为静音时该按钮没有多大意义 因此我想在设备的音量为零时禁用它 然后当音量再次调高时重新启用它 我正在寻找一种可行的 并且 AppStore 安全的 方法检测当前音量设置并
  • 了解 Web 身份验证上下文中的 JSON Web 令牌 (JWT)

    Web 客户端 服务器身份验证上下文中有关 JWT 的一些声明 JWT 对于中间人攻击并不安全 从安全角度来说 从客户端向服务器发送 JWT 相当于发送哈希密码 JWT 可以携带用户详细信息作为有效负载 使用这些数据而不访问数据库中的实际数
  • 在不规则形状内渲染 CoreText

    我正在寻找有关实现渲染视图的指导NSAttributedString在有孔的多边形内 包裹并重排文本以适应几何形状 它不是CoreText这就是问题所在 但是将不规则形状划分为有序的蹲矩形序列的一般问题 类似的问题尚未得到完全解答 如何在
  • 如何在React Route中传递id

    当我想从产品列表中按 ID 查看产品时 我想构建一个页面 在我的应用程序文件中 我有类似的内容
  • 使用 jQuery 获取边框样式

    我如何使用 jQuery 获得边框样式 以下内容不起作用 get click function var x div css borderStyle alert x Check http jsfiddle net s7YAN 31 alert
  • Mozilla 3.0.8 和 Chrome 高度错误解决方法

    我有一个textarea里面一个div div div
  • 使用大小写“透视”键|值表会返回空白列... mySQL

    我正在尝试将键 值格式的数据转换为每个条目一行 源数据库是 mysql 我知道我需要使用 Case 语句才能进行透视 并且遵循了该站点上的一些示例来构建我的查询 但是 我只返回一列数据 其余列中为空白 源表格式 user id meta k
  • 分配时的 JavaScript 评估顺序

    JavaScript 在什么时候确定赋值的左侧 是在评估右侧之前还是之后 例如 这段代码的作用是什么 var arr thing 1 thing 2 thing 3 last true arr arr length 1 newField a
  • 通过 PHP 或任何其他脚本创建电子邮件地址

    我需要为我的用户创建代理电子邮件地址 电子邮件地址将类似于 email protected 但最好我想要更好看的电子邮件地址 例如 email protected 发送到此地址的电子邮件应转发到用户不会暴露的真实电子邮件地址 例如 emai
  • 无法对数组类型调用 add

    我得到了一些需要修改的代码 这是一个囚徒困境游戏 最初玩家被设置了这段代码到一个数组中 IPDPlayer currentPlayers new RandomPlayer new TFTPlayer new TFTPlayer new TF
  • 如何在pyglet中连续播放音乐

    我和我的朋友正在开发一款游戏 我们希望音乐在游戏运 行时循环播放 求助 好像没有重复播放音乐的功能 在当前版本的 pyglet 中 您应该使用SourceGroup 设置loop归因于True 然后您可以将其排队到Player播放它 snd
  • javascript倒计时器暂停恢复

    起初 我的倒计时器没有暂停和恢复功能 并且计时器运行得很好 现在我刚刚添加了该功能 暂停没有问题 但恢复时间有问题 时间不会从当前位置开始显示 也不会从那里开始倒计时 如何更改我的代码 pause click function Get cu
  • Android 浮动操作按钮未返回到初始位置

    如果 FAB 浮动操作按钮 在小吃栏出现之前隐藏 在 CoordinatorLayout 中 那么下次我显示 FAB 时 它会在旧位置绘制 不会向下移动到原始位置 如果当小吃栏消失时 FAB 可见 则一切都按预期工作 我错过了什么还是一个错
  • “Set-AzureRmDataFactoryV2”未被识别为 cmdlet 的名称

    我已经在 Ubuntu 16 04 上安装了 Powershell 6 0 0 尝试使用 Powershell 创建 Azure 数据工厂时出现以下错误 Set AzureRmDataFactoryV2 The term Set Azure
  • 获取mp3文件长度

    我目前正在尝试用 C 编写一个音频播放器 我正在使用 BASS 库来处理播放音乐 但现在我在获取歌曲长度方面遇到了小问题 好吧 我读过 BASS 文档并找到了一种方法 我需要做的 所有 就是 int stream Bass BASS Str