ffmpeg: 'Протокол не найден 'для обычного имени файла

Как насчет perl :

#!/usr/bin/perl

use strict;
use warnings;

use JSON;

my $json_list; 
while ( my $json_str = <> ) { 
    push ( @$json_list, from_json ( $json_str ) );
}

print to_json ( $json_list, { pretty => 1, canonical => 1 } );

Принимает данные на STDIN или myscript.pl somefilename и берет указанный вами ввод и строит из него массив JSON.

Результат:

[
   {
      "a" : 1,
      "b" : 1,
      "c" : 2
   },
   {
      "a" : 3,
      "b" : 3,
      "c" : 1
   },
   {
      "a" : 1,
      "b" : 2,
      "c" : 3
   }
]
4
02.02.2018, 13:32
2 ответа

Я пришел в эту тему за сообщением, просто чтобы добавить один совет для пользователей, я обнаружил, что если в самом имени файла есть ':', это вызовет проблему, так как некоторые программы генерируют файлы с отметкой времени например "аудио 12 :34 :14.ogg"

14
27.01.2020, 20:48

Для меня ошибка «Протокол не найден» была вызвана «:» в имени выходного файла. Удаление и повторное добавление звучит как обходной путь и ненужное усложнение. К счастью, мне удалось найти решение -, просто добавив file:перед именем файла. Например, это будет работать, даже если $fileсодержит подстроку типа «09 :02 :21» :

.
ffmpeg -i "$file" -acodec pcm_s16le -vcodec copy "file:${file:r:t}".mov

В приведенной выше команде только часть file:важна в контексте этого ответа; но в случае, если кто-то задается вопросом, что делает ${file:r:t}, он в оболочке zsh удаляет абсолютный путь и строки расширения -из переменной $file. Обратите внимание, что file:не требовалось для имени входного файла в этом случае, но было необходимо для имени выходного файла, даже если оба содержат несколько символов " :".

4
25.11.2020, 06:52

Теги

Похожие вопросы