如何在Android Wearable上播放视频文件?

3

您好,我尝试在Android Wear上播放视频文件。该视频文件位于可穿戴设备的sdcard文件夹中。但是,我无法使用我的Android应用程序播放它。如果在我的智能手机(Nexus 5)上运行相同的应用程序,则可以正常播放。

我该如何在Android Wearable上使用我的Android应用程序播放视频文件。


当您尝试播放视频时,您收到的错误消息是什么? - Wayne Piekarski
无法播放视频文件 - Vijay
这是我在日志中看到的错误信息: E/MediaPlayer(11335): 错误 (1,-2147483648) D/VideoView(11335): 错误: 1,-2147483648 - Vijay
我知道 Wear 上没有与普通手机相同的编解码器可用。因此,您可能需要以不同的方式对视频进行编码。我从未尝试过这个,并且不知道支持什么。 - Wayne Piekarski
2个回答

1

最终我做到了。我不知道这是Android Wear特定的问题还是一个bug,但事实证明

String path = "android.resource://" + getPackageName() + "/" + R.raw.video_file;
File file = new File(path);

在Android Wear设备上无法访问文件。

相反,必须先将文件转换为临时文件:

InputStream ins = MainActivityBackup.this.getResources().openRawResource (R.raw.hyperlapse2);
File tmpFile = null;
OutputStream output;

try {
    tmpFile = File.createTempFile("video","mov");
    output = new FileOutputStream(tmpFile);

    final byte[] buffer = new byte[102400];
    int read;

    while ((read = ins.read(buffer)) != -1) {
        output.write(buffer, 0, read);
    }
    output.flush();
    output.close();
    ins.close();
} catch (IOException e) {
    e.printStackTrace();
}

然后它可以被加载到一个videoView中。
mVideoView.setVideoPath(tmpFile.getPath());

假设您正在使用自己的视频解码器或类库,如ffmpeg或vitamio,因为Android Wear尚不支持本地视频播放。

我大约花了5分钟来实现vitamio,如果需要,可以通过gradle依赖导入(在gradleplease上查找)。我围绕vitamio videoView构建了我的应用程序,它可以像魅力一样工作。它甚至可以播放Flash视频。


我在使用时遇到了一些问题,能否看一下你的 activity_main.xml 文件? - KClough
我已经没有它们了,因为那只是一个实验。据我所记得,主活动XML只是一个Vitamio视频视图,基本上直接从文档中复制过来的。最后,使用Vitamio也不太成功,因为我们需要能够滚动视频帧,但在Android Wear上无法实现。我们的替代方案是一个图像序列,它完美地运行。 - A. Steenbergen

1

Android Wear只包含音频编解码器,从Android Wear 5.0开始,因此普通的MediaPlayer API将不起作用。您需要使用视频库(如ffmpeg)自己创建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接