关于得到歌曲总时间

sjq8522 2009-08-24 12:16:24
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
using System.Runtime.InteropServices; 
namespace _0
{
public partial class Form1 : Form
{// API 宣告  
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(
string lpstrCommand, string lpstrReturnString,
int uReturnLength, int hwndCallback); 
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}






 


private void button1_Click(object s, EventArgs e)  
{  
    MessageBox.Show(GetMediaLen(@"E:\MP3\bjbl.mp3").ToString() + " Sec");  



 


// 取得多媒體檔案長度  
private long GetMediaLen(string File)  
{  
    long RetVal = 0;  
    string key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\MCI Extensions";  
    RegistryKey RegKey = Registry.LocalMachine.OpenSubKey(key);
if (RegKey == null)
RegKey = Registry.LocalMachine.CreateSubKey(key);
    string FileExt = Path.GetExtension(File).Replace(".", "");  
    string tp = RegKey.GetValue(FileExt, "MPEGVideo").ToString();  
    RegKey.Close();  
 
    string tm = new string((char)0, 128);  
    if (mciSendString("open \"" + File + "\" type " + tp + " alias Media", null, 0, 0) == 0)  
        {  
        if (mciSendString("status Media length", tm, tm.Length, 0) == 0)  
        {  
            tm = tm.Trim((char)0);  
            if (!string.IsNullOrEmpty(tm)) RetVal = Convert.ToInt64(tm) / 1000;  
        }  
        mciSendString("close Media", null, 0, 0);  
   }  
    return RetVal;  

}
}
//大家好,上面的代码运行时没有提示错误,为什么得到的时间是0秒;麻烦大家一下,怎样修改才能得到歌曲的总时间;
...全文
251 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Error_Code 2009-08-24
  • 打赏
  • 举报
回复
AxWMPLib.AxWindowsMediaPlayer
currentMedia.duration:double; //媒体总长度
currentMedia.durationString:string; //字符串格式 如“03:24”

controls.currentPosition:double; //当前进度
controls.currentPositionString:string; //字符串格式 如“00:23”
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
请求高手帮忙
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
自己顶下
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
你好,对,是MediaPlayer,来的,微软自带的那个。那么就不可以是吗,还是要怎么改,还请赐教。
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
我以经用另外的方法解决了,谢谢楼上各位的帮忙,就等结贴了
moface 2009-08-24
  • 打赏
  • 举报
回复
帮顶
zgke 2009-08-24
  • 打赏
  • 举报
回复
你的MP3 不是MPEGVideo来播放的把.
redleafe 2009-08-24
  • 打赏
  • 举报
回复
呵呵,关注。
Jeff20040819 2009-08-24
  • 打赏
  • 举报
回复
UP
zhaoweiting0609 2009-08-24
  • 打赏
  • 举报
回复
关注一下
walkghost 2009-08-24
  • 打赏
  • 举报
回复
有没有好的办法来获取各种格式的视频文件的长度的?
zylsky 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sjq8522 的回复:]
你好,怎样load呀,我刚学c#,什么都不懂
[/Quote]双击窗体生成load事件
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
你好,怎样load呀,我刚学c#,什么都不懂
Error_Code 2009-08-24
  • 打赏
  • 举报
回复
你也可以不play 只load一下就能读出来
再不行 就二进制读.MP3文件 根据文件数据区大小/ ?kbps 得到时间
要找找MP3的编码格式
zgke 2009-08-24
  • 打赏
  • 举报
回复
先使用 capability c:\1.mp3 device type 获取到类型

然后再使用看看返回是什么类型的 然后用open打开
sjq8522 2009-08-24
  • 打赏
  • 举报
回复
你这样是要播放歌曲的,我要的是不要播放歌曲的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧