Почему недавно созданный файл Android Camera2 MP4 не воспроизводится на некоторых проигрывателях, но не на других - PullRequest
0 голосов
/ 06 мая 2019

Я сталкиваюсь с проблемой, когда при использовании внешней библиотеки ( ссылка ) и записи нового файла 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

Это просто настраиваемая глобальная переменная, которая позволяет выполнять запись во внешний каталог.

1 Ответ

1 голос
/ 06 мая 2019

Оказывается, проблема связана со схемой именования / логикой имени файла.Первоначально я написал свое имя так:

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());

это исправилопроблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...