gpt4 book ai didi

android - 无法通过 Intent 播放视频

转载 作者:行者123 更新时间:2023-11-29 01:25:01 25 4
gpt4 key购买 nike

我的应用程序有一个照片库,显示一个固定的图像列表。我需要向该列表添加一个视频(只有一个,由我提供)。该视频位于扩展文件 中。我想让用户决定他想用来播放视频的视频播放器。所以我选择了intent方法:

public void playVideo(View view){
Intent videoint = new Intent(Intent.ACTION_VIEW);
Uri uri = CustomAPEZProvider.buildUri("test.3gp");
Log.d("TEST", uri.toString());
videoint.setDataAndType(uri, "video/*");
startActivity(videoint);
}

我的 CustomAPEZProvider 如下:

public class CustomAPEZProvider extends APEZProvider {
private static final String AUTHORITY = "com.myapp.package.provider";

@Override
public String getAuthority() {
return AUTHORITY;
}

public static Uri buildUri(String path) {
StringBuilder contentPath = new StringBuilder("content://");
contentPath.append(AUTHORITY);
contentPath.append(File.separator);
contentPath.append(path);
return Uri.parse(contentPath.toString());
}
}

此外,我将此添加到我的 list 中:

<provider android:name="com.myapp.package.CustomAPEZProvider"
android:authorities="com.myapp.package.provider" >
android:exported="true"
android:multiprocess="true">
<meta-data
android:name="mainVersion"
android:value="4"/>
</provider>

提供者 有此元数据,因为扩展文件版本与应用程序版本代码不同。

我知道正在找到该文件,但视频播放器无法播放它。 他们正在启动无法播放此视频窗口(没有错误)。我在许多设备和不同类型的视频上对其进行了测试。我用来测试的 3gp 视频可以从手机的本 map 库中正常播放。

playVideo 方法的第 3 行正在打印这个

content://com.myapp.package.provider/test.3gp

这是正确的,对吧?

扩展文件没有文件夹,文件只是放在根目录下。

此外,我实际上需要播放补丁 扩展文件中的这个test.3gp 视频。在那种情况下会有什么不同吗?我现在正在消除这个障碍。我知道我应该将它添加到提供商的元数据中。

一些额外的信息:扩展文件有几个音频文件,我可以使用 MediaPlayer 毫无问题地播放它们。当然,这是不同的,因为在那种情况下,我是通过获取一个 AssetFileDescriptor 到 obb 扩展文件中的文件来实现的,而对于视频,我需要一个 Uri ,这改变了一切。

我看了很多有类似问题的问题,但都没有帮助。有没有人遇到同样的问题?

也欢迎解决方法。例如,如果需要,我可以接受使用 VideoView

更新

我刚刚意识到视频播放器不工作,即使文件是资源(在可绘制、原始或其他内容中)。我确实设法使用以下代码播放视频:

public void playVideo(View view){
Uri uri = CustomAPEZProvider.buildUri("test.3gp");
getWindow().setFormat(PixelFormat.TRANSLUCENT);
VideoView videoHolder = new VideoView(this);
videoHolder.setMediaController(new MediaController(this));
videoHolder.setVideoURI(uri);
setContentView(videoHolder);
videoHolder.start();
}

但这并不是我想要的,我真的很想让用户选择他喜欢的视频播放器。主要是因为我想把自己从编码一个好看的视频播放器的责任中解放出来。

最佳答案

我认为问题不在于您的代码中的任何地方。或者,如果是,那不是您最大的问题。

我认为您最大的问题是使用 3GP 文件。并非所有设备都支持该格式。您最好使用 MP4。即便如此,也要确保它使用所有 Android 设备都能理解的 CODEC 进行编码。

关于android - 无法通过 Intent 播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com