扫描二维码关注官方公众号
123
返回列表 发布新帖

[讨论/分享] XPEnoboot 5.2 驱动编译 & Mplayer 玩法

评论45

svdztn楼主Lv.5 发表于 2016-10-28 14:03:15 | 显示全部楼层
本帖最后由 svdztn 于 2016-10-28 15:13 编辑

修改版alarm_start与alarm_stop
增加守护功能,若mplayer意外退出,会自行重启,每1分钟检查一次。运行alarm_stop后,关闭mplayer,同时关闭守护。

alarm_start.sh:
  1. task="null"
  2. testflag=0 #Play/Test#
  3. abort=0


  4. ##-----------------Read Para-----------------##
  5. while getopts "t" arg
  6. do
  7.         case $arg in
  8.                 t)
  9.                         testflag=1
  10.                         ;;
  11.                 ?)
  12.                         echo "unkonw argument"
  13.                         exit 1
  14.                         ;;
  15.         esac
  16. done


  17. ##----------------- Play -----------------##
  18. if [ $testflag -eq 0 ];then

  19. ##PLAY##
  20. /volume1/@appstore/mplayer/bin/mplayer rtmp://................ </dev/null >/dev/null 2>&1 &

  21. ##Search schedule##
  22. schedule=$(cat /etc/crontab | grep alarm_start | grep -v grep)

  23. ##schedule not found##
  24. if [ -z "$schedule" ];then
  25. ##Bakup crontab##
  26. cp -f /etc/crontab /etc/crontab.bak
  27. ##Write crontab##
  28. task="/volume1/@appstore/sh/alarm_start.sh"
  29. echo "*        *        *        *        *        root        $task -t">>/etc/crontab
  30. ##Reload config##
  31. crondpid=$(ps | grep crond |grep -v grep | awk 'NR==1{print $1}')
  32. kill $crondpid
  33. fi

  34. exit 0
  35. fi


  36. ##----------------- Test -----------------##
  37. if [ $testflag -eq 1 ];then
  38. stillRunning=$(ps | grep mplayer | grep -v grep)

  39. if [ -z "$stillRunning" ];then
  40. task="/volume1/@appstore/sh/alarm_start.sh"
  41. `$task`
  42. fi

  43. exit 0
  44. fi


  45. ##----------------- Error -----------------##
  46. exit 1
复制代码


alarm_stop.sh:
  1. ##----------------- Schedule -----------------##

  2. ##Search schedule##
  3. schedule=$(cat /etc/crontab | grep alarm_start | grep -v grep)

  4. ##schedule found##
  5. if [ -n "$schedule" ];then

  6. ##Del all mpalarm schedule##
  7. task="/volume1/@appstore/sh/alarm_start.sh"
  8. sed -i "s#$task#dEltAsktEmp#" /etc/crontab
  9. sed -i '/dEltAsktEmp/d' /etc/crontab

  10. ##Reload config##
  11. crondpid=$(ps | grep crond |grep -v grep | awk 'NR==1{print $1}')
  12. kill $crondpid

  13. fi


  14. ##----------------- Kill Process -----------------##
  15. NAME=$(ps | grep mplayer |grep -v grep | awk 'NR==1{print $1}')
  16. kill $NAME

  17. exit 0
复制代码



回复 点赞

使用道具 举报

svdztn楼主Lv.5 发表于 2016-10-28 14:46:53 | 显示全部楼层
说说播放器的随机策略

听歌喜欢将很多歌加入播放列表,然后使用随机播放。但很多播放器的随机策略不好,有些是经常重复播某些歌,但另一些又一直播不到;有些是列表循环播放过一轮后,第二轮的顺序和前一轮一模一样。

查看了一下mplayer处理播放列表部分的代码,它的做法是,随机播放时,每播放一首歌时,都会把这首歌做一个标记;当本首歌播放完后,再从播放列表中未做标记的歌中随机选取一首来播放,如此循环;当检测到所有歌全都做了标记时,就代表播放列表已全部播放,此时再清除所有标记,开始新一轮的循环。

这样做就避免了前面说的两个问题,但我在使用中,又遇到了另一个问题:每次运行mplayer听歌时,不会记住之前已播放的标记,也就是每次重新打开播放器时,列表中已播放的标记都是空的,所以还是会经常重复听到前一次播放的歌。

闲来无事,强迫症大发作,尝试修改了一下mplayer播放列表处理部分的代码,将播放列表的数据写入到外部文件中,当每次做已播放标记时,同步修改外部文件中的相应标记。这样,每次播放器重新启动时,先从外部保存的播放列表文件中读取相关数据,就可以从上次退出的位置继续随机播放了。

代码见附件。

mod_20161016_1636.rar

42.13 KB, 下载次数: 0, 下载积分: 丝瓜 -5 条

RND2FILE

回复 点赞

使用道具 举报

hzjnetLv.5 发表于 2016-11-11 14:51:14 | 显示全部楼层
本帖最后由 hzjnet 于 2016-11-15 20:00 编辑

帅  能留个IM或者其它的联系吗?  我的QQ和维信都是15640872。好 谢谢楼主 ,kernel和mod都编译好了  继续试试32位的
回复 点赞

使用道具 举报

hzjnetLv.5 发表于 2016-11-11 15:03:06 | 显示全部楼层
谢谢  作者能留个联系吗?  我的Q是145649872
回复 点赞

使用道具 举报

KillingJackyLv.2 发表于 2016-11-25 10:43:29 | 显示全部楼层
这应该是个加精的贴子啊
回复 点赞

使用道具 举报

hzjnetLv.5 发表于 2016-11-30 10:50:34 | 显示全部楼层
支持加精  好文
回复 点赞

使用道具 举报

回复

懒得打字嘛,点击右侧快捷回复 【本站酷狼4T,750元】
您需要登录后才可以回帖 登录 | 注册

本版积分规则

投诉/建议联系

support@gebi1.cn

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2024 隔壁网 版权所有 All Rights Reserved. 粤ICP备14056481号-1
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表