Я пытаюсь объединить несколько файлов flv с помощью ffmpeg
. ffmpeg
требует списка файлов в этом формате:Список файлов в папке в натуральном порядке с использованием сценария bash
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
С некоторым поиском и испытаниями, я пришел с этой командой одна линии:
ffmpeg -safe 0 -f concat -i <(for entry in "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"/*.flv;do echo "file '$entry'";done) -c copy output.flv
Сценария в скобках будет генерировать список путей для всех файлов в текущей папке в формате, который требуется по ffmpeg
:
for entry in "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"/*.flv;do echo "file '$entry'";done
Однако это только список файлов в алфавитном порядке:
6846641-10.flv
6846641-11.flv
6846641-12.flv
6846641-13.flv
6846641-14.flv
6846641-15.flv
6846641-16.flv
6846641-17.flv
6846641-18.flv
6846641-19.flv
6846641-1.flv
6846641-20.flv
6846641-21.flv
6846641-22.flv
6846641-23.flv
6846641-24.flv
6846641-2.flv
6846641-3.flv
6846641-4.flv
6846641-5.flv
6846641-6.flv
6846641-7.flv
6846641-8.flv
6846641-9.flv
Чтобы правильно объединить видео, мне нужны файлы, которые будут перечислены в естественном порядке, как это:
Естественно упорядоченный файлы
Как показано на рисунке, файлы должны быть отсортировано по номеру после -
от 1 до 24, с 6846641-1.flv
в первой строке и 6846641-24.flv
в последней строке. И каждая строка в формате, как это:
file '/mnt/c/Users/Oho/Desktop/save//6846641-xx.flv'
Можно ли сгенерировать правильно отформатированный список для ffmpeg
с Баш скрипт (и в одной строке, если достижимы)?
Edit: Благодаря Кира, измененный код здесь, и это делает работу:
#!/bin/bash
for entry in "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"/*.flv
do
echo "file '$entry'" >> fileOutputList.temp
done
sort -t "-" -n -k 2 fileOutputList.temp > fileOutputListSorted.temp
ffmpeg -safe 0 -f concat -i fileOutputListSorted.temp -c copy output.flv
rm fileOutputList.temp
rm fileOutputListSorted.temp
Пожалуйста, обратите внимание на: [Что я должен делать, когда кто-то отвечает на мой вопрос] (Http: // StackOverflow .com/помощь/кто-то-ответы) – Cyrus