TC官方合作论坛

 找回密码
 立即注册
查看: 1642|回复: 3

[讨论] 视频声音媒体播放 纯API源码

[复制链接]
发表于 2016-9-5 14:34:09 | 显示全部楼层 |阅读模式
本帖最后由 haoyuanxin 于 2016-9-5 14:46 编辑

视频声音媒体播放



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

效果图:

  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. 结束
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 2威望 +20 金币 +10 收起 理由
tan0360 + 10 很给力!
言术 + 10 + 10 支持

查看全部评分

回复

使用道具 举报

发表于 2016-9-5 19:08:32 | 显示全部楼层
不错  学习学习。
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2018-5-2 08:16:10 | 显示全部楼层
此代码可播放mp3文件,但不能连续播放。就是说再点击播放时没反应了。有没有人给解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-18 06:29 , Processed in 0.038167 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表