svdztn 发表于 2016-10-28 14:03:15

本帖最后由 svdztn 于 2016-10-28 15:13 编辑

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

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


##-----------------Read Para-----------------##
while getopts "t" arg
do
      case $arg in
                t)
                        testflag=1
                        ;;
                ?)
                        echo "unkonw argument"
                        exit 1
                        ;;
      esac
done


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

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

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

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

exit 0
fi


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

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

exit 0
fi


##----------------- Error -----------------##
exit 1

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

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

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

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

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

fi


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

exit 0


svdztn 发表于 2016-10-28 14:46:53

说说播放器的随机策略

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

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

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

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

代码见附件。

hzjnet 发表于 2016-11-11 14:51:14

本帖最后由 hzjnet 于 2016-11-15 20:00 编辑

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

hzjnet 发表于 2016-11-11 15:03:06

谢谢作者能留个联系吗?我的Q是145649872

KillingJacky 发表于 2016-11-25 10:43:29

这应该是个加精的贴子啊

hzjnet 发表于 2016-11-30 10:50:34

支持加精好文
页: 1 2 [3]
查看完整版本: XPEnoboot 5.2 驱动编译 & Mplayer 玩法