Articles of media player

如何停止MediaPlayer流然后重新启动它? Android的

我正在制作一个简单的应用来播放在线广播流。 我知道如何设置流。 到目前为止,这是我的代码。 它设置流并播放它。 但如果我停下来,我就无法重新开始。 我错过了一些明显的东西吗 final MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.setDataSource(url); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // […]

Android MediaPlayer错误(1,-38)和(-38,0)

我正在使用MediaPlayer组件,我得到错误(1,-38)和(-38,0)。 我正在使用player.prepareAsync(),我在onPrepared()方法中调用了player.start()。 奇怪的是,当我第四次复制video时,我收到了错误。 我不知道发生了什么。 有人可以帮帮我吗? 这是我的代码: public class VideoPlayerActivity extends Activity implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, VideoControllerView.MediaPlayerControl, OnCompletionListener, OnErrorListener { SurfaceView videoSurface; MediaPlayer player; VideoControllerView controller; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.video_player); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); if(player != null) { player.release(); player = null; } player = new MediaPlayer(); controller= new VideoControllerView(this); try { player.setAudioStreamType(AudioManager.STREAM_MUSIC); String path […]

JNI:QCMediaPlayer媒体播放器不存在

在播放音频时,我收到的JNI媒体播放器不存在错误。我发布了logcat错误。 logcat的: E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present E/MediaPlayer: start called in state 2 E/MediaPlayer: error (-38, 0) E/MediaPlayer: Error (-38,0) 任何人都可以帮助我。

检查是否通过用户交互或屏幕调暗来调用onStop

我有一个媒体播放器,只要用户关闭应用程序就停止播放,可以通过按主页按钮,使用后退按钮或只是打开另一个应用程序。 为了得到这种行为,我在我的主要活动中添加了一个onStop() ,它告诉我的MediaPlayer (在服务中)停止播放音乐。 但是,我希望音乐在屏幕变暗时继续播放,无论是使用电源按钮关闭屏幕,还是仅通过屏幕自动调光。 现在,当屏幕变暗时,播放器也会停止播放,这意味着onStop()方法也会被调用。 如何检查onStop()是否被屏幕调用调用? 我已经将一个PARTIAL_WAKELOCK应用到了我的MediaPlayer对象,据我所知,该对象应该可以让播放器在屏幕关闭后继续运行。 我是否还需要在主要活动中添加部分唤醒锁? 刚刚将PARTIAL_WAKELOCK应用于我的主要活动以及媒体播放器。 此时,屏幕不再自动关闭,当用户按下电源按钮时,音乐仍然停止。 显然,这不符合我的想法。 有没有办法实现我正在寻找的行为?

使用mediaplayer播放video时,SurfaceView为空白

这是我的代码,但是当我启动媒体播放器时,它只有声音出来,表面没有任何显示。 为什么? 我不知道这个。 你有一些代码可以帮我学习吗? videoV = (SurfaceView) findViewById(R.id.SurfaceView1); sh = videoV.getHolder(); File path = Environment.getExternalStorageDirectory(); File file = new File(path, “sample2.mp4”); sh.addCallback(this); mp = new MediaPlayer(); mp.setDataSource(file.getAbsolutePath()); mp.setDisplay(sh); mp.prepare(); mp.start();

Android:MediaPlayervideo宽高比问题

我遇到了一个我无法解决的问题。 我正在使用MediaPlayer类来播放video; 但是,我总是失去原有的宽高比。 这里提到了媒体播放器代码和xml代码。 我尝试了很多东西,但仍然无法解决问题。 我需要保持原始的宽高比。 我已经在Android Manifest File中将此活动声明为全屏。 我还在媒体播放器代码之后附加了xml代码。 请建议我。 private class ErrorListener implements OnErrorListener { // FIXME: @Override public boolean onError(MediaPlayer mp, int what, int extra) { String message = “Unknown error”; switch (what) { case MediaPlayer.MEDIA_ERROR_UNKNOWN: message = “Unable to play media”; showError(message); break; case MediaPlayer.MEDIA_ERROR_SERVER_DIED: message = “Server failed”; showError(message); break; […]

Android AudioRecord和MediaRecorder

我正在开发一个音频处理应用程序,我需要录制音频,然后处理它以获取该录制的function。 但是,我希望使用MediaPlayer播放可播放格式的音频。 我已经看到要录制音频来处理它最好使用AudioRecord,因为我可以从那里获得原始音频。 但后来我无法以可播放的格式将数据写入文件(在android中是否有任何库?)。 我使用这种方法记录原始数据,然后将其写入文件: http : //andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/但是当我尝试播放此文件时在设备上,它不可播放。 然后,如果我使用MediaRecorder,我不知道如何解码数据以提取function。 我一直在看MediaExtractor,但它接触MediaExtractor不解码帧。 那么……最好的方法是什么? 我想这在任何音频处理应用程序中都很常见,但我无法find管理它的方法。 感谢您的回复。

为什么MediaPlayer会在Android上显示如此多的Verbose登录?

我正在使用MediaPlayer来显示SplashVideo,并且日志充满了详细的消息。 这不是错误,但仍然不是正常行为。 Uri video = Uri.parse(“android.resource://” + getPackageName() + “/” + R.raw.logo_vid); videoHolder.setVideoURI(video); videoHolder.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { jumpMain(); } }); videoHolder.start(); } 这是日志…… 08-01 12:52:16.045: V/MediaPlayer(12402): setListener 08-01 12:52:16.045: I/MediaPlayer(12402): path is null 08-01 12:52:16.045: V/MediaPlayer-JNI(12402): setDataSourceFD: fd 43 08-01 12:52:16.045: V/MediaPlayer(12402): setDataSource(43, 1088, 407705) 08-01 12:52:16.085: V/MediaPlayer(12402): setVideoSurfaceTexture 08-01 12:52:16.085: […]

VideoView变成黑屏

我正在开发多人video应用程序,所以在那里我创建了9个视图3 * 3。 当我初始化所有(3 * 3)video,然后正常工作几秒钟,一段时间后video进入黑屏,不显示单个video, 我不明白这个问题是面向设备或Android不支持超过1video活动 ,任何人都知道如何解决这个问题,否则如果video变成黑色,那么如何识别video会变成黑屏,如果我们发现这个,那么我将刷新视图并再次启动video,我不知道它是否正确方式与否。 请任何人知道如何解决这个问题然后请分享信息! 我使用下面的代码在一个活动中显示多个video videoPlayer.setVideoPath(“path”); videoPlayer.start(); videoPlayer.requestFocus(); videoPlayer.setKeepScreenOn(true); 设置准备听众 videoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { } 设置完成监听器 videoPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { //play next } }); 处理错误监听器 videoPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { // play […]

Android:媒体播放器持续时间问题

我已经设定: mSeekBar.setMax(mp.getDuration()); // 8480 完成Audiofile后,我得到的是: player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mediaPlayer) { Log.e(“onComplete>>”, “”+mediaPlayer.getCurrentPosition()); // mediaPlayer.getCurrentPosition() = 8192 Log.e(“getDuration”, “”+mediaPlayer.getDuration()); // mediaPlayer.getDuration() = 8480 if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration()) { // Why never get called??? } } }); 那么,为什么MediaPlayer的当前位置永远不会达到音频文件的总持续时间? 或者在技术上我们可以说: 为什么不? mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration() 为什么总是 OnCompletion侦听器中的mediaPlayer.getCurrentPosition()<mediaPlayer.getDuration() ? 例如: 我有一个播放符号来启动播放器。 现在,当我按下播放符号时,它将转换为暂停符号。 我有一个audiodfile的Maxduration。 现在我想在完全播放音频文件时将暂停符号转换为播放符号。 所以我正在做的是检查: if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration()) { // Convert Imagview from Pause […]