0

I am working with the videoView, to play the .m3u8 videos steaming by using the custom controllers.

How can I make the VideoView audio as mute,Now I am going in one way, you can see my java code below. I tried that way but the Log files con't going inside on setOnInfoListener method. Is there any error what i am following.

Code I am using for getting Audio tracks:

Java

videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
                @Override
                public boolean onInfo(MediaPlayer mp, int what, int extra) {
                    MediaPlayer.TrackInfo[] trackInfoArray = mp.getTrackInfo();
                    Log.e("track Length : ",String.valueOf(trackInfoArray.length));
                    for (int i = 0; i < trackInfoArray.length; i++) {
                        Log.e("track "+i+" : ",trackInfoArray[i].getLanguage().toString());
                        if (trackInfoArray[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO
                                && trackInfoArray[i].getLanguage().equals(Locale.getDefault().getISO3Language())) {
                            mp.selectTrack(i);
                            break;
                        }
                    }
                    return true;
                }
            });

Code I am using for mute the VideoView:

Java

videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
            @Override
            public boolean onInfo(MediaPlayer m, int i, int i1) {
                try {
                    Log.e("track : ","inside media player");
                    if (m.isPlaying()) {
                        m.stop();
                        m.release();
                        m = new MediaPlayer();
                    }
                    m.setVolume(0f, 0f);
                    m.setLooping(false);
                    m.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return false;
            }
        });

And remain everything video is running fine.Please give any other ways to make the videoView audio muting.
1.Is there any way to play the video with different audio tracks , I have list of .mp3 links.

ballu
  • 49
  • 1
  • 12

2 Answers2

1

Try this:

    WebView wView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wView=(WebView)findViewById(R.id.webView1);
        wView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            }
        });

        wView.getSettings().setJavaScriptEnabled(true);
        wView.getSettings().setBuiltInZoomControls(true);
        wView.addJavascriptInterface(this, "myinterface");
    }

    public void displayMsg(String name,String pass){
        Toast.makeText(getApplicationContext(), name+"\n"+pass, 2000).show();
    }

    public void test(View v){
        switch (v.getId()) {
            case R.id.imageView1:
                wView.loadUrl("http://www.facebook.com");
                break;
            case R.id.imageView2:
                wView.loadUrl("http://www.linkedin.com");
                break;
            case R.id.imageView3:
                wView.loadUrl("http://www.twitter.com");
                break;
            case R.id.imageView4:
                wView.loadUrl("http://www.youtube.com");
                break;
            case R.id.imageView5:
                wView.loadUrl("file:///android_asset/login.html");
                break;
        }
    }
}
Pang
  • 9,564
  • 146
  • 81
  • 122
1

Ref: Mute a playing video by VideoView in Android Application

Ans: https://stackoverflow.com/a/12549943/9909365

I have done this using MediaPlayer class. I have used setVolume function of MediaPlayer class to set the volume to 0. also I have realised that dont use AudioManager class, because using AudioManager if a set volume to 0, then it set volume to 0 for all the instance of MediaPlayer and VideoView. But if you will use setVolume() method of MediaPlayer then it will just Mute the volume of that instance only.

Also set volume to 0 is bot easy using VideoView because VideoView is a wrapper over MediaPlayer class and just allow to access few function of MediaPlayer. Also I have read on some blog that though you can reference MediaPlayer instance using VideoView instances, but its very complex and its not recommended to do so. Hope this would be helpful to other new readers how try to do similar things.

Ashvin solanki
  • 4,802
  • 3
  • 25
  • 65