【问题标题】:Why does a newly created Android Camera2 MP4 File fail to play on some players, but not others为什么新创建的 Android Camera2 MP4 文件无法在某些播放器上播放,而在其他播放器上则无法播放
【发布时间】:2019-05-06 15:22:12
【问题描述】:

我遇到了一个问题,即在使用外部库 (link) 并编写新的 MP4 文件时,导致它无法在多个播放器上播放,但在其他播放器上完全可以播放。

理论上,它应该可以立即在所有人身上播放,但事实证明并非如此。我正在创建这样的视频文件:

        String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss",
                    Locale.getDefault()).format(new Date());
        String imageFileName = "MyApp_" + timeStamp + "";            
        File video;
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
        try {
            if(this.saveVideoToGallery){
                storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
                if(!storageDir.exists()){
                    boolean createdFolder = false;
                    try {
                        createdFolder = storageDir.mkdir();
                    } catch (Exception e){
                        e.printStackTrace();
                    }
                    if(!createdFolder){
                        storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
                    }
                }
                video = new File(storageDir, imageFileName + ".mp4");
            } else {
                if(!storageDir.exists()) {
                    try {
                        storageDir.mkdir();
                    } catch (Exception e) {}
                }
                video = File.createTempFile(
                        imageFileName,  /* prefix */
                        ".mp4",         /* suffix */
                        storageDir      /* directory */
                );
            }
        } catch (IOException ioe){
            ioe.printStackTrace();
            video = new File(storageDir + imageFileName + ".mp4");
        }

注意布尔值

saveVideoToGallery

只是一个可配置的全局变量,允许写入外部目录。

【问题讨论】:

    标签: android android-camera2 android-file


    【解决方案1】:

    原来问题与命名模式/文件名逻辑有关。我最初是这样写我的名字的:

    String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss",
                            Locale.getDefault()).format(new Date());
    

    但是当我删除冒号 (':') 并使用下划线 ("_") 时,

    String timeStamp = new SimpleDateFormat("yyyy-MM-dd-HH_mm_ss",
                            Locale.getDefault()).format(new Date());
    

    它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 2018-02-05
      • 1970-01-01
      • 2013-11-18
      相关资源
      最近更新 更多