У меня есть две камеры в моем саду, снимающие в формате JPEG изображения двух растений, которые меня интересуют.
У одного из них уже есть наложенная метка времени, и это не доставляет мне проблем, я делаю ежедневный фильм с:
cat *.jpg | ffmpeg -y -f image2pipe -i - -an -threads 4 -vcodec libx264 -s vga -r 24 -b:v 512k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -loglevel info "../video_test.mp4"
И фильм получается идеальным, с изображениями в идеальной последовательности.
Что касается другого, метод, который я использую, является двухэтапным, который я хотел бы преобразовать в один шаг. Он берет каждую картинку, накладывает на каждую, хранит в папке tmp, из которой сценарий делает фильм.
Это работает, но очень трудоемко и ухудшает качество из-за процесса двойного кодирования.
Итак, я решил сделать один шаг с помощью любого из приведенных ниже сценариев:
cat *.jpg | ffmpeg -y -f image2pipe -i - -an -threads 4 -vf "drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans.ttf: text="Partial filename of each image, containing date-time": fontcolor=yellow@0.8: x=7: y=7" -vcodec libx264 -s vga -r 24 -b:v 512k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -loglevel info "../video_test.mp4"
Вопрос 1: Это работает, но я не могу обработать имя файла, чтобы вставить его в фильтр.
Был бы другой способ:
find . -type f -name '*.jpg' -exec TEST=$'{}' \; -exec cat {} \; | ffmpeg -y -f image2pipe -i - -an -threads 4 -vf "drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans.ttf: text=$TEST: fontcolor=yellow@0.8: x=7: y=7" -vcodec libx264 -s vga -r 24 -b:v 512k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -b-pyramid 1 -8x8dct 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -loglevel info "../video_test.mp4"
Как вы можете видеть, намерение получить имя файла в переменной, обработать его и использовать в фильтре.
Вопрос 2 Здесь есть две проблемы. Во-первых, изображения не сортируются по имени файла, поэтому не по времени. Второй 'find' не работает, как я ожидал, с двумя командами exec.
Итак, это было довольно экстенсивно, я надеюсь, что вы могли прочитать все это. Кто-нибудь может помочь, пожалуйста?
TIA JSS