#ffmpeg #filtering
Вопрос:
Я пытаюсь размыть многие области в разное время в своем видео. Я использую delogo, потому что у него, кажется, самый простой синтаксис. Поэтому я использую один vf с несколькими выражениями delogo,каждое из которых определяет x,y,h, w области и позволяет в течение времени и продолжительности размывать лица (кроме первого, который применяется ко всему видео, чтобы размыть метку времени в правом нижнем углу). Как я уже сказал, я не хочу вдаваться в сложные выражения, а delogo довольно прост. Первое выражение отлично работает при удалении метки времени. Но ни одно из других выражений не работает-ни одно из лиц не размыто. Если я сделаю одно выражение, оно будет работать нормально. Итак, существует ли ограничение на количество выражений в записи-vf? Есть ли проблема, когда одно выражение не использует опцию включить, в то время как все остальные используют?
Еще одна вещь, которую я заметил: скорость передачи входного видео составляет около 12000, а выходного-около 33000. Я установил Q=2, который для другого редактирования не увеличивает скорость передачи данных, но сохраняет ее примерно такой же, как и при вводе.
Вот моя команда:
ffmpeg -i /media/don/OneTouch/evidence/finalx.mp4 -filter:v "unsharp, delogo=x=1500:y=918:w=330:h=95, delogo=x=1500:y=918:w=330:h=95, delogo=x=1:y=875:w=850:h=144:enable='between(t,839,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,1069,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,2019,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,2189,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,3019,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,4020,12)', delogo=x=1:y=875:w=850:h=144:enable='between(t,4368,12)', delogo=x=117:y=95:w=156:h=130:enable='between(t,975,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,1508,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,2126,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,2667,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,3142,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,3631,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,4145,16)', delogo=x=117:y=95:w=156:h=130:enable='between(t,4577,16)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,1189,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,1779,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,3369,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,3549,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,4488,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,4638,12)', delogo=x=120:y=935:w=1116:h=90:enable='between(t,4838,12)', delogo=x=108:y=1031:w=26:h=26:enable='between(t,0,10)', delogo=x=83:y=1005:w=1756:h=8:enable='between(t,0,10)', delogo=x=1840:y=1000:w=62:h=18:enable='between(t,0,10)', delogo=x=1745:y=1034:w=146:h=28:enable='between(t,0,10)', unsharp, eq=contrast=1.14:brightness=0.036:saturation=1.1" -filter:a "volume=5.048dB" -c:a ac3 -ab 384k -ar 48000 -vb 15000 -q:v 2 -r 30 -c:v mpeg4 -y /media/don/OneTouch/evidence/finaly.mp4
Я использую:
ffmpeg version 4.3.2-0york0~18.04 Copyright (c) 2000-2021 the FFmpeg developers built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
Комментарии:
1.
between(t,839,12)
—gt; для этого требуется метка времени, которая больше 839 и меньше 12. Это невозможно.2. То, как я это прочитал, означает 839 секунд в течение 12 секунд. Так вы говорите, что это должно быть два значения в секундах? Кроме того, должны ли это быть целочисленные значения в секундах, или это могут быть номера кадров с использованием n или pos?
3. О, и еще, почему скорость передачи данных так резко возросла с 12000 до 32000? Единственное различие между этим редактированием и моими обычными правками-это фильтр, и обычно скорость передачи данных не повышается. На самом деле она немного снижается.
4.
-vb 15000
и-q:v 2
являются взаимоисключающими методами контроля битрейта, что означает, что вы можете использовать только один или другой, но не оба. Если вы используете оба, один из них будет проигнорирован. В данном случае-vb
это игнорируется.
Ответ №1:
Предложение @Gyan в комментариях правильное. Два значения в between
параметре со спецификацией t
-это время начала и окончания в секундах, а не время начала и продолжительность. Я не знаю, почему он увеличивает скорость передачи данных, но я снизил q
значение до 4
, и он сохранил его в соответствии с оригиналом; теперь все это прекрасно работало.