【问题标题】:Could not play video in the path (/storage/emulated/0/Android/data/com...)无法播放路径中的视频 (/storage/emulated/0/Android/data/com...)
【发布时间】:2020-07-17 07:53:34
【问题描述】:

我已使用以下代码在手机内部保存了我的视频:

public static void DownloadVideo(Context context, String URL) {

        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
        Date date = new Date();
        SimpleDateFormat videoName = new SimpleDateFormat("yyyymmdd_HHmmss");
        String strDate = videoName.format(date);
        request.setDescription("Setting up the AR");
        request.setTitle("AR setup ...");

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        }

        request.setDestinationInExternalFilesDir(context, "/NewVisionARVideos/", "" + strDate + System.currentTimeMillis() + ".mp4");

        System.out.println("count  files  --- " + context.getExternalFilesDir(null).listFiles());

        for(int i = 0; i < context.getExternalFilesDir(null).listFiles().length; i++){

            System.out.println("** each file -- " + context.getExternalFilesDir(null).listFiles()[i]);
        }

        DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
        manager.enqueue(request);

    }

这是我在清单文件中添加的内容:

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这是加载视频的路径:

String path = "/storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4";

以下是我尝试在媒体播放器中播放视频时出现的错误。路径是正确的,并且我已经在清单和手机中启用了权限。

以下是我得到的错误:

D/ArVideoFragment: playbackVideo = /storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4
E/ArVideoFragment: Could not play video [/storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4]
    java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4

在androidMediaPlayer有没有其他播放视频的方法?

编辑:

其实我是在关注blog这个帖子之后才发现指向assets文件夹的。

这是指向资产文件夹的方法 https://gist.github.com/huxaiphaer/268b94a0e7959822fa679a7523701187

【问题讨论】:

  • 您是否自行检查过该文件是否存在于该路径中?你在安卓Q吗? getExternalFilesDir() 不需要任何权限。
  • 是的,我使用的是 Android 10 (Q),@blackapps,甚至视频也可以在同一路径中使用。现在可能做错了什么?
  • 在 Android Q 上,该路径不仅是特定于应用程序的,而且对于其他应用程序是不可见的。因此,当 MediaPlayer 是不同的应用程序时...
  • MediaPlayer,我的意思是 Android 的。我正在研究一个 AR 的东西,如果我扫描一个播放视频的图像,当它们存储在项目中时视频正在工作,所以我求助于将它们转移到内部存储上,所以 MediaPlayer 不会播放它们。带有 FileNotFoundException。然而它在路径中是可用的。那么从内部存储访问视频的最佳方式是什么? @blackapps
  • 我不知道。它可以从uri播放吗?然后使用 FileProvider 提供您的文件。

标签: java android kotlin android-mediaplayer internal-storage


【解决方案1】:

我认为,您没有正确获取外部存储目录。

使用这个

 Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() + "Android/data/com.shliama.augmentedvideotutorial/files/NewVisionARVideos/test.mp4");

正确检查您的路径并检查您的视频。

【讨论】:

    猜你喜欢
    • 2022-10-02
    • 2020-11-03
    • 2014-06-30
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多