我知道这是关于一个特定的程序(mplayer后端);但是它将用于编写前端程序,所以我希望它仍然被认为是Stack Overflow上的主题。
我想运行两个mplayer slave实例,用于在不同音频流之间淡入淡出(webradio;平滑地更改频道)。为此,我设置了mplayer的“软件音量”,这样它就不会影响声卡的PCM输出通道,而是插入一个软件音量混音器来调节音量。
但是,我遇到了以下问题。
我使用以下命令启动mplayer(可以在命令行上测试):
mplayer -slave -idle -softvol
并将以下命令发送到mplayer:
loadfile <url>
set volume 0
启动(短时间)以100%音量播放文件,然后跳至0%音量。如果我交换这两个命令,mplayer告诉我我无法调整音量:
Failed to set property 'volume' to '0'.
ANS_ERROR=PROPERTY_UNAVAILABLE
显然,音频过滤器尚未加载/音频输出尚未设置或类似,因此mplayer无法更改不存在的音频输出的音量。
我可以强制mplayer提前初始化所有内容,以便我可以将音量设置为0%,加载文件然后将音量增加到淡入淡出状态吗?
我已经检查过是否可以在播放某个文件后设置音量(例如静音虚拟文件); mplayer抱怨同样的错误。现在,我能想到的唯一选择是启动这样的虚拟文件,调整音量,停止虚拟文件,加载要播放的正确文件,它将从刚设置的音量开始。但我不敢相信这是最好的选择。
答案 0 :(得分:5)
我自己解决了这个问题:当我尝试关注this guide时,-af volume=0
没有帮助。但是,还有一个-volume 0
命令行选项对我有用:
mplayer -slave -idle -softvol -volume 0
答案 1 :(得分:2)
我发现这个完美的@我的家庭播放器
重要的是,音量设置:'echo'音量中的1 $ i 1“'否则音量没有变化。
mkfifo / tmp / mi1和/ tmp / mi2 并在此
之前将$ url1和$ url2设置为您的radiostreamurlsmplayer -softvol -slave -input file=/tmp/mi1 $url1 &>/dev/null & mplayer -softvol -slave -input file=/tmp/mi2 $url2 & for ((i=1; i<=100; i+=1)); do sleep 0.25; echo "volume $(( 100 - $i )) 1 ">/tmp/mi1; sleep 0.25 ; echo "volume $i 1 ">/tmp/mi2 ; done ; (sleep 5 ; echo quit >/tmp/mi1 ;echo quit >/tmp/mi2)&
快乐聆听