Articles of android mediaplayer

Android MediaPlayer不能在Android 5.1.1上玩Galaxy S6

我看到一个特定于运行Android 5.1.1的Galaxy S6的问题。 我正在使用MediaPlayer播放audiostream,在设备和Android版本的此特定configuration上,它无法达到onPrepared方法,因此从不播放。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAndroidPlayer = new MediaPlayer(); mAndroidPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { System.out.print("ERROR " + i); return false; } }); mAndroidPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { System.out.println("PREPARED"); mAndroidPlayer.start(); } }); mAndroidPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mAndroidPlayer.setDataSource("http://live.radioart.com/fFilm_scores.mp3"); } […]

如何将通过MediaRecorder录制的video长度读取到通过context.getFilesDir()构build的私有应用程序存储目录中?

我有一个奇怪的问题,通过使用MediaRecorder读取设备相机logging的video文件的长度/持续时间。 该文件被logging到应用程序的专用存储目录中,其设置如下所示: mMediaRecorder.setOutputFile(context.getFilesDir() + "/recordings/webcam.3gpp"); 录制完成后,我尝试用这些方法读取video的长度: 方法1: MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); mediaMetadataRetriever.setDataSource(context.getFilesDir() + "/recordings/webcam.3gpp"); String time = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); return Long.parseLong(time); 方法2: MediaPlayer mp = MediaPlayer.create(context, Uri.parse(context.getFilesDir() + "/recordings/webcam.3gpp")); long duration = mp.getDuration(); mp.release(); return duration; 没有任何方法的工作。 mediaMetadataRetriever.extractMetadata返回null, MediaPlayer.create将以IOExceptionexception失败。 我已经validation该文件存在。 重要说明:如果将录制内容保存到“/sdcard/recordings/webcam.3gpp”,则不会发生此问题。 出于某种原因,我只是不能读取文件在属于应用程序的私人文件目录中的持续时间。 此外,这个问题只发生在我的三星Droid充电,运行Android 2.3。 它不会发生在运行Android 4.2的三星Galaxy S4和运行Android 4.3的Asus Nexus 7。 编辑: 如果我把相同的文件复制到SD卡上,然后阅读它的长度,一切正常。 是什么赋予了? copy(new File(context.getFilesDir() […]

暂停时更新MediaPlayer的开始位置

我现场直播的audio,并希望有function,暂停媒体播放器,然后从现在的位置开始。 默认的Pause()和Start()只是从停止的地方开始。 有关如何保持当前位置更新的任何想法,以便Start()是即时的?

Android VideoView MediaPlayer OnInfoListener – 事件未被触发

给出以下源代码片段: videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END){ activity.dismissDialog(DialogID.DIALOG_LOADING); return true; } return false; } }); } }); 我使用Android 3.x +设备stream式传输HLSstream,并在缓冲完成后尝试隐藏加载对话框。 videostream的作品,但信息事件永远不会被解雇。 有任何想法吗?

可能覆盖App中的系统.so库

我必须修改Android Media Player的Http Live Streaming实现。 实现在stagefright库下http://androidxref.com/4.0.4/xref/frameworks/base/media/libstagefright/httplive/LiveDataSource.cpp 我认为这些库会编译成一个libstagefright.so,它应该是Android系统的一部分。 我的问题是,如果我对这个库进行一些更改,并编译一个新的libstagefright.so。 如果我在新的应用程序中加载这个新的libstagefright.so并调用媒体播放器,它会使用我的新libstagefright.so中的代码吗?

什么是MediaPlayer.OnInfoListener“代码703”?

我正在通过MediaPlayer运行stream。 当缓冲开始时,代码701被抛出。 当缓冲结束时,代码702被抛出。 所有的代码可以在这个链接中find。 但是, MediaPlayer.OnInfoListener第一次抛出代码703,我找不到任何地方。 这里是代码和debugging输出。 mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mediaPlayer, int i, int i2) { Log.d(TAG, "MediaPlayer.OnInfoListener: " + i); return false; } }); logcat的: 12-29 13:40:54.995: DEBUG/StreamingService(13811): MediaPlayer.OnInfoListener: 703 12-29 13:40:55.000: DEBUG/StreamingService(13811): MediaPlayer.OnInfoListener: 701 12-29 13:41:09.055: DEBUG/StreamingService(13811): MediaPlayer.OnInfoListener: 702 12-29 13:41:10.770: DEBUG/StreamingService(13811): MediaPlayer.OnCompletionListener 什么是通过MediaPlayer.OnInfoListener引发的代码703 ?

Android SDK – 来自URL的媒体播放器video

我试图find一个简单的教程,解释如何从URL加载video到Android媒体播放器,但不幸的是我找不到任何! 我尝试了几件事情来尝试让它工作,但仍然没有运气。 让MediaPlayerActivity只从url加载video的最佳方法是什么? 谢谢 编辑: 我已经按照build议尝试了下面的代码: VideoView videoView = (VideoView) findViewById(R.id.your_video_view); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setMediaController(mediaController); videoView.setVideoURI(Uri.parse("url-here")); videoView.start(); 它只是当我去这个活动崩溃。

在Android应用中播放youtubevideo

在我的Android应用程序中,我希望用户点击一次图像,自动播放YouTubevideo,当video完成后,用户立即返回到应用程序。 Android中最好的方法是什么? 我尝试使用意图。 这在video出现在我认为是一个YouTube网页的作品。 然而,播放video需要另一个水龙头。 如果可能,我想避免这种情况。 我尝试了整个MediaPlayer,prepareAsync,setOnPreparedListener,并没有得到它的工作。 出于某种原因,“准备”从未被召唤过。 没有例外被抛出。 我正在使用模拟器进行testing,而我是Android新手,因此我不确定在物理设备上的行为是否会有所不同。 通过使用webviews获得创意,我在iOS上得到了很好的运行。 我希望在Android上更直接。 该文件确实使声音直截了当。 干杯!

video播放给黑屏,但有声音

我很难过 我试图用媒体播放器播放video,但audio播放时,我所得到的只是一个黑色的窗口。 我见过有关这个问题的其他post,但我没有find解决办法。 我试图按照他们的build议。 媒体播放器在播放前准备好。 在播放之前,表面支架已创build并设置为媒体播放器的显示屏。 在三星Galaxy Tab和三星Galaxy S上testing 我正在编译API级别7。 video本身可以在SD卡的设备video应用程序中播放,所以它应该是兼容的。 表面视图与video大小不一样。 所以这可能是一个问题。 我需要做些什么或自动伸展处理? 以下是我在初始化中的内容: RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height); lp.leftMargin = x; lp.topMargin = y; mSurfaceView = new SurfaceView(mActivity); mSurfaceView.requestFocus(); mSurfaceView.setZOrderOnTop(true); mSurfaceView.getHolder().addCallback(player); mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mLayout.addView(mSurfaceView, lp); mMediaPlayer = new MediaPlayer(); mMediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(), assetDescriptor.getStartOffset(), assetDescriptor.getLength()); mMediaPlayer.setOnErrorListener(player); mMediaPlayer.setOnPreparedListener(player); mMediaPlayer.prepare(); 这里是我的callback: public void onPrepared(MediaPlayer mp) { mMediaPlayer.start(); } […]

Android – QCMediaPlayer mediaplayer不存在 – 根本无法播放声音

我试图从Url播放audio,使用下面的代码: String url = "1451739079.mp3"; MediaPlayer player = new MediaPlayer(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); try { player.setDataSource(url); }catch (IOException e){ e.printStackTrace(); } player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); 但是这根本不起作用,在logcat中显示错误: E/MediaPlayer-JNI: QCMediaPlayer mediaplayer NOT present 我已经访问过这个post ,但没有帮助。 请build议如何播放来自Url的audio?