Nit*_*mer 9 java android video-streaming audio-streaming
我正在使用VideoView播放视频(来自youtube),如下所示:
VideoView video = (ViewView) this.findViewById(R.id.youtube_video);
MediaController controllers = new MediaController(this);
controllers.setAnchorView(video);
video.setMediaController(controllers);
video.setVideoURI(videoUri);
video.start()
Run Code Online (Sandbox Code Playgroud)
我希望能够将视频静音,但到目前为止,我发现的唯一一件事就是:
AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,视频静音,但问题是所有流媒体音乐都被静音,如果还有另一个我要播放的视频(或音频),它也会静音.
有没有办法将特定流定位为静音?
谢谢.
Nit*_*mer 22
在深入研究了我设法找到的每一个可能的信息来源之后,我想出了以下解决方案,并认为未来可能会让其他人受益:
public class Player extends VideoView implements OnPreparedListener, OnCompletionListener, OnErrorListener {
private MediaPlayer mediaPlayer;
public Player(Context context, AttributeSet attributes) {
super(context, attributes);
this.setOnPreparedListener(this);
this.setOnCompletionListener(this);
this.setOnErrorListener(this);
}
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
this.mediaPlayer = mediaPlayer;
}
@Override
public boolean onError(MediaPlayer mediaPlayer, int what, int extra) { ... }
@Override
public void onCompletion(MediaPlayer mediaPlayer) { ... }
public void mute() {
this.setVolume(0);
}
public void unmute() {
this.setVolume(100);
}
private void setVolume(int amount) {
final int max = 100;
final double numerator = max - amount > 0 ? Math.log(max - amount) : 0;
final float volume = (float) (1 - (numerator / Math.log(max)));
this.mediaPlayer.setVolume(volume, volume);
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎对我很有效,就像具有静音/取消静音功能的VideoView一样.
可以将setVolume方法公开,以便可以在类的范围之外控制音量,但我只需要静音/取消静音即可.
Man*_*tel 11
将此代码放在 oncreate() 和 onresume() 中,以便以更好的方式处理视频视图...
VideoView videoview = (VideoView) findViewById(R.id.videoview);
videoview.setVideoPath(videopath);
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setVolume(0f, 0f);
mp.setLooping(true);
}
});
videoview.start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10978 次 |
最近记录: |