- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我有一个文件的完整路径。将该文件加载到 MediaPlayer 中的更好方法是什么?
String filePath = "somepath/somefile.mp3";
mediaPlayer.setDataSource(filePath);
或
String filePath = "somepath/somefile.mp3";
File file = new File(filePath);
FileInputStream inputStream = new FileInputStream(file);
mediaPlayer.setDataSource(inputStream.getFD());
inputStream.close();
这有关系吗?简单地使用路径似乎更容易,但是否有理由做额外的工作来使用 FileDescriptor?
最佳答案
其实在某些情况下还是有区别的。
mediaPlayer.setDataSource(String path)
调用 mediaPlayer.prepare()
时会失败, 如果您尝试从 getApplicationContext().getFilesDir()
加载文件,取决于文件的保存方式。例如,如果我使用 new RandomAccessFile(filePath, "rw")
编写文件,如果您使用 mediaPlayer.setDataSource(String path)
,则媒体播放器实际上无法读取该文件. prepare()
将立即触发error(1, -2147483648)
来自媒体播放器;本质上是文件权限错误。 SDK 9 引入 file.setReadable (boolean readable, boolean ownerOnly)
这可能允许您通过设置 ownerOnly
来解决此问题为 false...但如果您需要支持较旧的 SDK,这对您没有帮助。
然而,mediaPlayer.setDataSource(FileDescriptor fd)
没有这个问题,媒体播放器将成功地准备相同的文件而没有权限问题。
关于android - MediaPlayer setDataSource,最好用path还是FileDescriptor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625680/
我尝试使用 Surface View 创建媒体播放器。当我尝试为媒体播放器设置数据源时,出现了 setDataSource 失败异常。如何解决? 代码: @Override public void s
JSTL <sql:setDataSource> 标签用来在 JSP 页面中配置数据源,并将其存储在某作用域的变量中。 语法 JSP <sql:setDataSource>
我已经设法用音频文件填充我的 ListView,但是当单击 ListView 中的项目时没有任何反应,我收到异常“setDataSource failed”。 public class songsFr
我对 MediaMetadataRetriever setdatasource 方法有疑问。我创建了一个简单的项目。 main.xml 只有一个 TextView ,它应该显示 music.mp3 的
我在使用 MediaMetadataRetriever 检索 mp3 文件的艺术家和标题时收到错误(setDataSource 失败 0x8000000),但我不明白为什么。在我的模拟器上运行时,它运
我正在尝试使用 Android MediaMetadataRetriever 获取 mp4 格式的录制视频的长度 - 但出现异常: 07-13 13:54:32.686: E/AndroidRunti
阅读“Media Playback”和“MediaPlayer”android 文档后,我仍然感到困惑,需要有关 setDataSource 的有经验的建议重载方法。 我在项目的 Service 组件
假设我有一个文件的完整路径。将该文件加载到 MediaPlayer 中的更好方法是什么? String filePath = "somepath/somefile.mp3"; mediaPlayer.
我有一个 UIViewController其中包含此属性: @property (weak, nonatomic) IBOutlet UITableView *customerTableView; 在
我是 android 编程的初学者,我想编写 mp3 应用程序以从 URL 调用一些 mp3 文件,所以当我在 android 开发人员中显示“媒体播放器”时,我将 URL 放在 setDataSou
我正在开发一个使用 mediaMetadataRetriever.setDataSource 抓取视频帧的应用程序。但是,当我设置视频路径时,它给了我一个非法参数异常并崩溃。我是 java 和 And
我正在尝试使用 MediaExtract 提取 avi 文件的轨道 0(视频轨道)并使用 MediaCodec 编码为 h264 格式。这是我配置 mediaCodec 的方式 public Medi
我收到以下错误 java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA 我想知道这个状态是什么。我正在使用函数 Me
我正在尝试使用此类获取远程视频的大小,如果视频是远程的,我将收到 IllegalArgumentException。 视频是存储在一台服务器上的mp4... 如果我用 mediaplayer 播放视频
我正在尝试使用 NSarray 使用 NSTableView 创建一个简单的菜单。当我将数据源设置为我创建的类时,出现 EXC_BAD_ACCESS 错误。奇怪的是,它在 macruby 中有效吗?实
我在 VS 2010 sap crystalreports 中遇到问题,使用 c# 制作 Windows 应用程序。 我在使用以下代码时遇到以下错误: CrystalReport1 cr1 = ne
这段代码曾经有效。然后,也许我在某个地方改变了一些东西(或者如果我对 Android 的了解是正确的,则更新在媒体播放器中引入了一个错误)。它停止在 一些 设备上运行!尤其是我的 Nexus S (2
如果使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但如果使用非静态方法MediaPlayer.setDataSource(String),则无法正常播
我是 Android 开发新手。我正在尝试根据位置选择歌曲时播放歌曲。它总是崩溃并且有多个错误。我真的不明白我做错了什么。可能是愚蠢的错误,请帮助。 public class BackgroundAu
这个问题很奇怪。问题是,每当我尝试使用时间戳字符串命名文件时,setDataSource 方法都会失败并给出 IOException,但如果我给出诸如包含字母表(例如“Hello.m4a”)的名称,则
我是一名优秀的程序员,十分优秀!