(Обратите внимание, что сейчас я просто тестирую видеофайлы, так как это упрощает некоторые его части.)
Тем не менее, как представляется, не быть способ регулировки xи yзначения извне после запуска команды. Это было бы идеально, если бы был способ легко прочитать их, например, из stdin или /dev/shm/reticle-pos.txt, но я не могу найти способ сделать это.
Другой вариант, который я пробовал, - нарисовать сетку снаружи с помощью imagemagick, а затем наложить ее на ffmpeg:
while true; do for x in ; do convert -size 1080x720 xc:none -fill none -stroke red -strokewidth 2 \ -draw "ellipse $x,100 10,10 0,360" -scale 1080x720 /dev/shm/newreticle.png cp /dev/shm/newreticle.png /dev/shm/reticle.png sleep 0.001 done done & ffmpeg -i input.mpg -i /dev/shm/reticle.png -filter_complex overlay output.mpg
Однако это не работает, так как кажется, что ffmpeg читает файл изображения только один раз, а не в каждом кадре.
Как нарисовать сетку поверх видео таким образом, чтобы я мог контролировать положение сетки?
Это работает, когда imagemagick выводит необработанные данные пикселей ( -size 1080x720 -depth 8 rgba:-). Пиксельные данные для каждого кадра объединяются вместе с остальными в один необработанный видеопоток. Затем ffmpeg может читать этот необработанный видеопоток ( -f rawvideo -pixel_format bgr32 -video_size 1080x720 -framerate 30 -i pipe:0) и накладывать его на основное видео.