我正在使用videoView,使用自定义控制器播放 .m3u8 视频。
如何将 VideoView 音频设为静音,现在我以一种方式进行,您可以在下面看到我的java代码。我试过这种方式但是日志文件不能进入setOnInfoListener方法。我所追随的是否有任何错误。
我用于获取音轨的代码:
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;
}
});
我用来静音VideoView的代码:
爪哇
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;
}
});
并保持视频正常运行。请提供任何其他方法使视频视频静音 1.有没有办法用不同的音轨播放视频,我有.mp3链接列表。
答案 0 :(得分:1)
试试这个:
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;
}
}
}
答案 1 :(得分:1)
参考:Mute a playing video by VideoView in Android Application
回答:https://stackoverflow.com/a/12549943/9909365
我已经使用MediaPlayer类完成了此操作。我使用MediaPlayer类的setVolume函数将音量设置为0。我也意识到不要使用AudioManager类,因为使用AudioManager时如果将音量设置为0,则它将所有MediaPlayer和VideoView实例的音量都设置为0。但是,如果您将使用MediaPlayer的setVolume()方法,则它将仅使该实例的音量静音。
使用VideoView也可以轻松地将音量设置为0,因为VideoView是MediaPlayer类的包装器,并且只允许访问MediaPlayer的少数功能。我还读过一些博客,尽管您可以使用VideoView实例引用MediaPlayer实例,但是它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有帮助。