Как при работе с консольным ffmpeg установить -metadata из массива?

Пишу скрипт для работы с коллекцией файлов, который бы фиксил idv3 тэги (проставлял там, где нет и удалял лишние). Столкнулся с такой проблемой - хотел сделать работу более универсальной и нужные теги собирать в массив и потом выводить. Примерно выглядит так:

...
tags=()
artist="Michael Jackson"
has_artist=`ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 $track | wc -l`

if [ $has_artist = 0 ]; then
    tags+=("-metadata artist=\"$artist\"")
fi

if [ ${#tags[@]} != 0 ]; then
    ffmpeg -i $track -c copy ${metadata[@]} $track
fi
...


Проблема в том, что он каким то странным образом не различает $artist как строку и разбивает ее на слова из за чего получаю ошибку

unable to find a suitable output format for 'Jackson'


Если исполнитель состоит из одного слова, то все нормально. Также с многословными именами работает конструкция с кавычками:

ffmpeg -i $track -c copy -metadata artist="$artist" $track


Т.е проблема где то с массивом как я понял
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Zerg89
Измените на
"-metadata artist=$artist"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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