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

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

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

Есть ли какой-либо способ, которым я могу применить это к 6 видео одновременно?

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

3 ответа

Одна большая команда

можно использовать одну команду, если Вы предпочитаете:

ffmpeg -i video1.mp4 -i video2.mp4 -i video3.mp4 -i video4.mp4 -i video5.mp4 -i video6.mp4 \
-map 0 -c:v mpeg4 -q:v 1 -aspect 16:9 video1.avi \
-map 1 -c:v mpeg4 -q:v 1 -aspect 16:9 video2.avi \
-map 2 -c:v mpeg4 -q:v 1 -aspect 16:9 video3.avi \
-map 3 -c:v mpeg4 -q:v 1 -aspect 16:9 video4.avi \
-map 4 -c:v mpeg4 -q:v 1 -aspect 16:9 video5.avi \
-map 5 -c:v mpeg4 -q:v 1 -aspect 16:9 video6.avi

цикл Bash

Или использование удар для цикла для кодирования "пакета", которое является тем, что я сделал бы, потому что это меньше вводит. Это не кодирует их внезапно, но один за другим.

for f in *.mp4; do ffmpeg -i "$f" -c:v mpeg4 -q:v 1 -aspect 16:9 "${f%.*}.avi"; done

Скорость

Что касается кодирования скорости, с mpeg4, самый быстрый метод является ответом вероятного zx485. Мои два примера должны быть о той же скорости друг как друг, но она может зависеть от Ваших аппаратных средств, количества исходных данных, и т.д.

1
ответ дан 3 December 2019 в 06:31

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

#!/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 &

& в конце каждой командной строки определяет команды как фоновые процессы.

, Но знать, что эти процессы "борются" за ресурсы процессора.

5
ответ дан 3 December 2019 в 06:31

Можно использовать эту команду для кодирования целых видео под 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"

-P опция xargs означает количество процессов. Возможно, ffmpeg команда, как предполагается, использует поток для компиляции видео параллельно. как упоминания других, они обрабатывают также "борьбу" за ресурс процессора.

0
ответ дан 3 December 2019 в 06:31

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

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