播放器源文件

合集下载

Android开发—SeeJoPlayer视频播放器源码解析

Android开发—SeeJoPlayer视频播放器源码解析

2020.03.27 v1.2.0 beta版:更新说明:一、完美支持android1.五、android1.六、android2.0、android2.0一、android2.1平台;2、完美支持320×480、480×800、480×854等各类分辨率(自适应屏幕分辨率);3、支持在线音视频播放,支持URL input和从浏览器调用SeeJoPlayer播放器播放在线音视频;4、自动转为横屏播放,为用户提供更好的观看体验;5、修改了没有SD卡程序出错的Bug;6、美化了视频播放列表和操作说明的界面。

第一部份:功能介绍SeeJoPlayer的优势要紧在相对还算美观的界面和便利的交互操作上。

先说操作吧,它支持:一、全屏切换: 双击屏幕二、播放/暂停: 长按屏幕3、静音/恢复: 长按音量按钮4、播放列表: 操纵面板最右边的按钮(暂不支持编辑功能)五、音量调剂: 单击音量按钮,在弹出的音量显示区域触摸改变音量这些操作和PC上的播放器较为类似,希望大伙儿能用得适应。

至于界面的话,多说无益,直接上图吧:第二部份:源码解析一、VideoView与视频比例缩放:咱们能够很方便的取得VideoView的源代码,最简单的方式是直接在上找“.java”。

因此重写VideoView的进程其实只是在原先的基础上进行一些修改罢了,并非一个很麻烦的工作。

什么缘故Android自带的VideoView会维持视频的长宽比而不能让咱们很方便的自概念比例呢?我猜想可能Google 做Android也是一个很仓促的工程,许多代码并无考虑得太成熟。

VideoView的源码中有如此一段代码:1 @Override2 3 4 5 6 7 8 9101112131415161718192021222324252627protectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec){//Log.i("@@@@", "onMeasure");int width = getDefaultSize(mVideoWidth, widthMeasureSpec);int height = getDefaultSize(mVideoHeight, heightMeasureSpec);if(mVideoWidth >0&& mVideoHeight >0){if( mVideoWidth * height > width * mVideoHeight ){//Log.i("@@@", "image too tall, correcting");height = width * mVideoHeight / mVideoWidth;}elseif( mVideoWidth * height < width * mVideoHeight ){//Log.i("@@@", "image too wide, correcting");width = height * mVideoWidth / mVideoHeight;}else{//Log.i("@@@", "aspect ratio is correct: " +//width+"/"+height+"="+//mVideoWidth+"/"+mVideoHeight);}}//Log.i("@@@@@@@@@@", "setting size: " + width + 'x' + height); setMeasuredDimension(width, height);}这确实是什么缘故长宽比不能改变的缘故了。

查看源文件法

查看源文件法

现在网上的影院非常丰富,但是许多新片都只提供在线观看而不允许用户下载,而由于种种原因,网速又得不到保障,看起来断断续续地,非常影响心情。

经过我的一番探索,终于找出几种可以得到在线视频文件的真实地址的方法。

一、查看源文件法一些网站把视频文件直接内嵌在网页式播放器中,虽然没有“点击下载”地链接,但只要你查看一下网页的源文件,其真实地址就一览无余了,具体方法,打开网页后,点击IE菜单的“查看—源文件”,系统即用记事本打开了该网页的源文件,按Ctrl-F,查找“.rm”(或者“.rmvb”、“.avi”、“.mpeg”、“.wmv”等视频文件的扩展名),即可得到其下载地址,注意,也有,这个地址可能是相对地址(图1),这时候,还需要将该网站的网址加在前面,才是完整的地址。

得到真实地址后,把它复制下来,用Flashget下载就行了。

但是,有些时候,播放窗口往往是一个弹出窗口,没有IE菜单和工具条,怎么查看其源文件呢?这里也有一个小窍门,在播放窗口为当前活动窗口的前提下,按快捷键“Ctrl-N”即可将此窗口最大化,同时,也会出现菜单和工具栏,你当然也就可以查看源文件了。

(图1)查看源地址二、查看“属性”法有时,网站会采用ASP或java scrip语言加密视频文件的真实地址,真实地址储存到数据库里,此时,采用查看源文件法就无能为力了。

但如果此影片的格式为WMV或MPEG 等默认为Windows Media Player打开的文件,那么恭喜你,你只需用鼠标右键点击播放画面,调出右键菜单,然后点击“属性”,即可在属性中查看到真实的地址了(图2)。

(图2)找到真实地址三、巧用realplayer的收藏夹如果该视频文件是rm或rmvb格式的话,则第二种方式就不能奏效了,不过方法总是比困难多。

影片开始播放后,在播放画面是右击鼠标,选择“play with realplayer (用realplayer播放)”,调出realplayer播放器,在播放器的菜单上点“Favorites-Add Clip to Favorites…”,(图3)即可把当前正在播放的视频文件添加到了收藏夹,然后再点“Favorites-Manage Favorites(整理收藏夹)”,用资源管理器就打开了Realplayer 的收藏夹目录,找到刚才收藏的电影的快捷方式,用鼠标右击,选择“属性”,即可看到如图4的窗口,去除播放器的路径及参数外,正是视频文件的下载地址!快把它复制到剪贴板,用Flashget下载吧。

音乐播放器功能介绍

音乐播放器功能介绍

音乐播放器功能介绍随着科技的不断发展,音乐播放器已成为我们日常生活中不可或缺的一部分。

它为我们提供了便捷的音乐欣赏体验,让我们可以随时随地享受美妙的音乐。

本文将介绍音乐播放器的主要功能,带您一起探索音乐世界的精彩。

一、音频格式支持优秀的音乐播放器应当具备对多种音频格式的支持,以便用户可以播放各种来源的音乐文件。

常见的音频格式包括MP3、WAV、FLAC 等,而一款功能全面的音乐播放器应当能够无缝解码这些格式的音频文件,确保音质的高保真。

二、播放列表管理播放列表是音乐播放器中的重要组成部分,它们可以帮助用户按照自己的喜好将音乐整理和分类。

优秀的音乐播放器应当提供强大的播放列表管理功能,可以方便地创建、编辑和删除播放列表,同时支持将歌曲拖放到指定的列表中。

三、歌曲搜索和分类对于拥有大量音乐的用户而言,快速找到所需歌曲是一个重要的需求。

良好的音乐播放器应当提供智能的歌曲搜索功能,用户可以根据歌曲名、艺术家、专辑等信息快速定位到想要播放的音乐。

此外,好的播放器还能根据不同的分类标准(例如歌曲风格、年代等)帮助用户进行音乐分类和浏览。

四、音效调节音效调节是音乐播放器中不可或缺的一项功能。

用户可以通过调节音量、音调、均衡器等参数来获得更加理想的音乐听感。

一款优秀的音乐播放器应当提供丰富的音效调节选项,并且能够对不同的音频文件进行智能适配,使得音乐听起来更加舒适和真实。

五、歌词显示对于喜欢单词唱功和赏析歌曲内涵的用户而言,歌词显示功能非常重要。

一款出色的音乐播放器应当能够自动搜索并显示歌曲的歌词,让用户在欣赏音乐的同时能够跟随歌词进行歌唱或理解歌曲。

同时,在显示歌词的同时能够提供多语言翻译和动感歌词效果,为用户营造更加丰富的视听体验。

六、在线音乐服务随着网络的普及,越来越多的音乐播放器开始提供在线音乐服务。

这些服务包括在线播放、下载、推荐等,用户可以通过音乐播放器直接访问和享受大量音乐资源。

一款出色的音乐播放器应当能够整合多种在线音乐服务,为用户提供更加便捷和多样化的音乐欣赏方式。

VB用MMcontrol控件的播放器源码3

VB用MMcontrol控件的播放器源码3
''显示播放文件总数
End Sub
Private Sub Timer1_Timer()
'进度条的Max和Value值
ProgressBar1.Max = MaxVal
ProgressBar1.Value = MMControl1.Position
End Sub
Private Sub PlayNext() '播放下一首
.Command = "play"
End With
MaxVal = MMControl1.Length
Timer1.Enabled = True
Me.Caption = List1.List(MyInd) '显示正在播放的文件名称
ProgressBar1.ToolTipText = "播放总数:" %26amp; List1.ListCount %26amp; "首"
Private Sub cmdNext_Click() '“下一首”按钮代码
PlayNext
List1.SetFocus '让按钮好看点,下同
End Sub
Private Sub cmdPause_Click() '“暂停”按钮代码
mand = "Pause"
mand = "Play"
Else
Call PlayMe '交给PlayMe处理
End If
End Sub
Private Sub cmdExit_Click() '“退出”按钮代码
mand = "close" '关闭以释放资源

如何查找音乐源地址

如何查找音乐源地址

如何查找音乐源地址经常在论坛看到朋友们听到喜欢的音乐时问能提供下载地址吗?如何找到音乐链接地址,面对这些问题,今天我从网上看到比较全面的几种方法,淘来希望可以用到。

要查找音乐源文件(也有叫绝对地址)就要知道各种音乐文件的后缀名,flash后缀名是.swf ;mp3音乐文件的是.mp3 ;rm音乐文件是.rm ;用Media Player播放的wma文件的后缀是.wma ;而视频文件通常是.asf和.ram还有.rpm以及.mgp等但不多见,MV即通常说的MTV,它常见的后缀名是.asf .wmv .ram 。

记住这些很重要。

方法一:直接点击播放器查看分三种情况:A、针对media播放器,右键点击播放器,查看“属性”,即为歌曲的真实地址(url);B、针对real播放器,右键-在realplayer中播放,就转到了本地的播放器real了,再点播放器上的“文件”-剪辑属性-查看剪辑信息的文件名里就可以看到想找的歌曲地址了。

C、针对FLASH播放器,如果播放器下方有“全屏播放”。

直接点击全屏播放,在浏览器地址栏里出现的便是FLASH的网址。

方法二:利用下载工具用网际快车(或DUDU、讯雷等)下载歌曲时,出现在菜单里的网址就是音乐源地址。

先复制下来,再点击确定,如果能下载,说明链接有效,此地址可用。

方法三:利用源文件查找针对上面情况,如果点击右键没反应,或者flash没有“全屏播放”时,可以在浏览器的菜单栏点“查看”,再点“源文件”(也可以用鼠标右键点该页面的空白处,再左键点查看源文件)后出现记事本,点“编辑”中的“查找”。

在查找拦中输入该音乐的后缀名,如mp3、rm、ram或wma,如果是FLASH请输入swf(如果不能确定后缀名,可多试几次),并把鼠标光标放在记事本的最上面,按“确定”后,会出现一个目标,但这不一定是我们要找的,我们需要的歌曲地址必须是以http://开头,以歌曲的后缀名结束。

如果没有找到,请点击“查找下一个”继续,直到找到为止。

FAT32文件系统实现单片机MP3播放器 源代码

FAT32文件系统实现单片机MP3播放器 源代码

/* FAT32初始化时初始参数装入如下结构体中 */ struct FAT32_Init_Arg { unsigned char BPB_Sector_No; //BPB所在扇区号 unsigned long Total_Size; //磁盘的总容量 unsigned long FirstDirClust; //根目录的开始簇 unsigned long FirstDataSector; //文件数据开始扇区号 unsigned int BytesPerSector; //每个扇区的字节数 unsigned int FATsectors; //FAT表所占扇区数 unsigned int SectorsPerClust; //每簇的扇区数
return temp; } unsigned long FAT32_FindBPB() //寻找BPB所在的扇区号 { MMC_Init(); //SD卡初始化 FAT32_ReadSector(0,FAT32_Buffer); if(FAT32_Buffer[0]!=0xeb) return lb2bb(((((struct PartSector *)(FAT32_Buffer))->Part[0]).StartLBA),4); else return 0; } unsigned long FAT32_Get_Total_Size() //存储器的总容量,单位为M { MMC_Init(); //SD卡初始化 FAT32_ReadSector(Init_Arg.BPB_Sector_No,FAT32_Buffer); return ((float)(lb2bb((((struct FAT32_BPB *)(FAT32_Buffer))>BPB_TotSec32),4)))*0.0004883; } void FAT32_Init(struct FAT32_Init_Arg *arg) { struct FAT32_BPB *bpb; bpb=(struct FAT32_BPB *)(FAT32_Buffer); //将数据缓冲区指针转 为struct FAT32_BPB 型指针 arg->BPB_Sector_No =FAT32_FindBPB(); //FAT32_FindBPB()可以返回BPB所在的扇区号 arg->Total_Size =FAT32_Get_Total_Size(); //FAT32_Get_Total_Size()可以返回磁盘的总容量,单位是兆 arg->FATsectors =lb2bb((bpb->BPB_FATSz32) ,4); //装入FAT表 占用的扇区数到FATsectors中 arg->FirstDirClust =lb2bb((bpb->BPB_RootClus) ,4); //装入根目录簇 号到FirstDirClust中 arg->BytesPerSector =lb2bb((bpb->BPB_BytesPerSec),2); //装入每扇区 字节数到BytesPerSector中

基于mfc音乐播放器的设计与实现(含源文件)

基于mfc音乐播放器的设计与实现(含源文件)

毕业设计(论文)题目音乐播放系统设计专业信息与计算科学年级 2009级1班学号xxxxxxxxxx姓名xxxxx指导教师xx完成时间:目录摘要 (I)Abstract ..........................................................................................................I I 1 前言 (1)1.1软件开发背景及意义 (1)1.2发展现状及趋势 (1)1.3主要研究方法及过程 (2)2 相关技术简介 (2)2.1 VC技术应用的基本现状 (2)2.2 MCI命令接口编程 (2)2.2.1 MCI命令 (3)2.2.2 MCI命令消息接口方式 (4)2.2.3 MCI命令字符串接口方式 (7)3需求分析 (8)3.1功能需求 (8)3.1.1 播放器的基本控制需求 (8)3.1.2功能需求分析 (8)3.2 运行及其它需求分析 (9)3.3 可行性分析 (9)4 软件结构及界面设计 (10)4.1软件结构设计 (10)4.2 GUI界面设计 (10)5详细设计 (11)5.1文件菜单下的详细设计 (11)5.1.1打开文件设计 (11)5.1.2 打开文件夹设计 (13)5.2播放音乐的详细设计 (13)5.3播放列表的详细设计 (14)5.4歌词显示的详细设计 (15)5.5播放器优化的详细设计 (15)6结论 (17)参考文献 (18)致谢 (19)摘要音乐是一种声音符号,表达人的思想感情。

是人们思想的载体之一。

音乐是有目的和内涵的,其中隐含了作者的生活体验,思想情怀。

一款好的pc音乐播放器不仅能够提供好的音乐播放效果,更能够为用户提供方便的操作。

本设计利用C语言和Visual C++ 编辑工具对播放器进行编写。

同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能与一体,性能良好。

VB用MMcontrol控件的播放器源码2

VB用MMcontrol控件的播放器源码2
Next
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
Adodc1.Recordset.MoveNext
Loop
MSFlexGrid1.ColWidth(0) = 400
MSFlexGrid1.ColWidth(3) = 400
MSFlexGrid1.ColWidth(6) = 400
Do While Not Adodc1.Recordset.EOF
ComboProduct.AddItem Adodc1.Recordset.Fields(0), 0
Adodc1.Recordset.MoveNext
Loop
TextAnalyser.Text = User
TextDate.Text = Date
If MSFlexGrid1.Row > 5 Then j = j + 3: MSFlexGrid1.Row = 0
MSFlexGrid1.Col = j
For i = 1 To 3
MSFlexGrid1.Text = Adodc1.Recordset.Fields(i - 1)
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
TextWorkTime.Enabled = False
mand = "pause"
MMControl1.PauseEnabled = False
Command2.Enabled = False
End Sub
Private Sub Command4_Click()
mand = "open"

FFMPEG教程03指导3播放声音

FFMPEG教程03指导3播放声音

FFMPEG教程03指导3播放声音FFmpeg是一款功能强大的多媒体处理工具,它不仅可以处理视频,还可以处理音频。

本篇教程将带领你学习如何通过FFmpeg播放声音。

1.播放本地音频文件首先,你需要有一个本地音频文件作为播放源。

假设你的音频文件名为audio.mp3FFmpeg的命令格式如下:```bashffmpeg -i input.mp3 output.wav```其中,`input.mp3`为输入音频文件,`output.wav`为输出音频文件。

运行上述命令后,FFmpeg会将音频文件从MP3格式转换为WAV格式。

2.播放音频文件转换音频格式后,你可以使用FFmpeg播放音频文件。

命令如下:```bashffplay output.wav```其中,`output.wav`为输出音频文件。

运行上述命令后,FFmpeg将会自动打开一个播放器窗口播放音频文件。

3.调整音频播放速度通过FFmpeg,你还可以调整音频的播放速度。

命令如下:```bashffmpeg -i input.wav -filter:a "atempo=2.0" output.wav```其中`input.wav`为输入音频文件,`output.wav`为输出音频文件。

运行上述命令后,FFmpeg将会将音频文件的播放速度调整为原来的两倍。

4.指定音频播放时长有时候,你可能只想播放音频文件的一部分内容。

通过FFmpeg,你可以指定音频播放的时长。

命令如下:```bashffmpeg -t 10 -i input.wav output.wav```其中`-t 10`表示播放时长为10秒,`input.wav`为输入音频文件,`output.wav`为输出音频文件。

运行上述命令后,FFmpeg将会播放音频文件的前10秒内容。

5.叠加音频播放通过FFmpeg,你还可以将多个音频叠加播放。

命令如下:```bash```其中,`input1.wav`和`input2.wav`为输入音频文件,`output.wav`为输出音频文件。

音乐播放器源代码

音乐播放器源代码

P align=center><TABLE borderColor=#4f3256 align=centerbackground=/zh_cn/home4u/sucai/gifanimation/line/0022.gifborder=1><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"> <P align=center><EMBED src=width=369 height=39type=audio/mpeg loop="-1" autostart="ture"volume="0"></P></TD></TR></TBODY></TABLE></P>autostart="true"中true或1表示自动播放,false或0表示手动播放loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器EnableContextMenu="0" 禁右键ShowStatusBar="1" (带显示文件播放信息)=======================================================隐藏(hidden=true)播放器(不循环)<EMBED src=音乐网址hidden=true type=audio/x-ms-wma AUTOSTART="1">-----------------------------------------------------------隐藏(hidden=true)播放器(循环)<EMBED src=音乐网址hidden=true type=audio/mpeg AUTOSTART="1" loop="-1"> ---------------------------------------------------------------黑色[style="FILTER: xray()"]循环[loop="-1"]播放器<EMBED style="FILTER: xray()" src=音乐网址width=360 height=30type=audio/mpeg volume="0" autostart="true" loop="-1">--------------------------------------------------------------------------------浅兰色循环(loop="-1")播放器<EMBED src=音乐网址width=300 height=45 type=audio/mpeg loop="-1"autostart="true" volume="0">--------------------------------------------------------------------------掩饰自动播放器<TABLE style="FILTER: Alpha(Opacity=100, FinishOpacity=0, Style=2, StartX=20, StartY=40, FinishX=0, FinishY=0)gray(); WIDTH: 200px; HEIGHT: 83px"><TBODY><TR><TD><EMBED src=音乐网址width=200 height=40 type=audio/mpeg panel="0" autostart="true" loop="true"></TD></TR></TBODY></TABLE>-------------------------------------连播放时选择曲目的播放器<EMBEDpluginspage=/windows/mediaplayer/download/default.as p width=400 height=172 type=application/x-mplay er2 FileName="音乐网址" SHOWCONTROLS="1" SHOWSTATUSBAR="1" SHOWDISPLAY="1" SHOWGOTOBAR="1" AUTOSTART="true" PlayCount="1">----------------------------------------------------------------------------------------------显示曲名的黑色带彩自动播放器<EMBED style="FILTER: invert()" src=音乐网址width=320 height=45type=audio/x-ms-wma ShowStatusBar="1" loop="true" autostart="true">-------------------------------------------------------------------------显示曲名的灰白色面板<EMBED style="FILTER: Gray()" src="链接地址" width=300 height=69type=application/x-mplayer2 loop="-1" showcontrols="1" ShowDisplay="0" ShowStatusBar="1" autostart="1"></EMBED>------------------------------------------灰白面板<embed style="FILTER: Gray()" src=链接地址width=300 height=45 loop="-1" autostart="true"></EMBED>---------------------------------------------------------------(带显示文件播放信息)<EMBED src="链接地址" width=300 height=69 type=application/x-mplay er2loop="-1" showcontrols="1" ShowDisplay="0" ShowStatusBar="1"autostart="1"></EMBED>-----------------------------------------------黑色带彩棕色面板<EMBED style="FILTER: invert()" src=链接地址width=300 height=45 loop="-1" autostart="true"></EMBED>---------------------------------------------------------------------浅紫播放器<TABLE borderColor=#4F3256background=/DownloadImg/2010/09/0718/5119955_3.jpg border=1><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=300 height=25 type=audio/mpeg loop="-1" autostart="false" volume="0"></P></TD></TR></TBODY></TABLE>----------------------------------------------------------------------------------------------粉色<TABLE borderColor=navybackground=/UploadFile/2005-9/200592522275884778.jpg border=0><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=300 height=45 type=audio/mpeg loop="-1" autostart="0" volume="0"></P></TD></TR></TBODY></TABLE>------------------------------------------------------------------------------------黄色闪光<TABLE style="BORDER-RIGHT: #000000 3px dashed; BORDER-TOP: #000000 3px dashed; BORDER-LEFT: #000000 3px dashed; BORDER-BOTTOM: #000000 3px dashed" cellSpacing=0 cellPadding=0 bgColor=#00000><TBODY><TR><TD><TABLE borderColor=navybackground=/s-helpSite/domName/nxm/20041114123131568.gi f border=0><TBODY><TR><TD style="FILTER: alpha(opacity=50,style=3)"><P align=center><EMBED src=音乐网址width=400 height=35 type=audio/mpeg loop="-1" autostart="0" loop="-1"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>--------------------------------------------------------------------------------蓝色闪光<TABLE borderColor=#dee4fe cellSpacing=3 cellPadding=0background=/UploadFile/2004-12/2004123023101352.gif border=2><TBODY><TR><TD><TABLE align=center border=0><TBODY><TR><TD style="FILTER: alpha(opacity=60,style=3)"><P align=center><EMBED style="FILTER: Gray" src=音乐网址width=400 height=35 type=audio/mpeg volume="0" autostart="false" loop="-1"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-------------------------------------------------------------------------花边黑色<TABLE style="BORDER-RIGHT: #000000 3px dashed; BORDER-TOP: #000000 3px dashed; BORDER-LEFT: #000000 3px dashed; BORDER-BOTTOM: #000000 3px dashed" cellSpacing=0 cellPadding=0 bgColor=#00000><TBODY><TR><TD><TABLE borderColor=#000000 align=center border=1><TBODY><TR><TD><P align=center><EMBED style="FILTER: Xray" src=音乐网址width=400 height=35 type=audio/mpeg volume="0" autostart="false" loop="-0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-----------------------------------------------------------------------------------------------------粉色花边<TABLE style="BORDER-RIGHT: #ff69b4 3px dotted; BORDER-TOP: #ff69b4 3px dotted; BORDER-LEFT: #ff69b4 3px dotted; BORDER-BOTTOM: #ff69b4 3px dotted" cellSpacing=0 cellPadding=0 align=center bgColor=white><TBODY><TR><TD><TABLE borderColor=#ff69b4 align=center bgColor=#ffccf5 border=2><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"><P align=center><EMBED src=音乐网址width=300 height=25 type=audio/mpeg volume="0" autostart="false" loop="-0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>-------------------------------------------------------------------------------------------禁右键播放器<EMBED style="BORDER-RIGHT: silver 1px solid; BORDER-TOP: silver 1px solid; BORDER-LEFT: silver 1px solid; BORDER-BOTTOM: silver 1px solid" src=音乐网址width=200 height=40 type=audio/x-mplayer2 console="video" showstatusbar="0" EnableContextMenu="0" volume="0" autostart="0" loop="-1">---------------------------------------------------------------------------------上下移动<MARQUEE style="LEFT: 230px; ; TOP: 300px" scrollAmount=1 scrollDelay=200 direction=up behavior=alternate width=300 height=400><br><MARQUEE scrollAmount=1 scrollDelay=100 behavior=alternate><br><TABLE style="FILTER: progid:DXImageTransform.Microsoft.Shadow(color:#7ec0ee ,direction:145,strengt h:20)" cellSpacing=0 cellPadding=0 border=1><br><TBODY><br><TR><br><TD><EMBED style="FILTER: gray()" src=音乐网址width=200 height=20type=audio/mpeg showstatusbar="1" volume="0" loop="-1" autostart="1"></TD></TR></TBODY></TABLE></MARQUEE></MARQUEE>-------------------------------------------------------------------(显示文件标签信息)蓝色<DIV><EMBED src="链接地址" loop="-1" width=300 height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true" autostart="true" animationatstart="true" transparentatstart="true"></EMBED></div>--------------------------------------------------(显示文件标签信息)灰白<DIV><EMBED style="FILTER: Gray()" src="链接地址" loop="-1" width=300height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>----------------------------------------------------(显示文件标签信息)黑彩<DIV><EMBED style="FILTER: invert()" src="链接地址" loop="-1" width=300 height=140 balance="true" showpositioncontrols="true" showtracker="true"showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>-----------------------------------------------------------(显示文件标签信息)黑<DIV><EMBED style="FILTER: xray()" src="链接地址" loop="-1" width=300height=140 balance="true" showpositioncontrols="true" showtracker="true" showaudiocontrols="true" showcontrols="true" showstatusbar="true" showdisplay="true" displaysize="0" volume="100" autosize="true"autostart="true" animationatstart="true"transparentatstart="true"></EMBED></div>===================================================连放<EMBED style="FILTER: Gray()" src=音乐网址width=500 height=35type=audio/x-ms-wma controls="StatusBar,TACCtrl,ControlPanel" border="0" autostart="1" playcount="0" showtracker="1" volume="0"></EMBED>=========================================================图片播放器!<TABLE style="FILTER: alpha(opacity=100 Style=0 FinishOpacity=100)" borderColor=#000000 height=249 cellSpacing=0 cellPadding=0 width=314 background=/DownloadImg/2010/09/0718/5119955_4.gif border=0><TBODY><TR><TD width=314 height=180 cellpadding="0" cellspacing="0"></TD></TR><TR><TD align=left><P align=center><EMBED style="FILTER: alpha(opacity=100 Style=3 FinishOpacity=0)black(); style: " src=音乐网址width=310 height=28 type=video/x-ms-asf loop="-1" autostart="1" volume="0"></P></TD></TR></TBODY></TABLE>=================================================以上效果分见如下::为免各效果同时播放,以下autostart=0autostart="true"中true或1表示自动播放,false或0表示手动播放loop="true" 中的true或1表示重复播放,false或0表示只播放一次width= height= 中的数字分别表示播放器的宽度和高度=0表示隐藏播放器EnableContextMenu="0" 禁右键ShowStatusBar="1" (带显示文件播放信息)=======================================================隐藏(hidden=true)播放器(不循环)src="/LIU/all_about_you.wma" hidden="true"type="audio/x-ms-wma" allowscriptaccess="never" autostart="0">-----------------------------------------------------------隐藏(hidden=true)播放器(循环)src="/LIU/all_about_you.wma" hidden="true"type="audio/mpeg" allowscriptaccess="never" autostart="0" loop="-1">---------------------------------------------------------------黑色[style="FILTER: xray()"]循环[loop="-1"]播放器style="FILTER: xray()" src="/LIU/all_about_you.wma" width="360" height="30" type="audio/mpeg" allowscriptaccess="never"volume="0" autostart="0" loop="-1">--------------------------------------------------------------------------------浅兰色循环(loop="-1")播放器src="/LIU/all_about_you.wma" width="300" heigh t="45" type="audio/mpeg" allowscriptaccess="never" loop="-1" autostart="0"volume="0">--------------------------------------------------------------------------掩饰自动播放器src="/LIU/all_about_you.wma"width="200" height="40" type="audio/mpeg"allowscriptaccess="never" panel="0" autostart="0"loop="true">-------------------------------------连播放时选择曲目的播放器pluginspage="/windows/mediaplayer/download/default.a sp" width="400" height="172" type="application/x-mplayer2"allowscriptaccess="never"filename="/LIU/all_about_you.wma" showcontrols="1" showstatusbar="1" showdisplay="1" showgotobar="1" autostart="0"playcount="1">----------------------------------------------------------------------------------------------显示曲名的黑色带彩自动播放器style="FILTER: invert()" src="/LIU/all_about_you.wma" width="320" height="45" type="audio/x-ms-wma" allowscriptaccess="never" showstatusbar="1" loop="0" autostart="0">-------------------------------------------------------------------------显示曲名的灰白色面板style="FILTER: Gray()" src="/LIU/all_about_you.wma" width="300" height="69" type="application/x-mplay er2" allowscriptaccess="never" loop="-1" showcontrols="1" showdisplay="0" showstatusbar="1" autostart="0"> ------------------------------------------灰白面板style="FILTER: Gray()" src="/LIU/all_about_you.wma" width="300" height="45" type="audio/x-ms-wma" allowscriptaccess="never"loop="-1" autostart="0">---------------------------------------------------------------(带显示文件播放信息)src="/LIU/all_about_you.wma" width="300" height="69" type="application/x-mplay er2" allowscriptaccess="never" loop="-1"showcontrols="1" showdisplay="0" showstatusbar="1" autostart="0">-----------------------------------------------黑色带彩棕色面板style="FILTER: invert()" src="/LIU/all_about_you.wma" width="300" height="45" type="audio/x-ms-wma" allowscriptaccess="never"loop="-1" autostart="0"><CENTER><TABLE style="BORDER-RIGHT: #f1dda1 2px ridge; BORDER-TOP: #bdb76b 2px ridge; BORDER-LEFT: #f1dda1 2px ridge; BORDER-BOTTOM: #bdb76b 2px ridge; BACKGROUND-COLOR: white" borderColor=#ffffff cellPadding=0width=300 align=centerbackground=/fileuploaddir/4B2686448.4.gifborder=0><TBODY><TR><TD width=300 height=20 cellPadding="0"cellSpacing="0"><TABLE align=center border=0><TBODY><TR><TDstyle="FILTER: alpha(opacity=60,style=3)"><P align=center><EMBED style="FILTER: invert(); WIDTH: 290px; HEIGHT: 28px" src=/Q/.Wma type=audio/x-ms-wma autostart="true"loop="-1"volume="0"></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER一、音乐播放器源代码(神采飞扬版)P align=center><TABLE borderColor=#4f3256 align=center background=http://tech.china.com/zh_cn/home4u/sucai/gifanimation/line/0022.gif border=1><TBODY><TR><TD style="FILTER: alpha(opacity=100,style=3)"><P align=center><EMBED src=width=369 height=39type=audio/mpeg loop="-1" autostart="ture" volume="0"></P></TD></TR> </TBODY></TABLE></P>二、具体操作步骤1、在“BLOG发表文章”网页里,也即是写文章的网页里,写好文字后,选中文字上方的“查看HTML源代码”项(选项前的方框内出现√则为选中),这时我们看见原来的文字成了汉字、英文字母和一些诸如<、/、=等符号组成的乱码。

C#流媒体播放器源码

C#流媒体播放器源码
public void addMediaInfo(string name, string path)
{
//连接数据库
SqlConnection conn = new SqlConnection(connStr);
SqlCommand SqlCmd = conn.CreateCommand();
//使用pd_addInfo存储过程
mandType = CommandType.StoredProcedure;
mandText = "pd_addInfo";
min = (sec - (hour * 3600)) / 60;
//获得秒信息
sec = sec - (hour * 3600 + min * 60);
//把当前时间信息显示在状态栏中
//获得当前的播放时间
sec = (int)myMediaPosition.CurrentPosition;
//获得小时信息
hour = sec / 3600;
//获得分钟信息
//如果状态变量为播放 状态栏显示播放状态信息
case "Play": mediaState.Text = "Play"; break;
//如果状态为空 则不显示信息
case "": mediaState.Text = "Stopped"; break;
{
//更新状态栏
UpdateStatusBar();
}
//若媒体文件没有播放则不更新状态栏
else
{
return;
private void Form1_FormClosed(object sender, FormClosedEventArgs e)

ffmpeg播放器实现详解-视频同步控制

ffmpeg播放器实现详解-视频同步控制

ffmpeg播放器实现详解-视频同步控制ffplay是ffmpeg源码中⼀个⾃带的开源播放器实例,同时⽀持本地视频⽂件的播放以及在线流媒体播放,功能⾮常强⼤。

FFplay: FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as atestbed for the various FFmpeg APIs.ffplay中的代码充分调⽤了ffmpeg中的函数库,因此,想学习ffmpeg的使⽤,或基于ffmpeg开发⼀个⾃⼰的播放器,ffplay都是⼀个很好的切⼊点。

由于ffmpeg本⾝的开发⽂档⽐较少,且ffplay播放器源码的实现相对复杂,除了基础的ffmpeg组件调⽤外,还包含视频帧的渲染、⾳频帧的播放、⾳视频同步策略及线程调度等问题。

因此,这⾥我们以ffmpeg官⽹推荐的⼀个ffplay播放器简化版本的开发例程为基础,在此基础上循序渐进由浅⼊深,最终探讨实现⼀个视频播放器的完整逻辑。

在上篇⽂章中,我们讨论了⼀个播放器的基础架构,梳理了组成播放器的基本组件及后台数据队列,并对代码结构进⾏了调整。

本⽂在上篇⽂章的基础上,讨论⾳视频同步的相关内容,⾸先介绍与⾳视频同步相关的时间戳概念,然后介绍⾳视频同步涉及的原理及策略,最后重点讲述关键代码的实现过程。

公众号:断点实验室⾳视频开发系列⽂章1、时间戳时间戳的概念贯穿⾳视频开发始终,重要性不⾔⽽喻。

时间戳告诉我们在什么时候,⽤多快的速度去播哪⼀帧,其中,DTS(decoding timestamp)告诉我们何时解码,PTS(presentation timestamp)告诉我们何时播放。

那么,为什么要有DTS和PTS?⾸先需要理解编码后的数据是如何存储的。

1.1 帧分组(Group of picture)视频帧(这⾥主要以H.264编码为例)以序列为单位进⾏组织,⼀个序列是⼀段图像编码后的数据流,从关键帧I帧开始,包含了与组内I帧相关联的P 帧和B帧,到下⼀个I帧结束,⼀个序列为⼀个帧组(group of picture),如下图所⽰。

VLC源代码分析

VLC源代码分析

VLC源代码分析一、VLC简介VLC的全名是Video Lan Client,是一个开源的、跨平台的视频播放器。

VLC支持大量的音视频传输、封装和编码格式,完整的功能特性列表可以在这里获得/vlc/features.html,下面给出一个简要的不完整的列表:操作系统:Windows、WinCE、Linux、MacOSX、BEOS、BSD访问形式:文件、DVD/VCD/CD、http、ftp、mms、TCP、UDP、RTP、IP组播、IPv6、rtsp编码格式:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.263、H.264、FLAC视频字幕:DVD、DVB、Text、Vobsub视频输出:DirectX、X11、XVideo、SDL、FrameBuffer、ASCII控制界面:WxWidgets、QT4、Web、Telnet、Command line浏览器插件:ActiveX、Mozilla(firefox)实际上为了更清晰一点,我们可以反过来说说VLC不支持哪些常见的。

首先是RealVideo(Real的Audio部分支持),因为Real的Video加码器存在版权的问题。

实际上VLC 0.9.0已经加入了RealVideo的支持,但是需要额外的解码器(类似MPlayer)。

另外,VLC不支持3GP的音频格式AMR。

VLC原先是几个法国的大学生做的项目,后来他们把VLC作为了一个开源的项目,吸引了来自世界各国的很多优秀程序员来共同编写和维护VLC,才逐渐变成了现在这个样子。

至于为什么叫VideoLan Client,是因为以前还有一个VideoLan Server的项目(简称VLS),而目前VLS的功能已经合并到VLC中来,所以VLC不仅仅是一个视频播放器,它也可以作为小型的视频服务器,更可以一边播放一边转码,把视频流发送到网络上。

VLC最为突出的就是网络流的播放功能,例如MPEG2的UDP TS流的播放和转发,几乎是无可替代的。

flv,flash播放器

flv,flash播放器

flv播放器源代码:<object type="application/x-shockwave-flash" width="400" height="220"wmode="transparent" data="flvplayer.swf"><param name="movie" value="flvplayer.swf" /><param name="wmode" value="transparent" /><object/>“flvplayer.swf”会自动找到同一目录内的“video.flv”播放。

也可以在“flvplayer.swf”后添加FLV文件的URL来进行播放。

方法如下:[复制此代码]CODE:<object type="application/x-shockwave-flash" width="400" height="220"wmode="transparent data="flvplayer.swf?file=movies/holiday.flv"><param name="movie" value="flvplayer.swf?file=movies/holiday.flv" /><param name="wmode" value="transparent" /></object>“file=movies/holiday.flv”就是参数,可以使用相对或者绝对地址。

影音媒体源码

影音媒体源码
<a href=show.asp?id=3350>超想播放器</a>
<a href=show.asp?id=3346>超仿千千静听易语言播放器</a>
<a href=show.asp?id=3289>网络播放器</a>
<a href=show.asp?id=3288>一款漂亮的播放器皮肤</a>
ftp://qq723363:03748729909@218.10.17.188/down/%B2%A5%B7%C5%C6%F7.rar
ftp://qq723363:03748729909@218.10.17.188/down/%B2%A5%B7%C5%C6%F7%C6%A4%B7%F4%D4%B4%C2%EB.rar
ftp://qq723363:03748729909@218.10.17.188/down/%CD%F8%C2%E7%CA%D5%D2%F4%BB%FA.rar
ftp://qq723363:03748729909@218.10.17.188/down/%B2%A5%B7%C5%C6%F7.rar
ftp://qq723363:03748729909@218.10.17.188/down/mp3%B2%A5%B7%C5%C6%F71.rar
ftp://qq723363:03748729909@218.10.17.188/upload/bass2.2test.rar
ftp://qq723363:03748729909@218.10.17.188/down/%B5%E7%CA%D3%B2%A5%B7%C5100%B4%CE%BA%F3%D2%AA%C7%F3%D7%A2%B2%E1.rar

项目9:做一个自己的音乐播放器

项目9:做一个自己的音乐播放器

项目:做一个自己的音乐播放器1.1 知识能力播放媒体的来源可以是源文件、文件系统或网络的数据流(URL)。

用户只能在标准的输出设备上播放音频,这里输出设备指的是移动设备上的扬声器或蓝牙耳机,不可以从电话的话筒播放音频。

一般而言,移动手机会有播放音乐用的扬声器和通话用的话筒。

这里我们主要使用MediaPlayer来实现音频及视频的播放功能。

从源文件中播放的流程如下图所示:从文件系统中播放的播放流程如下图所示:1.2 职业素质通过本项目,开发人员能够了解基础的多媒体开发知识,并掌握播放多媒体的基本方法。

1.3 功能演示1.4 开发流程第一步:首先,建立一个“AudioPlayerDemo ”的项目工程,包含一个默认的Activity ,界面如下图所示:屏幕上有一组单选按钮,供用户选择要从哪里播放音频文件。

另外有播放、暂停、和停止按钮,用来控制播放过程。

底部还有一个TextView,用于显示当前播放器的状态。

第二步:分别在raw文件夹,和SD卡上放置要播放的音频文件(模拟器的话需使用DDMS)。

第三步:在Activity中,声明并创建页面上的所有控件,并通过findViewById()方法创建控件对象。

单选按钮除了声明按钮控件本身外,还需要声明RadioGroup。

第四步:声明一个MediaPlayer对象,并通过构造方法构造对象实例化。

关键代码如下:第五步:声明一个int型变量,代表播放模式。

1代表从源文件播放,2代表从文件系统播放。

第六步:为单选按钮组RadioGroup添加OnCheckedChangedListener,即监听单选按钮的变化。

在回调的OnCheckedChanged()方法中,根据用户的选择设置播放器的模式。

关键代码如下:第七步:为播放、暂停、停止按钮分别添加OnClickListener。

第八步:当模式为1时,调用MediaPlayer的create()方法设置要播放的音频文件(Raw文件夹)。

用jfm视频播放的源文件

用jfm视频播放的源文件

第一步:我用的是MyEclipse 5.5。

所以,先建立一个class文件,名字:MediaPlayer.java 完整代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.media.*;import java.io.*;import java.util.*;//为了导入Vectorpublic class MediaPlayer extends JFrame implements ActionListener,Runnable{private JMenuBar bar;//菜单条private JMenu fileMenu,choiceMenu,aboutMenu;private JMenuItem openItem,openDirItem,closeItem,about,infor;private JCheckBoxMenuItem onTop;private boolean top=false,loop;//设定窗口是否在最前面private Player player;//Play是个实现Controller的接口private File file,listFile;//利用File类结合JFileChooser进行文件打开操作,后则与list.ini有关private Container c;//private UIManager.LookAndFeelInfo[] look;private String title,listIniAddress;//标题private FileDialog fd;private JPanel panel,panelSouth;private Icon icon; //开始进入的时候要显示的图标,它为抽象类,不能自己创建private JLabel//listB=new JLabel(new ImageIcon("qingdan.gif"),SwingConstants.CENTER);scroll=new JScrollPane(list);//用于存放播放列表//dialog2=new JDialogTest(MediaPlayer.this,"播放清单",scroll);//dialog2.setVisible(true);readToList.start();//启动先程,加载播放列表try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}/*look=UIManager.getInstalledLookAndFeels();try{UIManager.setLookAndFeel(look[2].getClassName());SwingUtilities.updateComponentTreeUI(this);}catch(Exception e){e.printStackTrace();}*///与下面的代码实现相同的功能,但执行速度要慢,原因:明显转了个大弯/*try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e){e.printStackTrace();} *///此段代码使执行速度大大降低bar=new JMenuBar();setJMenuBar(bar);//此两行创建菜单栏并放到此窗口程序//bar.setBackground(new Color(48,91,183));fileMenu=new JMenu("文件");bar.add(fileMenu);choiceMenu=new JMenu("控制");bar.add(choiceMenu);aboutMenu=new JMenu("帮助");bar.add(aboutMenu);openItem =new JMenuItem("打开文件");openDirItem =new JMenuItem("打开目录");closeItem =new JMenuItem("退出程序");openItem.addActionListener(this);openDirItem.addActionListener(this);closeItem.addActionListener(this);fileMenu.add(openItem);fileMenu.add(openDirItem);fileMenu.add(closeItem);onTop=new JCheckBoxMenuItem("播放时位于最前面",top); choiceMenu.add(onTop);onTop.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){if(onTop.isSelected())top=true;else top=false;setAlwaysOnTop(top);}});choiceMenu.addSeparator();//加分割符号buttonGroup=new ButtonGroup();buttonValues=new JRadioButtonMenuItem[3];for(int bt=0;bt<3;bt++){buttonValues[bt]=new JRadioButtonMenuItem(content[bt]); buttonGroup.add(buttonValues[bt]);choiceMenu.add(buttonValues[bt]);}buttonValues[0].setSelected(true);choiceMenu.addSeparator();/*loopItem=new JCheckBoxMenuItem("是否循环");choiceMenu.add(loopItem);loopItem.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){loop=!loop;}});*/infor=new JMenuItem("软件简介");aboutMenu.add(infor);infor.addActionListener(this);about=new JMenuItem("关于作者");about.addActionListener(this);aboutMenu.add(about);//菜单栏设置完毕panel=new JPanel();panel.setLayout(new BorderLayout());c.add(panel,BorderLayout.CENTER);panelSouth=new JPanel();panelSouth.setLayout(new BorderLayout());c.add(panelSouth,BorderLayout.SOUTH);icon=new ImageIcon("icon\\Player.jpg");label=new JLabel(icon);panel.add(label);popupMenu=new JPopupMenu();del =new JMenuItem("删除");//鼠标右键弹出菜单对象实例化popupMenu.add(del);del.addActionListener(this);delAll =new JMenuItem("全部删除");popupMenu.add(delAll);delAll.addActionListener(this);reName =new JMenuItem("重命名");popupMenu.add(reName);reName.addActionListener(this);scroll=new JScrollPane(list);//用于存放播放列表listB=new JLabel(new ImageIcon("icon\\qingdan.gif"),SwingConstants.CENTER);panelSouth.add(listB,BorderLayout.NORTH);panelSouth.add(scroll,BorderLayout.CENTER);dialog1=new DialogDemo(MediaPlayer.this,"软件说明");this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//设定窗口关闭方式//this.setTitle("d");编译通过,说明可以再次设定标题this.setLocation(400,250);//设定窗口出现的位置//this.setSize(350,320);//窗口大小setSize(350,330);this.setResizable(false);//设置播放器不能随便调大小this.setVisible(true);//此句不可少,否则窗口会不显示}public void actionPerformed(ActionEvent e){if(e.getSource()==openItem)//getSource()判断发生时间的组键{//System.out.println("d");测试用openFile();//createPlayer();//setTitle(title);}if(e.getSource()==openDirItem)//打开目录{openDir();if(e.getSource()==closeItem)//推出播放器{exity_n();//System.exit(0);}if(e.getSource()==about){JOptionPane.showMessageDialog(this,"此简易播放器由计科0302\n"+"harly\n "+" 完成 ","参与者",RMATION_MESSAGE);}if(e.getSource()==del){//index//delPaintList(index);fileName.removeElementAt(indexForDel);dirName.removeElementAt(indexForDel);numList.removeAllElements();//从三个容器里面移除此项Enumeration enumFile=fileName.elements();while(enumFile.hasMoreElements()){numList.addElement((numList.size()+1)+"."+enumFile.nextElement()); //numList添加元素,显示播放里表中}//list.setListData(fileName);list.setListData(numList);if(index<indexForDel)list.setSelectedValue(numList.elementAt(index),true);else{if(index==indexForDel);elseif(index!=0)list.setSelectedValue(numList.elementAt(index-1),true);}//list.setSelectedIndex(index);}if(e.getSource()==delAll)//全部删除{fileName.removeAllElements();dirName.removeAllElements();numList.removeAllElements();list.setListData(numList);}if(e.getSource()==reName)//重命名{String name;//=JOptionPane.showInputDialog(this,"请输入新的名字");try{name=reNames();fileName.setElementAt(name,indexForDel);numList.setElementAt((indexForDel+1)+"."+name,indexForDel);}catch(ReName e2)//自定义的异常{}}if(e.getSource()==infor){dialog1.setVisible(true);}}public static void main(String[] args){final MediaPlayer mp=new MediaPlayer();mp.setIconImage(new ImageIcon("icon\\mPlayer.jpg").getImage());//改变默认图标mp.addWindowListener(new WindowAdapter()//注册窗口事件{public void windowClosing(WindowEvent e){//System.exit(0);mp.exity_n();}});System.out.println("注意:更新文件列表后,请先正常关闭播放器"+"\n然后再关闭此DOS窗口,否则导致播放列表不能保存!!");}private void openFile()//为了界面原因,此代码重写,估计兼容性不好了{/*JFileChooser fileChooser=new JFileChooser();//文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//可以选择文件不能目录int result=fileChooser.showOpenDialog(this);//创建文件打开对话框,并设定此程序为父窗口监控*//*通过result的值来判断文件是否打开成功*JFileChooser类有很多静态成员变量**//*if(result==JFileChooser.CANCEL_OPTION){file=null;//file已经在类中定义,如果选择取消,file指向为空}else{file=fileChooser.getSelectedFile();//获得文件对象title=file.getAbsolutePath();//取得文件的绝对路径并且赋给title设定标题}*///if(fd==null)//{//String filename="java音频播放器";fd = new FileDialog(MediaPlayer.this);//Filters fl=new Filters();//fd.setFilenameFilter(fl);fd.setVisible(true);if (fd.getFile() != null){title = fd.getDirectory() + fd.getFile();//原因请见同目录下的FileDialogDemo.java文件files=fd.getFile();//dir =fd.getDirectory();file=new File(title);createPlayer();}//title=filename;//fd=null;//缺少此句如果第一次打开文件的时候取消操作的时候第二次也不能打开文件了//}}private void openDir(){JFileChooser fileChooser=new JFileChooser();fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);int result=fileChooser.showOpenDialog(MediaPlayer.this);if(result==JFileChooser.CANCEL_OPTION)return;file=fileChooser.getSelectedFile();if(file==null||file.getName().equals(""))JOptionPane.showMessageDialog(this,"错误的路径","出错了",JOptionPane.ERROR_MESSAGE);String[] sFiles=file.list();for(int i=0;i<sFiles.length;i++){fileName.addElement(sFiles[i]);numList.addElement((numList.size()+1)+"."+sFiles[i]);dirName.addElement(file.getAbsolutePath()+"\\"+sFiles[i]);}list.setListData(numList);/*fd=new FileDialog(MediaPlayer.this);fd.setVisible(true);if(fd.getDirectory()!=null){File fileDir=new File(fd.getDirectory());String[] ss=fileDir.list();for(int i=0;i<ss.length;i++){System.out.println(ss[i]);}}*/}private void createPlayer(){closePreviosPlayer();//关闭先前的媒体播放器String extendName="此播放器好象不支持"+title.substring(stIndexOf(".")+1)+"格式";try{player=Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于ng.object,且它为final,不能被继承player.addControllerListener(new ControllerHand());player.start();addList(files);index=fileName.size()-1;list.setSelectedValue(numList.elementAt(index),true);//list.setSelectedIndex(index);//list.setSelectionForeground(Color.blue);setTitle(title);//addList("files");//到播放清单//title="file.getAbsoluteFile()";}catch(Exception e){JOptionPane.showMessageDialog(this,extendName,"出错了!!",JOptionPane.ERROR_MESSAGE);setTitle(extendName);}}private void closePreviosPlayer(){if(player==null)return;//player.close();//首先停止播放/**不能用上面的代码停止,要用下面的两行取代,否则Component visual =player.getVisualComponent();发生异常**/player.stop();player.deallocate(); //停止播放并且重新装载DateSourceComponent visual =player.getVisualComponent();Component control=player.getControlPanelComponent();if(visual!=null){panel.remove(visual);}if(control!=null){panel.remove(control);}}private class ControllerHand implements ControllerListener {public void controllerUpdate(ControllerEvent e){if(e instanceof RealizeCompleteEvent){Component visual=player.getVisualComponent();if(visual!=null){//System.out.println("音频播放器不支持视频图象功能"); //setTitle("音频播放器不支持视频图象功能");panel.removeAll();panel.add(visual,BorderLayout.CENTER);}else{panel.add(label,BorderLayout.CENTER);}///此else语句可以防止因为原来播放视频图象后以后没有界面 Component control=player.getControlPanelComponent();if(control!=null){panel.add(control,BorderLayout.SOUTH);}//c.validate();panel.doLayout();return;}if (e instanceof EndOfMediaEvent){/*if (loop){player.setMediaTime (new Time (0));player.start ();}return;*/if(buttonValues[0].isSelected()){if(fileName.size()==0)return;index=(int)(Math.random()*fileName.size());}if(buttonValues[1].isSelected()){if(fileName.size()==0)return;//必须有此if语句,否则当用户把播放列表清空的时候发生异常,偶然的机会发现的//现在感觉测试软件真是太重要了,看来以后程序做好后要反复测试,考虑各种情况index=(index+1)%fileName.size();}if(buttonValues[2].isSelected()){player.setMediaTime (new Time (0));player.start();}createPlayer2();}}}private void exity_n(){/*int exi;exi=JOptionPane.showConfirmDialog(this,"真的要离开么?","退出程序",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);//if(exi==null)if(exi==JOptionPane.YES_OPTION){saveList();System.exit(0);}return;*/saveList();System.exit(0);}private void addList(String vf){//fileReadList=new fileReadList(fdd,)//try//{//int i=0;//fileName.addElement((fileName.size()+1)+"."+vf);fileName.addElement(vf);numList.addElement((numList.size()+1)+"."+vf);//fileName.addElement(++i+"."+vf);dirName.addElement(title);list.setListData(numList);//}/*catch(Exception e){e.printStackTrace();//System.out.println(e.getMessage());}*/}private void createPlayer2(){try{title=dirName.elementAt(index).toString();}//title=dirName.elementAt(index).toString();catch(ArrayIndexOutOfBoundsException e){return;}file=new File(title);closePreviosPlayer();//关闭先前的媒体播放器String extendName="此播放器好象不支持"+title.substring(stIndexOf(".")+1)+"格式";try{player=Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于ng.object,且它为final,不能被继承player.addControllerListener(new ControllerHand());player.start();//list.setSelectedIndex(index);list.setSelectedValue(numList.elementAt(index),true);//list.setSelectionForeground(Color.blue);//list.setSelectedIndex(index);//addList(files);setTitle(title);//addList("files");//到播放清单}catch(Exception e){//JOptionPane.showMessageDialog(this,extendName,"出错了!!",JOptionPane.ERROR_MESSAGE);//setTitle(extendName);String ex=null;try{ex=fileName.elementAt(index).toString();}catch(Exception e1){return;}fileName.removeElementAt(index);numList.removeAllElements();Enumeration enumFile=fileName.elements();while(enumFile.hasMoreElements()){numList.addElement((numList.size()+1)+"."+enumFile.nextElement()); }dirName.removeElementAt(index);//list.setListData(fileName);list.setListData(numList);System.out.println("已经从播放列表中删除 "+"\""+ex+"\""+" 文件,"+"因为此播放器不支持"+ex.substring(stIndexOf(".")+1)+"格式," +"不过没有从硬盘真正删除");if(numList.size()!=0){index%=numList.size();createPlayer2();}}}private void saveList(){Enumeration enumFile=fileName.elements();Enumeration enumDir =dirName.elements();try{output=new ObjectOutputStream(new BufferedOutputStream(newFileOutputStream(listFile)));while(enumFile.hasMoreElements()){listWriteFile=newListValues(enumFile.nextElement().toString(),enumDir.nextElement().toString());output.writeObject(listWriteFile);}output.flush();output.close();}catch(Exception e){e.printStackTrace();}/*finally{output.flush();output.close();//郁闷,这两行不能写在这里,实在是一大遗憾啊,不知道有什么别的方法}*/}public void run(){try{Thread.sleep(1);}catch(InterruptedException e){}try{if(!listFile.exists()){listFile.createNewFile();//防止不存在此文件发生读取错误,这两行代码保证不存在的情况下自动建立return;}input=new ObjectInputStream(new BufferedInputStream(newFileInputStream(listFile)));while(true){listWriteFile=(ListValues)input.readObject();fileName.addElement(listWriteFile.getFileName());numList.addElement((numList.size()+1)+"."+listWriteFile.getFileName()); dirName.addElement(listWriteFile.getDirName());}}catch(EOFException e){try{//if(!fileName.isEmpty())input.close();//确认有元素存在并加载完毕后关闭输入流}catch(IOException e1){JOptionPane.showMessageDialog(MediaPlayer.this,"文件被非正常关闭","非法关闭",JOptionPane.ERROR_MESSAGE);}}catch(ClassNotFoundException e){JOptionPane.showMessageDialog(MediaPlayer.this,"不能创建对象","对象创建失败",JOptionPane.ERROR_MESSAGE);}catch(IOException e){JOptionPane.showMessageDialog(MediaPlayer.this,"不能读取文件","读取文件失败",JOptionPane.ERROR_MESSAGE);}finally{try{if(input!=null)input.close();}catch(IOException e){}if(dirName.isEmpty())//防止Vector越界{return;}index=(int)(Math.random()*(fileName.size()));//产生随即数,进行随即播放list.setListData(numList);//list.setListData(fileName);//list.setSelectedValue(fileName.elementAt(index),true);//list.ensureIndexIsVisible(index);//确保选择项可以看见//list.setSelectionForeground(Color.green);createPlayer2();}}private void checkMenu(MouseEvent e){if(e.isPopupTrigger()){indexForDel=list.locationToIndex(e.getPoint());int[] selected={index,indexForDel};//Point p=new Point(e.getX(),e.getY());list.setSelectedIndices(selected);popupMenu.show(list,e.getX(),e.getY());}//list.setSelectedIndex(index);}String reNames() throws ReName//文件该名函数{String name=JOptionPane.showInputDialog(this,"请输入新的名字",fileName.elementAt(indexForDel));if(name==null||name.equals("")) throw new ReName();//必须把name==null放在前面,否则会发生NullPointerExceptin,这个很好理解,//当我们按了取消后,name会成为空,那么name.equals("")就会发生异常return name;}class ReName extends Exception//自定义异常来处理文件该名的时候发生输入为空的情形{}/*class Filters implements FilenameFilter{public boolean accept(File dir,String name) {return (name.endsWith(".exe"));}}*/}。

ncm 格式

ncm 格式

ncm 格式1. 什么是 NCM 格式?NCM 格式是一种音频文件格式,全称为NetEase Cloud Music。

它是由网易云音乐推出的一种音源文件格式,也是目前网易云音乐在线播放和下载音频的主要格式。

NCM 格式采用了自主研发的加密算法,使得该格式具有较高的音频保护性和稳定性。

2. NCM 格式的优点2.1 音质优异NCM 格式是一种有损音频格式,通常可以压缩到原来的 30%~ 50% 左右,降低了音频文件的大小,使得用户可以更轻松地存储和传输音频文件。

同时,NCM 格式还使用了高效的编解码器,保持了较高的音质,反映在听觉效果上就是相对于其他格式,NCM 格式的音质更加细腻、清晰。

2.2 安全保护NCM 格式采用了一种加密算法,使得未经验证合法的软件不能播放或转码该格式音频。

这样一来,可以有效保护音乐版权,防止音乐被非法传播和盗版。

同时,它还避免了一些其他音频文件格式存在的安全漏洞或者不可控的音频质量问题。

2.3 可以自定义音效NCM 格式支持自定义音效,用户可以在播放过程中自由调节音效的各项参数,例如增加重低音、提高高音效果等。

分析师认为,这种方式更能满足年轻用户对于个性化和交互性音乐使用需求。

3. NCM 格式的使用3.1 网易云音乐收费会员目前,只有网易云音乐的付费用户才可以获得高品质的音频体验,包括无损 CD 音质、自定义音效等。

在这个基础上,NCM 格式还带来了更高的音质保护性和流媒体格式兼容性。

因此,NCM 格式还是一种付费会员特定的音频格式。

3.2 第三方播放器虽然 NCM 格式在播放和转换方面存在诸多限制,但依然有不少第三方播放器能够支持它。

不过,需要注意的是,这些播放器很大程度上存在风险,因为他们可能没有获得官方授权,也缺乏技术支持和安全保障。

3.3 转换工具对于一些非网易云音乐会员或者需要兼容和传输其他设备时,NCM 格式的播放和转换并不常见,但是这并不代表该问题没有解决方案。

授人以渔!教你如何制作m3u直播源,尽情观看世界杯

授人以渔!教你如何制作m3u直播源,尽情观看世界杯

授人以渔!教你如何制作m3u直播源,尽情观看世界杯在此之前,我们不妨来了解下什么是m3u直播源:简单来说,m3u是HLS(HTTP Live Streaming)协议的部分内容,而HLS又是由苹果公司提出的基于HTTP的流媒体网络传输协议。

其实现的基本原理是将一个大的媒体文件进行分片,而分片文件资源的路径记录于m3u文件,客户端依据m3u文件便能获取对应的媒体资源,进行播放。

所以m3u文件实质上就是一个播放列表,当获取到m3u地址时,可以直接用播放器进行在线播放。

因此,网上大多直播视频都能找到对应的m3u地址,当然有些加密的我们就获取不了,也不能去抓取。

而当抓取到我们需要的m3u地址时,我们可以将其地址转化成m3u 文件用一些视频播放器打开在线观看。

下面,我们进入正题,想要制作一个m3u直播源,首先需要获取m3u链接,方法有很多,比如给浏览器添加一个可以提取m3u链接的插件,或者找一个专门提供m3u 链接的网站。

在这里,我用的是后一种。

找到m3u链接后,我们新建一个记事本文档,将m3u链接复制进来。

当然,为了播放时可以清晰的查看列表,我们可以在m3u链接前面加上频道名称,并用英文逗号隔开。

添加完成后,我们直接保存。

文件格式会自动保存为.txt格式。

需要注意的是,我们不能直接将后缀改成.m3u格式,因为播放器无法识别,会显示无法播放。

这时,我们需要用到一个小工具——TeleList。

操作非常简单,将保存好的.txt文件在“列表创建”菜单中选择“M3U”,然后点击创建,然后就会在相同路径下创建一个.m3u的文件。

说白了,其过程应该就是转换了一下格式和编码。

最后,用PotPlayer或其他支持的视频播放器播放制作好的m3u直播源文件,能够正常打开则说明成功了。

当然,有时我们找的直播源并不总是有效,这时我们可以将文件再转换回txt文件进行删除,只保留有效的直播源。

简单总结一下,制作直播源的过程是:先找m3u直播源(可通过网站或插件形式);再将m3u文件复制到记事本;接着用TeleList 进行转换;最后用播放器检验能否正常播放。

七种主流的视音频流媒体格式

七种主流的视音频流媒体格式
n AVI
n AVI是newAVI的缩写,是一个名为ShadowReal。的地下组织发展起来的一种新视频格
式.它是由Microsoft ASF压缩算法的修改而来的(并不是想象中的AVI ),视频格式追求的
无非是压缩率和图象质量,所以NAVI为了追求这个目标,改善了原始的ASF格式的一些不足,让NAVI可以拥有更高的帧率(frame rate)。当然,这是牺牲ASF的视频流特性作为代价的.概括来说,NAVI就是一种去掉视频流特性的改良型ASF格式.再简单点就是一一非网络版本的ASF!
七种主流的视音频流媒体格式
ASF
ASF是Advanced Streaming format的缩写,由字面(高级流格式)意思就应该看出这个格式的用处了吧.说穿了ASF.就是MICROSOFT为了和现在的Real player竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式,由于它使用了MPEG4的压缩算法,所以压缩率和图像的质量都很不错。
此外还有XingMPEG Encoder 2.2,它可以将AVI、MOV等多种格式的视频文件转换成为MPEG格式,根据它的向导提示,可以很容易地完成格式转换的过程。它的功能非常强大,而且操作简便,是被普遍看好的一款工具软件。可以实现的功能很多,包括将AVI文件转换成MPEG格式,将WAV格式的音频文件转换成为MPEG格式音频文件,而且还可以建立符合MPEG-1标准的VCD、CD-I Movies等格式,支持苹果公司的QuickTime格式的MOV文件转换为MPEG格式。除此之外,还可以录制的文件包括MPA/MP3(audio), MPV(video)等。其网址为,弹出任务向导对话窗口),选择PAL制式,单击[下一步]按钮,在接下来的对话窗口中设定好视频源文件和输出文件名称,最后单击[完成]按钮即可。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DDX_Control(pDX, IDC_LIST1, m_ctrlist);
DDX_Control(pDX, IDC_UPPER, m_Upper);
DDX_Control(pDX, IDC_REPEAT, m_Repeat);
DDX_Control(pDX, IDC_OPEN, m_Open);
ON_COMMAND(ID_HELPABOUT, OnHelpabout)
ON_BN_CLICKED(IDC_chooseskin, Onchooseskin)
ON_BN_CLICKED(IDC_aboutskin, Onaboutskin)
ON_WM_CANCELMODE()
ON_WM_CAPTURECHANGED()
return TRUE; // return TRUE unless you set the focus to a control
}
void CMusicPlayDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
// MusicPlayDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MusicPlay.h"
#include "MusicPlayDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMusicPlayDlg dialog
CMusicPlayDlg::CMusicPlayDlg(CWnd* pParent /*=NULL*/)
DDX_Control(pDX, IDC_SLIDER1, m_Slider1);
}
BEGIN_MESSAGE_MAP(CMusicPlayDlg, CDialog)
//{{AFX_MSG_MAP(CMusicPlayDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
afx_msg void OnTimer(UINT nIDEvent);
virtual BOOL OnInitDialog();
//}}AFX_MSG
// TODO: Add extra initialization here
m_bTransparent=FALSE;
m_ctrlist.InsertColumn(0,"当前播放列表",LVCFMT_LEFT,80);
m_ctrlist.InsertColumn(1,"PlayList",LVCFMT_LEFT,80);
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_OPEN, OnOpen)
ON_BN_CLICKED(IDC_UPPER, OnUpper)
ON_BN_CLICKED(IDC_LOWER, OnLower)
ON_BN_CLICKED(IDC_REPEAT, OnRepeat)
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_FULSCREEEN, OnFulscreeen)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
ON_BN_CLICKED(IDC_PLAY, OnPlay)
ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
DDX_Control(pDX, IDC_LOWER, m_Lower);
DDX_Control(pDX, IDC_ACTIVEMOVIECONTROL1, m_ActiveMovie);
DDX_Text(pDX, IDC_STATIC_NAME, m_strname);
//}}AFX_DATA_MAP
ON_BN_CLICKED(IDC_playstyle, Onplaystyle)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
: CDialog(CMusicPlayDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMusicPlayDlg)
m_strname = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
int dx,dy; //偏移量
int nWidth,nHeight; //窗体宽、高
// Dialog Data
//{{AFX_DATA(CAboutDlg)
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
ON_WM_TIMER()
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_COMMAND(ID_STOP, OnStop)
ON_COMMAND(ID_VIDEO1X, OnVideo1x)
ON_COMMAND(ID_VIDEO2X, OnVideo2x)
ON_COMMAND(ID_AUDEOVOLUME, OnAudeovolume)
ON_COMMAND(ID_AUDEOBALANCE, OnAudeobalance)
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_Slider1.SetRange(0,100,0);
m_Slider1.SetPos(0);
SetTimer(1000, 200, NULL);
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
ON_COMMAND(ID_FILEOPEN, OnFileopen)
ON_COMMAND(ID_FILECLOSE, OnFileclose)
ON_COMMAND(ID_FILEEXIT, OnFileexit)
ON_COMMAND(ID_START, OnStart)
ON_COMMAND(ID_PAUSE, OnPause)
相关文档
最新文档