当前位置:  开发笔记 > 编程语言 > 正文

如何确定C#中.wav文件的长度(即持续时间)?

如何解决《如何确定C#中.wav文件的长度(即持续时间)?》经验,为你挑选了3个好方法。

在未压缩的情况下,我知道我需要读取wav标头,拉出通道数,位数和采样率并从那里开始工作:(通道)*(位)*(样本/ s)*(秒) =(filesize)

有没有更简单的方法 - 一个免费的库,或者.net框架中的某些东西?

如果压缩.wav文件(例如使用mpeg编解码器),我该怎么做?



1> 小智..:

从http://naudio.codeplex.com/链接下载NAudio.dll

然后使用此功能

public static TimeSpan GetWavFileDuration(string fileName)       
{     
    WaveFileReader wf = new WaveFileReader(fileName);
    return wf.TotalTime; 
}

你会得到持续时间



2> Jan Zich..:

您可以考虑使用mciSendString(...)函数(为清晰起见,省略了错误检查):

using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Sound
{
    public static class SoundInfo
    {
        [DllImport("winmm.dll")]
        private static extern uint mciSendString(
            string command,
            StringBuilder returnValue,
            int returnLength,
            IntPtr winHandle);

        public static int GetSoundLength(string fileName)
        {
            StringBuilder lengthBuf = new StringBuilder(32);

            mciSendString(string.Format("open \"{0}\" type waveaudio alias wave", fileName), null, 0, IntPtr.Zero);
            mciSendString("status wave length", lengthBuf, lengthBuf.Capacity, IntPtr.Zero);
            mciSendString("close wave", null, 0, IntPtr.Zero);

            int length = 0;
            int.TryParse(lengthBuf.ToString(), out length);

            return length;
        }
    }
}



3> Josh Stodola..:

不要接受已经接受的答案,但我能够使用Microsoft.DirectX.AudioVideoPlayBack命名空间获得音频文件的持续时间(几种不同的格式,包括AC3,这是我当时需要的) .这是DirectX 9.0 for Managed Code的一部分.添加对它的引用使我的代码像这样简单......

Public Shared Function GetDuration(ByVal Path As String) As Integer
    If File.Exists(Path) Then
        Return CInt(New Audio(Path, False).Duration)
    Else
        Throw New FileNotFoundException("Audio File Not Found: " & Path)
    End If
End Function

而且它也很快!这是Audio类的参考.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有