播放多媒体文件.docx
《播放多媒体文件.docx》由会员分享,可在线阅读,更多相关《播放多媒体文件.docx(25页珍藏版)》请在冰点文库上搜索。
![播放多媒体文件.docx](https://file1.bingdoc.com/fileroot1/2023-5/19/31fe165e-8579-4ed6-a3c1-f7d54c93dfd2/31fe165e-8579-4ed6-a3c1-f7d54c93dfd21.gif)
播放多媒体文件
添加MP3的标签信息
usingSystem;
usingSystem.IO;
namespacemp3infons
{
classMP3Info
{
structMP3InfoStruct
{
publicstringMP3Flag;
publicstringTitle;
publicstringSinger;
publicstringAlbum;
publicstringYear;
publicstringComment;
}
privatestringMP3File;
MP3InfoStructmp3struct;
publicMP3Info(stringMP3Name)
{
MP3File=MP3Name;
mp3struct=newMP3InfoStruct();
}
publicboolreadMP3Info()
{
boolisSet=false;
byte[]b=newbyte[128];
try
{
FileStreamfs=newFileStream(MP3File,FileMode.Open);
fs.Seek(-128,SeekOrigin.End);
fs.Read(b,0,128);
mp3struct.MP3Flag=System.Text.Encoding.Default.GetString(b,0,3);
if(mp3struct.MP3Flag.CompareTo("TAG")==0)
{
//检查是否设置了标签
isSet=true;
mp3struct.Title=System.Text.Encoding.Default.GetString(b,3,30);
mp3struct.Singer=System.Text.Encoding.Default.GetString(b,33,30);
mp3struct.Album=System.Text.Encoding.Default.GetString(b,63,30);
mp3struct.Year=System.Text.Encoding.Default.GetString(b,93,4);
mp3struct.Comment=System.Text.Encoding.Default.GetString(b,97,30);
}
fs.Close();
}
catch(Exceptione)
{
System.Console.WriteLine(e.Message);
}
returnisSet;
}
publicvoidprintMP3Info()
{
System.Console.WriteLine("MP3附加信息:
");
System.Console.WriteLine("-----------------------------");
System.Console.WriteLine("标题:
"+mp3struct.Title);
System.Console.WriteLine("歌手:
"+mp3struct.Singer);
System.Console.WriteLine("唱片集:
"+mp3struct.Album);
System.Console.WriteLine("出版期:
"+mp3struct.Year);
System.Console.WriteLine("备 注:
"+mp3struct.Comment);
}
}
publicclassMainMP3
{
staticvoidMain(string[]args)
{
if(args.Length==1)
{
MP3Infomp3=newMP3Info(args[0]);
boolf=mp3.readMP3Info();
if(f)
{
mp3.printMP3Info();
}
else
{
System.Console.WriteLine("该MP3没有标注");
}
}
else
{
System.Console.WriteLine("参数不正确,只能跟一个参数");
}
}
}
}
播放MP3
C#没有提供播放MP3等音频文件的类,要编写播放MP3等音频文件程序,必须使用第三方控件或类。
本文使用API函数mciSendString,编写一个播放MP3等音频文件的类。
具体源码如下:
一、使用API函数mciSendString构成的媒体播放类。
程序代码
usingSystem;
usingSystem.Runtime.InteropServices;
usingSystem.Text;
usingSystem.IO;
namespaceclsMCIPlay
{
///
///clsMci的摘要说明。
///
publicclassclsMCI
{
publicclsMCI()
{
//
//TODO:
在此处添加构造函数逻辑
//
}
//定义API函数使用的字符串变量
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]
privatestringName="";
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
privatestringdurLength="";
[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]
privatestringTemStr="";
intilong;
//定义播放状态枚举变量
publicenumState
{
mPlaying=1,
mPuase=2,
mStop=3
};
//结构变量
publicstructstructMCI
{
publicboolbMut;
publicintiDur;
publicintiPos;
publicintiVol;
publicintiBal;
publicstringiName;
publicStatestate;
};
publicstructMCImc=newstructMCI();
//取得播放文件属性
publicstringFileName
{
get
{
returnmc.iName;
}
set
{
//ASCIIEncodingasc=newASCIIEncoding();
try
{
TemStr="";
TemStr=TemStr.PadLeft(127,Convert.ToChar(""));
Name=Name.PadLeft(260,Convert.ToChar(""));
mc.iName=value;
ilong=APIClass.GetShortPathName(mc.iName,Name,Name.Length);
Name=GetCurrPath(Name);
//Name="open"+Convert.ToChar(34)+Name+Convert.ToChar(34)+"aliasmedia";
Name="open"+Convert.ToChar(34)+Name+Convert.ToChar(34)+"aliasmedia";
ilong=APIClass.mciSendString("closeall",TemStr,TemStr.Length,0);
ilong=APIClass.mciSendString(Name,TemStr,TemStr.Length,0);
ilong=APIClass.mciSendString("setmediatimeformatmilliseconds",TemStr,TemStr.Length,0);
mc.state=State.mStop;
}
catch
{
MessageBox.Show("出错错误!
");
}
}
}
//播放
publicvoidplay()
{
TemStr="";
TemStr=TemStr.PadLeft(127,Convert.ToChar(""));
APIClass.mciSendString("playmedia",TemStr,TemStr.Length,0);
mc.state=State.mPlaying;
}
//停止
publicvoidStopT()
{
TemStr="";
TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
ilong=APIClass.mciSendString("closemedia",TemStr,128,0);
ilong=APIClass.mciSendString("closeall",TemStr,128,0);
mc.state=State.mStop;
}
publicvoidPuase()
{
TemStr="";
TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
ilong=APIClass.mciSendString("pausemedia",TemStr,TemStr.Length,0);
mc.state=State.mPuase;
}
privatestringGetCurrPath(stringname)
{
if(name.Length<1)return"";
name=name.Trim();
name=name.Substring(0,name.Length-1);
returnname;
}
//总时间
publicintDuration
{
get
{
durLength="";
durLength=durLength.PadLeft(128,Convert.ToChar(""));
APIClass.mciSendString("statusmedialength",durLength,durLength.Length,0);
durLength=durLength.Trim();
if(durLength=="")return0;
return(int)(Convert.ToDouble(durLength)/1000f);
}
}
//当前时间
publicintCurrentPosition
{
get
{
durLength="";
durLength=durLength.PadLeft(128,Convert.ToChar(""));
APIClass.mciSendString("statusmediaposition",durLength,durLength.Length,0);
mc.iPos=(int)(Convert.ToDouble(durLength)/1000f);
returnmc.iPos;
}
}
}
publicclassAPIClass
{
[DllImport("kernel32.dll",CharSet=CharSet.Auto)]
publicstaticexternintGetShortPathName(
stringlpszLongPath,
stringshortFile,
intcchBuffer
);
[DllImport("winmm.dll",EntryPoint="mciSendString",CharSet=CharSet.Auto)]
publicstaticexternintmciSendString(
stringlpstrCommand,
stringlpstrReturnString,
intuReturnLength,
inthwndCallback
);
}
}
播放视频
网页播放的视频代码
第一种是通过调用windowmediaplayer进行播放诸如:
wmv,asf等格式文件:
22d6f312-b0f6-11d0-94ab-0080c74c7e95height=320id=MediaPlayerwidth=356>
第二种是通过调用replayer进行播放诸如:
rm,ram等格式文件
播放框:
CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAheight=285id=RAOCXname=rmplaywidth=356>
";width="356"height="285">
控制框:
可紧跟播放框一起
CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAheight=27id=video1width=356>
第三种是通过调用flashplayer进行播放:
swf类的flash文档,分别如下:
D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="width="356"height=320>
type="application/x-shockwave-flash"width="356"height=320>
在线播放各种格式媒体
autostart="true"loop="true"width="200"height="150">
把这个网址.tw/Aboutmedia/warner/mtv/naying-021011_01v_120k.wmv换成你要看的电影就行了
有图像的rm格式:
CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'height=288id=video1width=305VIEWASTEXT>
无图像的rm格式:
如相声,歌曲。
。
。
CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA'>
//210.242.69.206/ramgen/broadcast/BCC/encoder/hipop.rm'>