Android的媒体播放器,PVMFErrNotSupported失败MP3? [英] Android media player fails MP3 with PVMFErrNotSupported?

查看:81
本文介绍了Android的媒体播放器,PVMFErrNotSupported失败MP3?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个下载的MP3,我可以验证为MP3亚行拉我的Mac或PC上,并在其各自的媒体播放器播放。然而,从机器人的错误意味着它不支持的格式。我想这可能会涉及到的目录位置我在哪里存储文件,但没有任何意义(/data/data/com.myapp/files/file_audio.mp3)。这是一个AsyncTask的内部code:

 保护字符串doInBackground(字符串... PARAMS){

        字符串文件名= PARAMS [0];

        尝试 {
            StringBuilder的filenameMp3 =新的StringBuilder()追加(context.getFilesDir())。
            。filenameMp3.append(/)追加(文件名);

            乌里uriMp3 = Uri.parse(filenameMp3.toString());
            Log.d(TAG,听着这铃声![+ uriMp3.toString()+]);

            MediaPlayer的MP = MediaPlayer.create(背景下,uriMp3);
            MP prepare()。
            mp.start();
        }赶上(IllegalStateException异常E){
            Log.e(TAG,e.toString());
            e.printStackTrace();
        }赶上(IOException异常E){
            Log.e(TAG,e.toString());
            e.printStackTrace();
        }

        返回null;
    }
 

下面是日志:

  09-07 23:16:09.617 E / MediaPlayerService(1128):默认的播放器是PV_PLAYER ****************** *****
09-07 23:16:09.617 V / PVPlayer(1128):PVPlayer构造
09-07 23:16:09.617 V / PVPlayer(1128):构建PlayerDriver
09-07 23:16:09.617 V / PlayerDriver(1128):构造函数
09-07 23:16:09.627 V / PlayerDriver(1128):的OpenCore硬件模块加载
09-07 23:16:09.627 V / PlayerDriver(1128):开始播放线程
09-07 23:16:09.627的V / PlayerDriver(1128):startPlayerThread
09-07 23:16:09.627的V / PlayerDriver(1128):InitializeForThread
09-07 23:16:09.627的V / PlayerDriver(1128):OMX_MasterInit
09-07 23:16:09.647的V / PlayerDriver(1128):OsclScheduler ::初始化
09-07 23:16:09.647 V / PlayerDriver(1128):的createPlayer
09-07 23:16:09.657的V / PlayerDriver(1128):AddToScheduler
09-07 23:16:09.657的V / PlayerDriver(1128):PendForExec
09-07 23:16:09.657 V / PlayerDriver(1128):OsclActiveScheduler ::当前
09-07 23:16:09.657的V / PlayerDriver(1128):StartScheduler
09-07 23:16:09.657 V / PVPlayer(1128):送PLAYER_SETUP
09-07 23:16:09.667 V / PlayerDriver(1128):发球员code:2
09-07 23:16:09.667的V / PlayerDriver(1128):CommandCompleted
09-07 23:16:09.667 V / PlayerDriver(1128):完成命令PLAYER_SETUP状态= PVMFSuccess
09-07 23:16:09.667 V / PVPlayer(1128):的setDataSource(/data/data/com.myapp/files/audio.mp3)
09-07 23:16:09.667 V / PVPlayer(1128):prepareAsync
09-07 23:16:09.667 V / PVPlayer(1128):数据源= /data/data/com.myapp/files/audio.mp3
09-07 23:16:09.667 V / PlayerDriver(1128):发球员code:3
09-07 23:16:09.667的V / PlayerDriver(1128):handleSetDataSource
09-07 23:16:09.667 V / PlayerDriver(1128):handleSetDataSource-扫描扩展
09-07 23:16:09.667的V / PlayerDriver(1128):HandleInformationalEvent:PVMFInfoErrorHandlingStart
09-07 23:16:09.667 V / PlayerDriver(1128):HandleInformationalEvent:类型= 26未处理
09-07 23:16:09.667 W / MediaPlayer的(14630):信息/警告(1,26)
09-07 23:16:09.667的I / MediaPlayer的(14630):信息(1,26)
09-07 23:16:09.667的V / PlayerDriver(1128):CommandCompleted
09-07 23:16:09.667 V / PlayerDriver(1128):完成命令PLAYER_SET_DATA_SOURCE状态= PVMFErrNotSupported
09-07 23:16:09.667 E / PlayerDriver(1128):命令PLAYER_SET_DATA_SOURCE完成,错误或信息PVMFErrNotSupported
09-07 23:16:09.667 E / MediaPlayer的(14630):错误(1,-4)
09-07 23:16:09.677 V / PVPlayer(1128):run_init S = -2147483648,取消= 0
09-07 23:16:09.677的V / PlayerDriver(1128):HandleInformationalEvent:PVMFInfoErrorHandlingComplete
09-07 23:16:09.677的W / PlayerDriver(1128):PVMFInfoErrorHandlingComplete
 

任何线索?

解决方案

 的FileInputStream FIS = getBaseContext()openFileInput(filename.toString())。
熔点为新的MediaPlayer();
mp.setOnCompletionListener(onCompleteAudioListener);
mp.setDataSource(fis.getFD());
MP prepare()。
mp.start();
 

加一般检查和错误处理。

I have a downloaded MP3 that I can verify as MP3 by adb pull to my mac or pc and play in its respective media player. However, the error from Android implies that it does not support the format. I think it may be related to the directory location where I am storing the file, but that does not make sense (/data/data/com.myapp/files/file_audio.mp3). This is the code inside an AsyncTask:

    protected String doInBackground(String... params) {

        String filename = params[0];

        try {
            StringBuilder filenameMp3 = new StringBuilder().append(context.getFilesDir());
            filenameMp3.append("/").append(filename);

            Uri uriMp3 = Uri.parse(filenameMp3.toString());
            Log.d(TAG, "Listen to this ringtone! [" + uriMp3.toString() + "]");

            MediaPlayer mp = MediaPlayer.create(context, uriMp3);
            mp.prepare();
            mp.start();
        } catch (IllegalStateException e) {
            Log.e(TAG, e.toString());
            e.printStackTrace();
        } catch (IOException e) {
            Log.e(TAG, e.toString());
            e.printStackTrace();
        }

        return null;
    }

Here is the log:

09-07 23:16:09.617 E/MediaPlayerService( 1128): The Default Player is PV_PLAYER***********************
09-07 23:16:09.617 V/PVPlayer( 1128): PVPlayer constructor
09-07 23:16:09.617 V/PVPlayer( 1128): construct PlayerDriver
09-07 23:16:09.617 V/PlayerDriver( 1128): constructor
09-07 23:16:09.627 V/PlayerDriver( 1128): OpenCore hardware module loaded
09-07 23:16:09.627 V/PlayerDriver( 1128): start player thread
09-07 23:16:09.627 V/PlayerDriver( 1128): startPlayerThread
09-07 23:16:09.627 V/PlayerDriver( 1128): InitializeForThread
09-07 23:16:09.627 V/PlayerDriver( 1128): OMX_MasterInit
09-07 23:16:09.647 V/PlayerDriver( 1128): OsclScheduler::Init
09-07 23:16:09.647 V/PlayerDriver( 1128): CreatePlayer
09-07 23:16:09.657 V/PlayerDriver( 1128): AddToScheduler
09-07 23:16:09.657 V/PlayerDriver( 1128): PendForExec
09-07 23:16:09.657 V/PlayerDriver( 1128): OsclActiveScheduler::Current
09-07 23:16:09.657 V/PlayerDriver( 1128): StartScheduler
09-07 23:16:09.657 V/PVPlayer( 1128): send PLAYER_SETUP
09-07 23:16:09.667 V/PlayerDriver( 1128): Send player code: 2
09-07 23:16:09.667 V/PlayerDriver( 1128): CommandCompleted
09-07 23:16:09.667 V/PlayerDriver( 1128): Completed command PLAYER_SETUP status=PVMFSuccess
09-07 23:16:09.667 V/PVPlayer( 1128): setDataSource(/data/data/com.myapp/files/audio.mp3)
09-07 23:16:09.667 V/PVPlayer( 1128): prepareAsync
09-07 23:16:09.667 V/PVPlayer( 1128):   data source = /data/data/com.myapp/files/audio.mp3
09-07 23:16:09.667 V/PlayerDriver( 1128): Send player code: 3
09-07 23:16:09.667 V/PlayerDriver( 1128): handleSetDataSource
09-07 23:16:09.667 V/PlayerDriver( 1128): handleSetDataSource- scanning for extension
09-07 23:16:09.667 V/PlayerDriver( 1128): HandleInformationalEvent: PVMFInfoErrorHandlingStart
09-07 23:16:09.667 V/PlayerDriver( 1128): HandleInformationalEvent: type=26 UNHANDLED
09-07 23:16:09.667 W/MediaPlayer(14630): info/warning (1, 26)
09-07 23:16:09.667 I/MediaPlayer(14630): Info (1,26)
09-07 23:16:09.667 V/PlayerDriver( 1128): CommandCompleted
09-07 23:16:09.667 V/PlayerDriver( 1128): Completed command PLAYER_SET_DATA_SOURCE status=PVMFErrNotSupported
09-07 23:16:09.667 E/PlayerDriver( 1128): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
09-07 23:16:09.667 E/MediaPlayer(14630): error (1, -4)
09-07 23:16:09.677 V/PVPlayer( 1128): run_init s=-2147483648, cancelled=0
09-07 23:16:09.677 V/PlayerDriver( 1128): HandleInformationalEvent: PVMFInfoErrorHandlingComplete
09-07 23:16:09.677 W/PlayerDriver( 1128): PVMFInfoErrorHandlingComplete

Any clues?

解决方案

FileInputStream fis = getBaseContext().openFileInput(filename.toString());
mp = new MediaPlayer();
mp.setOnCompletionListener(onCompleteAudioListener);
mp.setDataSource(fis.getFD());
mp.prepare();
mp.start();

Plus normal check and error handling.

这篇关于Android的媒体播放器,PVMFErrNotSupported失败MP3?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆