これは特定のプログラム (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 で同じエラーが発生します。今のところ、私が考えることができる唯一のオプションは、そのようなダミー ファイルを開始し、音量を調整し、ダミー ファイルを停止し、再生する正しいファイルをロードすることです。設定した音量で開始します。しかし、これが最良の選択肢であるとは信じられません。