У меня есть следующая функция в сценарии bash. Когда я его выполняю, я всегда получаю возвращаемую строку из команды ffprobe, содержащую ошибку в виде:
Аргумент «-» указан как имя входного файла, но «/media/Testing/Sorted/badfile.mp4» уже указано.
Я попытался переместить аргументы в ffprobe внутри кавычек для имени файла (не решает проблему). Я попытался переместить аргументы в массив и передать «${array[@]}» (не решает проблему). Очевидно, я упускаю здесь что-то ослепительно очевидное.Где я ошибаюсь?
# ПроцессВидео
#
# Принимает имя входного файла (предположительно для видеофайла, но функция не
# на самом деле попытаться проверить это), и передает это ffprobe, чтобы сделать некоторые основные
# обработка видеопотока. Мы устанавливаем флаг, чтобы любая обнаруженная ошибка
# заставить ffmpeg выйти с установленным кодом ошибки. Если ffmpeg устанавливает код ошибки, мы
# записать имя файла в файл.
#
# ProcessVideo <путь к видео>
Процессвидео()
{
местный vfn=$1
локальный ec=0
локальный вывод
echo "Проверка видео $vfn"
выход=$(ffprobe -предупреждение уровня журнала "$vfn" - 2>&1)
эк=$?
# если ((эк > 0))
# тогда
# echo "Ошибка выхода $ec $vfn"
# LogErr "Ошибка выхода $ec $vfn"
#фи
# если [[ "$oput" == *"moov atom"* ]]
если [[ -n "$oput" ]]
тогда
echo "Строка ошибки $vfn"
LogErr "Строка ошибки $vfn"
LogErr "$ вывод"
фи
}
Обратите внимание, что LogErr в приведенном выше скрипте — это еще одна функция — все, что она делает, — это берет переданную строку и записывает ее в указанный файл журнала. Если кто-то считает, что это имеет отношение к проблеме, я опубликую это, но я так не думаю.