大家好,我想用c++写一个测试代码用来播放mp3文件,但是发现了点问题,代码简单如下#include <media/mediaplayer.h>
#include ....int main(int argc, char **argv)
{
MediaPlayer mp;
mp.reset();
mp.setDataSource("/data/local/logo_music.mp3", NULL);
mp.setAudioStreamType(3);
mp.prepare();
mp.start();
.....
.....
}
Android.mk里面LOCAL_SHARED_LIBRARIES :=libmedia ....编译好在板子上运行,发现程序卡在prepare()里了,跟踪代码发现如果能调用到MediaPlayer::notify()就可以跑下去了,但是程序一直收不到notify,不知道怎么办,在Music apk里面能够播放的log如下:
E/MediaPlayer( 2312): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2312): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2312): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
E/MediaPlayer( 2312): message received msg=1, ext1=0, ext2=0
...而我的程序运行之后的log是:
E/MediaPlayer( 2307): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2307): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2307): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
卡在这里不动了,收不到message....我想把这段代码加到bootanimation里面的,作为开机音乐,但是播不了,各位大侠帮帮我啊
#include ....int main(int argc, char **argv)
{
MediaPlayer mp;
mp.reset();
mp.setDataSource("/data/local/logo_music.mp3", NULL);
mp.setAudioStreamType(3);
mp.prepare();
mp.start();
.....
.....
}
Android.mk里面LOCAL_SHARED_LIBRARIES :=libmedia ....编译好在板子上运行,发现程序卡在prepare()里了,跟踪代码发现如果能调用到MediaPlayer::notify()就可以跑下去了,但是程序一直收不到notify,不知道怎么办,在Music apk里面能够播放的log如下:
E/MediaPlayer( 2312): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2312): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2312): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
E/MediaPlayer( 2312): message received msg=1, ext1=0, ext2=0
...而我的程序运行之后的log是:
E/MediaPlayer( 2307): setDataSource(/data/local/logo_music.mp3)
E/MediaPlayer( 2307): MediaPlayer::setAudioStreamType, type = 3
E/MediaPlayer( 2307): prepare
I/OMXPlayer( 2052): Loading content: /data/local/logo_music.mp3
I/OMXPlayer( 2052): LEVEL: 1 FUNCTION: InitCoreParser LINE: 834
I/OMXPlayer( 2052): fail to create the parser: -20
D/AudioSink( 2052): bufferCount (1) is too small and increased to 4
D/iMX51ALSA( 2052): route called for devices 00000004 in mode 0...
D/iMX51ALSA( 2052): open called for devices 00000004 in mode 0...
W/iMX51ALSA( 2052): enable MMAP access for PCM
I/iMX51ALSA( 2052): Initialized ALSA PLAYBACK device default
卡在这里不动了,收不到message....我想把这段代码加到bootanimation里面的,作为开机音乐,但是播不了,各位大侠帮帮我啊
解决方案 »
- Android中使用intent进行页面跳转,运行时出现异常
- JNI如何才可以读data/app目录下自身APK文件的大小?
- 哪位大侠用过在linux虚拟机上编译android源代码,帮帮忙!!!
- Android下的HttpClient上传图片
- 如何定义默认输入法
- android开发版本选项选择问题
- android 如何实现对事件的引用
- android初学者求助大牛
- android自动化测试使用uiautomator怎样获取context?
- okhttp3如何设置连接与读取超时
- 100分 求高手解答android 手机保存图片在相册目录问题
- 帮忙看下读取帐号密码登录验证的问题。只能验证最后1条数据
也就是说想写一个程序来实现/system/bin/playmp3的类似程序。
这里mp不可以被释放,我也不太明白为什么
mp->setDataSource("/system/media/audio/ui/camera_click.ogg", NULL);
mp->prepare();
mp->start();
mp->disconnect();