Articles of android mediaplayer

如何识别哪个MP3文件在MediaPlayer.OnCompletionListener中结束?

在我的ativity的onCreate()中,我设置了一个MediaPlayer.OnCompletionListener,然后播放一个MP3文件: MediaPlayer p = MediaPlayer.create(this, R.raw.intro); p.setOnCompletionListener(this); p.start(); 而当玩完时,我只是在这个事件中处理: public void onCompletion(MediaPlayer mp) { // handle completion } 所有漂亮和花花公子,但现在我想播放两个不同的MP3文件,并根据播放的文件处理完成不同 。 有没有办法从MediaPlayer参数告诉哪个片断结束?

Androidaudio效果的WAV文件并保存

需求 Android在SD卡上打开一个.wav文件,播放它,添加一些效果(如回声,音高等),保存文件的效果。 简单:( 我知道的 我可以打开并使用Soundpool或MediaPlayer播放文件。 在使用两者的同时我可以给予一些效果。 即为媒体播放器我可以设置环境混响效果。 使用SoundPool我可以设置播放速度,这就像音高转换。 我现在成功地实施了这些。 但是这两个类都没有任何方法来保存播放的文件。 所以我只能玩,我不能保存音乐的效果。 我想知道的 除了MediaPlayer或SoundPool之外,是否还有其他任何兴趣类别? 不要介意保存,你只是提到课程,我会做与他们保存文件的研究。 任何第三方库,我可以添加效果和保存? 如果它是开放源代码和免 但即使它是专有的,也要提及它们。 任何其他地方,我可以看看。 OpenAL是否支持语音过滤和语音定位? 它会与Android的工作? 准备做肮脏的工作。 你请借给我path.. 编辑: 做了一些更多的search,并遇到AudioTrack 。 但它也不支持保存到文件。 所以没有运气也.. 编辑 好的,如果我自己做了呢? 从wav文件中获取原始字节,然后处理。 我用AudioRecord录制了一个wav文件,得到了一个wav文件。 有什么资源描述低级别的audio处理(我的意思是在字节级别)。 编辑 恩惠的时间到了,我得到了唯一的回报。 7天后,我明白了 我们无法保存我们使用MediaPlayer,AudioTrack等播放的内容 没有可用的audio处理库。 你可以得到原始的WAV文件,并自己做audio处理。 答案给了一个很好的包装类读/写wav文件。 一个很好的java代码来读取和改变wav文件的音调在这里 。

游戏玩m3u8文件Android

尝试使用videoview和mediaplayer播放m3u8文件的多种方式后,我决定放弃。 每次我玩m3u8文件,我只听到声音(请不要写堆栈溢出回答我的问题,我已经把他们都冲了出来)问问周围,终于知道exoplayer也许是我正在寻找。 然而,外行似乎是一个新手,我不能find任何适当的教程 。 这就是说我自己是一个新手,所有关于跟踪器和blabla的谈话似乎对我来说太复杂了。 我只希望能够在我的应用程序中打开所有我的m3u8文件, 而不必将它们传递给vlc或任何外部意图。 logging我使用KitKat和以上。 所以外行应该是可以实施的。 所以,我绝对要求的是一个简单的教程,如何使用exoplayer或其他方式播放我的m3u8文件 ,显示video和播放audio, 而不只是其中之一。 请不要把我链接到谷歌开发的exoplayer页面。 我也去过那里 提前致谢 :)

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(); 它只是当我去这个活动崩溃。