2

このような問題: 2 つのサウンド チャンネルで録画されたビデオ ファイルがあります。このコードで左のサウンドチャンネルをオフにしようとしました:

MediaPlayer mp; 

....

mp.setVolume(0.f, 1f);

...そしてタブレットでは、これはうまく機能します(右のボリュームチャンネルはよく聞こえます)。しかし、その後、Samsung UE46ES6307U に接続した googleTv で試してみましたが、このコードは機能せず、サウンドがオフになりました。Dolby Digital Plus / Dolby Pulse オーディオにバインドされているのでしょうか。どうにかしてプログラムで、デバイスのサウンドチャンネルと、セットアップされた各チャンネルの音量を見つけることはできますか?

更新: このフォーラムhttp://www.googletvforum.org/forum/logitech-revue/375-audio-problems-logitech-revue.htmlの返信の 1 つに次のようなメッセージがあります。 hdmi 経由のオーディオ。光出力を使用する必要があります。どちらでも構いません。」

「MediaPlayer はどのように構築していますか?」

Videoview vv;
...............

        vv.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setVolume(0.f, 1f);
            }
        });

アップデート:

public class MainActivity extends Activity {
    MediaPlayer mp = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (mp != null) {
            mp.reset();
            mp.release();
        }

        mp = MediaPlayer.create(this, R.raw.test);
        mp.start();

    }

    public void onTurnOffLeft(View v){
        mp.setVolume(0.f, 1.f);
    }

    public void onTurnOffRight(View v){
        mp.setVolume(1.f, 0.f);
    }
}

メソッド onTurnOffLeft はすべてのサウンドをオフにし、onTurnOffRight メソッドは効果がありません。

Update2

Vorbis コーデックでコード化された .ogg オーディオ ファイルを再生しようとしました - チャネルがうまくオフになります。しかし、mp3、ac3、pcm、aac でコード化されたビデオ ファイルを再生しようとしましたが、チャネルをオフにする問題がまだ残っています...ビデオのオーディオ チャネルをオフにする必要がありますが、その問題を解決する方法がわかりません。まだ。

4

1 に答える 1

3

MediaPlayer オブジェクトは、デバイス全体で異なるライブラリによってサポートされています (タブレットと Google TV の間で同じではありません)。MediaPlayer をどのように構築していますか?

MediaPlayer が構築された直後に #reset() を呼び出すことをお勧めします。デフォルトでは、「new」演算子を使用して MediaPlayer インスタンスを作成すると、IDLE 状態になります (少なくとも Google TV では)。reset を呼び出すことで、独自の OnErrorListener.onError() ハンドラを呼び出すことができます。これにより、他の方法では表示されない根本的なエラーがあるかどうかを確認できます。

また、特定のタイプのすべてのストリームの音量を設定する AudioManager#setStreamVolume(int, int, int) を確認することもできます。

編集1:リスナーをセットアップした後、レイアウトからVideoViewを取得しているだけなので(そのコードは省略されていると思います)、ビデオビューでリセットを呼び出す必要があります。

于 2012-12-04T16:52:19.380 に答える