Articles of android mediaplayer

Android MediaPlayer警告:应该已经设置了字幕控制器

我的Nexus 4升级到4.4,现在每当MediaPlayer发出声音时,我都会收到警告: Should have subtitle controller already set 而且当调用mp.release()我现在得到警告 mediaplayer went away with unhandled events 带有4.3的Nexus 7上的相同应用程序不显示这些警告。

MEDIA_ERROR_SERVER_DIED是什么意思?

在Android文档中 ,有一个常量定义的MEDIA_ERROR_SERVER_DIED ,描述如下: 媒体服务器死了。 在这种情况下,应用程序必须释放MediaPlayer对象并实例化一个新对象。 这看起来很模糊。 媒体服务器死了是什么意思? 为什么会死? 之后立即尝试再玩一次是否合适呢?

如何在Android中无间隙地循环声音?

我想在android中无间隙地循环声音。 我尝试使用代码mediaplayer.setLooping(true)来循环声音,但是当第一个声音结束并且下一个声音开始时总会有一点停顿。

在recyclerview中使用textureview播放video

我正在尝试使用像Vine或Instagram应用程序这样的video实现列表。 当列表项显示或完全可见时,他们播放video播放的位置,并且当列表项被隐藏时video暂停。 我正在使用带有媒体播放器的textureview从url播放video,并将其作为listler项目添加到recyclelerview中。 以下是我的代码。 VideosAdapter类: public class VideosAdapter extends RecyclerView.Adapter { Context context; private ArrayList urls; public static class ViewHolder extends RecyclerView.ViewHolder { public LinearLayout layout; public TextView textView; public ViewHolder(View v) { super(v); layout = (LinearLayout) v.findViewById(R.id.linearLayout); textView = (TextView) v.findViewById(R.id.textView); } } public VideosAdapter(Context context, ArrayList urls) { this.context = context; this.urls = […]

Android WebView播放HTML5 / h.264 / mp4video,如何获取MediaPlayer

我有一个Activity ,它是一个WebView 。 我里面有一个WebChromeClient 。 在其中,有几个回调用于返回处理video位的MediaPlayer 。 例如: @Override public void onPrepared(MediaPlayer mp) { Log.i(TAG, ” ————-> onPrepared”); } 当我使用HTML 标签(通过注入)将MP4流加载到WebView时,这些无法触发。 当我finish()活动时,logcat会报告: 09-13 23:55:24.590: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message. 09-13 23:55:24.680: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message. 09-13 23:55:24.680: E/MediaPlayer(7949): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message. […]

rtspvideo性能作为浏览器触发的意图与我的应用程序触发的意图

嗨,我正在创建一个应用程序,它将播放livestream.com的rtsp直播频道。 我在我的应用程序中使用intent启动播放器如下: iPlayer = new Intent(Intent.ACTION_VIEW); //iPlayer.setType(“video/*”); iPlayer.setData(Uri.parse(videoUrl)); startActivity(iPlayer); 通过我的应用程序启动媒体播放器时,video性能非常差。 它会停止每隔几秒钟缓冲一次,播放几秒钟并暂停再次缓冲。 另一方面,如果我在Android浏览器中打开url(例如http://m.livestream.com/abcalbania ),它在该页面上有一个video标签并触发video播放器。 这一次,video运行非常顺利。 知道为什么会这样吗? 以及如何解决这个问题? 我不想将浏览器URL作为意图启动。 这是在Android 2.3.4的Atmel cortex A9芯片组上完成的

MediaPlayer.setDataSource(String)不使用本地文件

如果我使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但是如果我使用非静态方法MediaPlayer.setDataSource(String)则它不起作用。 发生的事情是我在调用MediaPlayer.prepare()时遇到同步exception: prepare exceptionjava.io.IOException: Prepare failed.: status=0x1 这是我的代码(省略日志记录): String filename = “android.resource://” + this.getPackageName() + “/raw/test0”; mp = new MediaPlayer(); try { mp.setDataSource(filename); } catch (Exception e) {} try { mp.prepare(); } catch (Exception e) {} mp.start(); 请注意,我没有收到有关未find文件或任何内容的错误。 该文件的全名是test0.mp3,我将它放在Eclipse的/ res / raw /目录中。 我假设我正在设置错误的路径,但我在网上find的所有示例都使用setDescriptor版本的setDataPath而不是String版本的setDataPath。 编辑:如果我使用方法MediaPlayer.setDataSource(FileDescriptor)并将文件放在Eclipse中的/ assets /目录中,我也可以播放本地mp3。 编辑#2:我接受了这是不可能的答案,但后来意识到我正在使用的库(openFrameworks)实际上使用String方法来加载文件。 看这里: https://github.com/openframeworks/openFrameworks/blob/master/addons/ofxAndroid/ofAndroidLib/src/cc/openframeworks/OFAndroidSoundPlayer.java

Android MediaPlayer需要很长时间来准备和缓冲

我的应用程序需要很长时间来准备和缓冲音频流。 我已经读过这个问题为什么Android的MediaPlayer需要这么长时间来准备一些实时流播放? 然而,它只是说人们已经遇到过这个问题,它没有说明如何改善这个问题。 我在所有版本的Android中都遇到过这种情况,从2.2 – 4.1.2开始测试。 这些流具有适合移动和3G连接的比特率。 在相同的iOS应用程序中,相同的流只需不到一秒钟即可开始缓冲。 有没有办法指定应该缓冲的时间量? 我知道Tune In广播应用程序提供此function( https://play.google.com/store/apps/details?id=tunein.player )。 谢谢。 编辑:我再次测试,发现它只发生在运行Gingerbread及以上的设备上(> = 2.3)。 我知道Android将底层框架从OpenCore改为StageFright。 那么我该如何优化媒体框架呢? 旧的HTC Wildfire可以准备,流式传输和播放,这比全新的HTC One X和Nexus 7快10倍。

流式传输到Android MediaPlayer

我正在尝试在我的应用程序中编写一个轻量级HTTP服务器,以feed动态生成的MP3数据提供给内置的Android MediaPlayer 。 我不允许将我的内容存储在SD card 。 我的输入数据基本上是无限长度的。 我告诉MediaPlayer它的数据源基本上应该是”http://localhost/myfile.mp3″ 。 我有一个简单的服务器设置,等待MediaPlayer发出此请求。 但是, MediaPlayer并不是很合作。 首先,它进行HTTP GET并尝试获取整个文件。 如果我们尝试简单地将数据转储到socket那么我们尝试使用HTTP Range标头以块的forms写入数据。 MediaPlayer不喜欢这样,并且不会继续请求后续的块。 有没有人有成功的数据直接流入MediaPlayer ? 我需要实现RTSP或Shoutcast服务器吗? 我只是错过了一个关键的HTTP header ? 我应该在这里使用什么策略?

Android MediaPlayer / VideoView错误(1,-2147483648)

我从文件路径设置VideoView的video时遇到了不一致的经历。 VideoView myVideoView = findViewById(R.id.videoView); … myVideoView.setVideoPath(videoFilename); … myVideoView.start(); videoFilename是我的缓存目录中video的绝对路径: String videoFilename = new File(context.getCacheDir(), “myawesomevideo.mp4”).getAbsolutePath(); 在Android SDK> = 16(Jelly Bean)中,这很好用,我的精彩video播放。 在Android 4.0.4(SDK = 15)中,当调用myVideoView.start()时,MediaPlayer会中断。 错误是永远无益的: error (1, -2147483648) 我在这里想念的是什么? 直接从我的包资产(res / raw)或互联网( http://something.com/myawesomeinternetvideo.mp4 )加载文件,但我无法弄清楚如何从缓存目录中读取文件!