我试图让媒体播放器播放存储在本地/外部存储器中的媒体文件。
媒体文件使用单独的活动下载并存储在本地/外部存储中。有关存储的示例代码,请参阅下面。
FileOutputStream fos = openFileOutput("myfile.mp4" , Context.MODE_WORLD_WRITEABLE);
fos.write(byteArrayBuf.toByteArray());
fos.close();
对于播放同一文件,我使用。
mMediaPlayer = new MediaPlayer();
ParcelFileDescriptor parcel = ParcelFileDescriptor.open(new File( URI.create("file:///data/data/com.mypackage/files/myfile.mp4")),ParcelFileDescriptor.MODE_READ_WRITE);
mMediaPlayer.setDataSource(parcel.getFileDescriptor());
mMediaPlayer.setDisplay(mHolder);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(this);
/** On Prepared Implementation **/
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
}
但是,媒体播放器拒绝播放文件,并且总是以错误(1,)失败。我真的是无能为力,使这个媒体播放器运行,因为我似乎已经做了一切与代码示例内联,使它从本地/外部存储读取文件。
注意:当我替换一个本地文件与一个文件从res/生文件夹,这似乎发挥罚款。这是特别有关的文件不被应用程序或媒体播放器可读。如果能让这篇文章发挥作用,我们将不胜感激。
@克里斯:我暂时让文件世界可写,一旦我让媒体播放器工作,事实上,我会将文件写为世界可读。到目前为止,硬编码路径是经过深思熟虑的,因为我只想首先确保读取文件时不会出现任何歧义。事实上,我通过adb shell和DDMS检查了文件是否存在。一旦我读取了文件,实际上我可能会使用一些更合理的方法,比如getFilesDir()。Logcat输出如下所示。
surfaceCreated
I/AwesomePlayer( 34): reset
I/AwesomePlayer( 34): cancel player events
I/AwesomePlayer( 34): cancel player events
I/SampleTable( 34): There are reordered frames present.
D/MyPlayerActivity( 460): surfaceChanged
I/ActivityManager( 82): Displayed com.mypackage/.MyPlayerActivity: +1s997ms
D/MyPlayerActivity( 460): Video Prepared
D/AudioSink( 34): bufferCount (4) is too small and increased to 12
E/MediaPlayer( 460): error (1, -2147483648)
E/MediaPlayer( 460): Error (1,-2147483648)
正如Chris Stratton所评论的,不要硬编码到内部或外部存储的路径。它们可以在某些系统上工作,但不能保证适用于所有系统。
使用getFilesDir()
查找目录的路径。从文件中。。。
公共文件
返回文件系统上的目录的绝对路径,其中存储了使用openFileOutput(String, int)创建的文件。
返回保存应用程序文件的目录的路径。
您可以对返回的文件调用
getAbsolutePath()
,然后追加/myfile。mp4
到它,并使用它来设置数据源(…)
Mediaplayer
上的code>。
我正在用JavaFX开发我认为应该是一个简单的任务的media player,它将在用户默认的音乐文件夹路径(使用fedora)中播放存储在本地硬盘驱动器上的mp3文件。我可以很好地从命令行播放所有mp3文件,但当我尝试通过javafx.scene.media库播放时,javafx一直告诉我mp3是一种受支持的媒体类型。我已经下载了我能找到的每一个图书馆,但没有用。下面是一个实际尝试打开文件并播放
null
当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误:
1.1.1. 多媒体播放 1.1.1. 多媒体播放 我们事实上对上游芯片厂商自带的播放器方式做了调整。 Amlogic 芯片 BaseCode 我们禁用了芯片厂商的原生代码的 libplayer 包,原因是芯片厂商的播放器是直接使用 ALSA 框架来调用音频播放功能的。 这对我们 RokidOS 平台让多个进程使用音频设备造成阻碍。基于这个因素,我们使用了 RokidOS 开发的媒体播放库 lib
我想使用MediaPlayer/MediaView在我的JavaFX应用程序中显示web cam的实时流。我尝试使用ffmpeg录制HLS并播放生成的m3u8文件,但这会引发以下异常(VLC播放视频时没有问题): 我调试了播放器的创建,当。此本机方法返回错误代码,javafx将其映射到。 我使用以下ffmpeg命令录制视频: 我非常确定编码符合javafx的要求,因为如果我将输出容器从m3u8更改
我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?