Я использую ffmpeg для преобразования многих видео в avi с помощью этого кода.
ffmpeg -i input.mp4 -vcodec mpeg4 -qscale:v 1 -aspect 16:9 output.avi
Есть ли способ применить это к 6 видео одновременно?
Простым подходом к их запуску в одно и то же время было бы назвать их фоновыми процессами:
#!/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 &
& в конце каждой командной строки обозначает команды в качестве фоновых процессов .
Но имейте в виду, что эти процессы «сражаются» за ресурсы процессора.
Вы можете использовать эту команду для кодирования целых видео в 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 должна использовать поток для компиляции видео параллельно. как отмечают другие, этот процесс также «сражается» за ресурс процессора.