Вы можете редактировать несколько видео одновременно с помощью ffmpeg?

Я использую ffmpeg для преобразования многих видео в avi с помощью этого кода.

ffmpeg -i input.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output.avi

Есть ли способ применить это к 6 видео одновременно?

1
задан 26 November 2016 в 01:12

2 ответа

Простым подходом к их запуску в одно и то же время было бы назвать их фоновыми процессами:

#!/bin/bash
ffmpeg -i input1.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output1.avi &
ffmpeg -i input2.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output2.avi &
ffmpeg -i input3.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output3.avi &
ffmpeg -i input4.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output4.avi &
ffmpeg -i input5.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output5.avi &
ffmpeg -i input6.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output6.avi &

& в конце каждой командной строки обозначает команды в качестве фоновых процессов .

Но имейте в виду, что эти процессы «сражаются» за ресурсы процессора.

4
ответ дан 23 May 2018 в 03:52
  • 1
    Я пытаюсь не допустить многократного ввода кода. Я просто говорю 6, потому что у меня есть много папок видео, в которых есть по 6 видеороликов. – paulST 26 November 2016 в 01:40
  • 2
    @paulST: Я изменил свой ответ. Просто поместите эти строки в файл сценария и выполните сценарий (конечно, с соответствующими путями имен ввода и вывода), и он будет функционировать, как описано в вашем вопросе. – zx485 26 November 2016 в 01:47
  • 3
    как я могу поместить его в файл сценария? – paulST 28 November 2016 в 20:29
  • 4
    @paulST: Вы в значительной степени скопируете вышеуказанный раздел кода в (текстовый) файл, сделайте его исполняемым с помощью chmod +x [fileName] и выполните его. Конечно, имена файлов должны быть скорректированы с учетом ваших потребностей. – zx485 28 November 2016 в 22:09

Вы можете использовать эту команду для кодирования целых видео в cwd рекурсивно.

find -name '*.avi' | sed 's/\.avi$//g' | xargs --replace ffmpeg -i "{}.mp4" -c:v mpeg4 -q:v 1 -aspect 16:9 "{}.avi"

И если вы хотите кодировать параллельно, вы можете использовать эту команду.

find -name '*.avi' | sed 's/\.avi$//g' | xargs --replace ffmpeg -i "{}.mp4" -c:v mpeg4 -q:v 1 -aspect 16:9 "{}.avi"
[d2 ] -P опция xargs означает количество процессов. Возможно, команда ffmpeg должна использовать поток для компиляции видео параллельно. как отмечают другие, этот процесс также «сражается» за ресурс процессора.

0
ответ дан 23 May 2018 в 03:52

Другие вопросы по тегам:

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