【问题标题】:Intent.ACTION_VIEW video: external storage video "Sorry, this video cannot be played", but in regular android player, it is playableIntent.ACTION_VIEW 视频:外部存储视频“抱歉,此视频无法播放”,但在普通安卓播放器中可以播放
【发布时间】:2013-01-03 04:39:46
【问题描述】:

所以我正在从外部存储(SD 卡)播放视频,播放视频时遇到问题,这是我的代码:

Uri uri = Uri.parse(url);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");

提示“抱歉,此视频无法播放”,但在普通安卓播放器中可以播放。我打印了网址,这就是我得到的:

VideoPlayer url: file:///mnt/sdcard/foldername/video-2012-12-26-21-26--44.mp4

是不是 uri 有问题?如果没有,你能指出我正确的方向吗?另外,如果我尝试使用带有点(。)的文件夹名称,我会遇到问题吗?

url = file:///mnt/sdcard/Android/data/com.example.project/video-2012-12-26-21-26--44.mp4

谢谢。

编辑:由于我真正的问题没有解决,而且没有人想再回答了,我提出了一个新问题: Android: Video is playable from gallery but when I play it using Intent.ACTION_VIEW type video, cannot play

对我的问题的部分回答:

由于命名约定而出现此问题。我认为播放器不接受包含“--”的文件名。所以我通过更改文件名格式解决了这个问题。

//免责声明:我没有完整的解释和来源,但此信息只是从我的解决方法中推断出来的。

【问题讨论】:

    标签: android android-intent android-video-player


    【解决方案1】:

    确保您通过 Intent 传递正确的 sdcard 路径。最好的方法是使用Environment.getExternalStorageDirectory() 获取 SDCARD 路径而不是传递静态字符串:

    intent = new Intent(Intent.ACTION_VIEW);
    
    File sdCard = Environment.getExternalStorageDirectory();
    File file = new File(sdCard, "/foldername/video-2012-12-26-21-26-44.mp4");
    
    intent.setDataAndType(Uri.fromFile(file), "video/*");
    
    startActivity(intent);
    

    【讨论】:

    • 好的,我实现了上面的代码,路径正确,文件存在(我已经检查过),但是视频仍然无法播放。我已经尝试过“/com.example.project/video-2012-12-26-21-26-44.mp4”和“/foldername/video-2012-12-26-21-26-44.mp4” (两者都有文件)。但它仍然无法正常工作。还有什么建议吗?我再说一遍,该文件可以通过在图库中浏览来播放,但不能使用代码。
    • @Marl : k 给我一个视频链接
    • 我想我部分知道发生了什么,我认为这个问题是由于命名约定造成的。当我将文件重命名为更简单的文件时,视频可以播放。但是当我使用我的原始文件名格式时,视频不是。所以我通过改变我的文件名格式来解决这个问题。具体示例:文件名中包含“--”将使视频无法播放。
    • 我不想打开网址视频
    【解决方案2】:

    您首先需要将路径转换为真实路径。 例如,如果您的路径类似于 content://flod/123 您需要将其转换为 foldername/file.mp4 + Environment.getExternalStorageDirectory() 等路径

    所以你的路径字符串将是: 字符串路径 = Environment.getExternalStorageDirectory() + "文件夹名/文件.mp4"; 然后你需要将其转换为文件:

    文件文件 = 新文件(路径);

    最后在行中使用这个:

    intent.setDataAndType(Uri.fromFile(file), "video/*");

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2014-06-13
      相关资源
      最近更新 更多