В структуре как это:
/home/me/Videos/Downloads/Videos/xml tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Main/video2.mp4
....
/home/me/Videos/Downloads/Videos/java tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Main/video2.mp4
....
Я должен преобразовать видео и сохранить новые файлы как это:
/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video2.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video2.mp4
Я хочу преобразовать эти видео использование ffmpeg
путем прокручивания вложенного цикла Folder/Subfolders/Videos
.
Путем выполнения этого я могу циклично выполниться через все файлы в текущем каталоге:
for f in *; do ffmpeg -i "$f" ... ; done
Как я могу использовать вложенные циклы для этого, так, чтобы сам удар мог автоматически просмотреть Videos/xml tutorials/main/
и сделайте преобразование, вставьте их Videos/xml tutorials/converted
, и оно перемещаются в Videos/java tutorials/main/
?
Наконец понятый это, по всей вероятности существует более эффективный/оптимизированный способ сделать это, но на данный момент безотносительно работ. Но ffmpeg не взял пробелы в именах, так должен был переименовать всех их путем замены пространства подчеркиванием.
папка In Videos, которая имеет различные учебные руководства, выполняя это, работает -
for f in * ; do
for g in "$f"/Main/* ; do
ffmpeg -i "$g" -s 854x480 -c:v libx265 "$f"/Converted/$(basename $g)
done
done
Здесь, $f
получает названия папок, и затем $g
получает названия самих файлов, наряду с их путями и расширениями.