У меня есть эти файлы примеров в системе Ubuntu 18.04:
VID_20190407_160033.3gp
VID_20190407_161444.3gp
VID_20190407_161609.3gp
VID_20190415_183315.3gp
VID_20190415_183411.3gp
VID_20190415_192712.3gp
VID_20190420_124435.3gp
VID_20190420_125755.3gp
VID_20190420_130214.3gp
VID_20190420_141700.3gp
И я хочу объединить файлы 3GP с помощью сценария (возможно, с ffmpeg ?) В один файл, выбрав файлы с датой ГГГГММДД в имени файла, в результате чего:
VID_20190407.3gp
VID_20190415.3gp
VID_20190420.3gp
Каков наилучший способ написать это?
Система
Linux local 5.0.0-29-lowlatency #31-Ubuntu SMP PREEMPT Thu Sep 12 14:13:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Спасибо.
3GP файлы могут быть связаны с использованием ffmpeg командой, подобной:
ffmpeg -f concat -i <(find . -name 'YYYYMMDD_XXXXXX.3gp' -printf "file '$PWD/%p'\n") -c copy YYYYMMDD.3gp
после того как Вы создаете для-следующего цикл, чтобы отфильтровать на YYYYMMDD использование первой инстанции первого значения для этого как переменная, собрать _XXXXXX компоненты имени файла и шаг через них последовательно; затем, движение к следующему значению YYYYMMDD и шагу через все его файлы.
--
Альтернативный и более изящный метод с помощью виртуального concat demuxer, который обратил мое внимание llogan, был бы к
A) считайте количество файлов с первым префиксом YYYYMMDD, затем
B) создайте файл управления mylist.txt со строкой для каждого из файлов, соответствующих тому префиксу даты, который был бы похож:
Кошка $ mylist.txt
файл '/path/to/file1'
файл '/path/to/file2'
файл '/path/to/file3'
файл '/path/to/file4'
или
Кошка $ mylist.txt
файл '/path/to/YYYYMMDD_XXXXX1.3gp'
файл '/path/to/YYYYMMDD_XXXXX2.3gp'
файл '/path/to/YYYYMMDD_XXXXX3.3gp'
файл '/path/to/YYYYMMDD_XXXXX4.3gp'
затем C) выполняются
ffmpeg -f concat -i mylist.txt -c copy YYYYMMDD.mp4
Теперь, Вы связали первый набор файла. Шаг на следующей группе YYYYMMDD и повторении.