Как изменить размер нескольких видео с помощью ffmpeg? - proUbuntu
2 голосов
/ 19 июня 2020
• 1000 он только случайным образом преобразует два o r трех видео и затем завершает работу. Каждый раз все файлы вывода smallvideo[i].mp4 создавались, но не читались. Я пробовал также с -nostdin и без &, но все еще не работает должным образом.

Нет, я пробовал вот так:

ffmpeg -i video1.MP4 -i video2.MP4 -i video3.MP4 ...
-map 0 -vf scale=854:480 smallvideo1,MP4 & \
-map 1 -vf scale=854:480 smallvideo2.MP4 & \
-map 2 -vf scale=854:480 smallvideo3.MP4 & \
...

, и это дало мне эту ошибку r:

$ 
./ffmpeg.sh: line 6: -map: command not found
./ffmpeg.sh: line 5: -map: command not found
...

Преобразует только 1-й.

Я был бы очень признателен, если бы кто-нибудь помог мне разобраться в проблеме!

Ответы [ 3 ]

4 голосов
/ 19 июня 2020

Вы помещаете амперсанд («&») в конце, что означает: переход в фоновый режим. Это означает, что все ваши r преобразований запускаются одновременно. Это проблема для r вы r медленного обслуживания r, потому что ЦП должен одновременно выполнять x кодирования. Таким образом, любое из действий требует очень долгого времени, чтобы завершить sh, не считая r накладных расходов, связанных с потребностями многозадачности.

Просто удалите амперсанды в конце и попробуйте очередной раз. Он должен работать, но это займет время, если это медленная подача r.

Один простой способ последовательного кодирования всех файлов в папке r - использовать bash l oop:

for f in *.MP4 ; do ffmpeg -i "$f" -vf scale=854:480 "small$f" ;  done
1 голос
/ 28 июня 2020

Вы можете определить следующую функцию оболочки:

# Usage: video-resize (file) (scale)
video-resize() {
  ffmpeg -y -i "${1}" -vf scale=854:${2:-480} "${1%.*}.resized.${1##*.}"
}

Затем запустить как:

for file in DJI_*.MP4; do video-resize $file; done
0 голосов
/ 20 июня 2020

Я нашел полное решение для r моих спецификаций c Проблема:

Запустите bash -script:

# screen ./ffmpeg.sh

и внутри сценария

#!/bin/bash
for f in DJI_*.MP4 ; do ffmpeg -i "$f" -vf scale=854:480 "small$f" ;  done

o r с флагом -nostdin afte r "ffmpeg". Теперь я могу отключиться с помощью alt + A alt + D, повторно подключиться с помощью screen -r и даже закрыть терминал =)

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