TC官方合作论坛

标题: 视频声音媒体播放 纯API源码 [打印本页]

作者: haoyuanxin    时间: 2016-9-5 14:34
标题: 视频声音媒体播放 纯API源码
本帖最后由 haoyuanxin 于 2016-9-5 14:46 编辑

视频声音媒体播放



将API命令已经封装成子程序,方便新手同学使用。命令集实现异步播放,异步控制,可以播放MP4、AVI等等视频,或WAV、MP3等等音乐。无需任何插件支持!!

效果图:

[attach]23965[/attach]
  1. //详细信息可以参考 api。ayuyan。com 在线中文文档。


  2. function 打开媒体(父窗口,文件名,别名,x,y,w,h)
  3.     var cmdA,子窗风格,Type_
  4.     子窗风格 = 1073741824
  5.     Type_=" type MPEGVideo "
  6.     if(父窗口 == 0)
  7.         子窗风格 =0
  8.         父窗口=窗口获取自我句柄()
  9.     end   
  10.      cmdA="open "&文件名&" alias "&别名&Type_&" style "&子窗风格&" parent "&父窗口
  11.      dllcall("winmm.dll", "Long", "mciSendStringA","char *",cmdA,"int",0,"int",0,"int",0)
  12.      cmdA="put "&别名&"  window at "&x&" "&y&" "&h&" "&w
  13.      dllcall("winmm.dll", "Long", "mciSendStringA","char *",cmdA,"int",0,"int",0,"int",0)
  14.      dllcall("winmm.dll", "Long", "mciSendStringA","char *","play "&别名,"int",0,"int",0,"int",0)
  15. end

  16. function 全屏播放(别名)
  17.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","play "&别名&" fullscreen ","int",0,"int",0,"int",0)
  18. end


  19. function 播放(别名)
  20. dllcall("winmm.dll", "Long", "mciSendStringA","char *","play "&别名,"int",0,"int",0,"int",0)
  21. end

  22. function 停止(别名)
  23.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","Stop "&别名,"int",0,"int",0,"int",0)
  24. end

  25. function 暂停(别名)
  26.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","Pause "&别名,"int",0,"int",0,"int",0)
  27. end

  28. function 继续播放(别名)
  29.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","Resume "&别名,"int",0,"int",0,"int",0)
  30. end

  31. function 关闭媒体(别名)
  32.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","Colse "&别名,"int",0,"int",0,"int",0)
  33. end

  34. function 置播放位置(别名,位置)
  35.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","play "&别名&" FROM "&位置,"int",0,"int",0,"int",0)
  36.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","seek movie to end","int",0,"int",0,"int",0)

  37. end

  38. function 置音量(别名,音量)
  39.     dllcall("winmm.dll", "Long", "mciSendStringA","char *","setaudio "&别名&" volume to "&音量,"int",0,"int",0,"int",0)
  40. end





复制代码

调用例子

  1. 功能 按钮0_点击()
  2. 打开媒体(窗口获取自我句柄(),"D:\\快捷方式群集\\oCam\\录制_2016_08_30_20_59_06_145.mp4","VOD",20,20,250,500)

  3. 结束


  4. 功能 按钮1_点击()
  5. time=time+5000
  6. 置播放位置("VOD",time)

  7. 结束


  8. 功能 按钮2_点击()
  9. time=time-5000
  10. 置播放位置("VOD",time)
  11. 结束


  12. 功能 按钮3_点击()
  13. 暂停("VOD")
  14. 结束


  15. 功能 按钮4_点击()
  16. 继续播放 ("VOD")
  17. 结束


  18. 功能 按钮5_点击()
  19. 停止("VOD")

  20. 结束


  21. 功能 按钮6_点击()
  22. 声音=声音+50
  23. 置音量("VOD",声音)

  24. 结束


  25. 功能 按钮7_点击()
  26. 声音=声音-50
  27. 置音量("VOD",声音)


  28. 结束
复制代码



作者: tan0360    时间: 2016-9-5 19:08
不错  学习学习。
作者: 超自然    时间: 2016-9-11 11:16
http://bbs.tyuyan.net/thread-50378-1-1.html
这是我去年实现的,winmm两种调用方式,一种是结构体,一种是简单的字符串命令,我用的前者,你用的后者.
你这有两个问题.
第一,你照抄E的代码,用的全部是带A的参数,全部是char *字符串,当这些代码被拿到繁体系统上运行,这就全坑了,
易语言的硬伤就是A编码字符串,你应该用U字符串,用wchar *字符串就不会
第二,这不是什么播放接口,也不是不需要什么插件.相反,没有"插件"他根本没有作用...
这接口是windows的媒体调度接口,他负责调用合适的程序来解码合适的媒体文件,真正的播放是由驱动完成的,
你可以这样做个试验,安个全新的系统,去运行你这代码,会发现除了wnv,wam之类微软标准的媒体之外,什么也打不开,取错误得到的是"不支持的媒体类型"
作者: zlguo    时间: 2018-5-2 08:16
此代码可播放mp3文件,但不能连续播放。就是说再点击播放时没反应了。有没有人给解答




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1