4

これは特定のプログラム (mplayer バックエンド) に関するものであることはわかっています。ただし、フロントエンドのプログラミングに使用されるため、スタック オーバーフローのトピックとして引き続き考慮されることを願っています。

異なるオーディオ ストリーム間でフェードするために使用される 2 つの mplayer スレーブ インスタンスを実行したいと考えています (webradio; チャンネルをスムーズに変更します)。これを行うには、mplayer の「ソフトウェア ボリューム」を設定して、サウンド カードの PCM 出力チャネルに影響を与えないようにしますが、ソフトウェア ボリューム ミキサーを挿入して音量を調整します。

ただし、次の問題が発生します。

次のコマンドで mplayer を起動します (コマンドラインでテストできます)。

mplayer -slave -idle -softvol

次のコマンドを mplayer に送信します。

loadfile <url>
set volume 0

(短時間) 100% のボリュームでファイルの再生を開始し、その後 0% のボリュームにジャンプします。2 つのコマンドを入れ替えると、mplayer は音量を調整できないことを通知します。

Failed to set property 'volume' to '0'.
ANS_ERROR=PROPERTY_UNAVAILABLE

明らかに、オーディオ フィルタがまだロードされていないか、オーディオ出力がまだセットアップされていないかのようなものなので、mplayer は存在しないオーディオ出力のボリュームを変更できません。

ボリュームを 0% に設定し、ファイルをロードしてからボリュームを上げて再生中にフェードインできるように、事前に mplayer にすべてを初期化させることはできますか?

一部のファイル (サイレント ダミー ファイルなど) を再生したに音量を設定できるかどうかは、既に確認済みです。mplayer で同じエラーが発生します。今のところ、私が考えることができる唯一のオプションは、そのようなダミー ファイルを開始し、音量を調整し、ダミー ファイルを停止し、再生する正しいファイルをロードすることです。設定した音量で開始します。しかし、これが最良の選択肢であるとは信じられません。

4

2 に答える 2

6

私は自分で問題を解決しました:このガイドに従おうとしましたが、-af volume=0役に立ちませんでした。ただし、-volume 0私のために働いたコマンドラインオプションもあります:

mplayer -slave -idle -softvol -volume 0
于 2013-01-21T17:30:01.550 に答える
3

私はこれが私のホームプレーヤーで完璧に機能することを発見しました

重要なのは、ボリューム設定中: 'echo "volume $i 1 "' の 1 です。それ以外の場合、ボリュームに変更はありません。

mkfifo /tmp/mi1 および /tmp/mi2 を実行し、$url1 および $url2 をラジオストリームの URL に設定します。

mplayer -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)& 

ハッピーリスニング

于 2014-12-14T05:09:06.670 に答える