Я новачок у ffmpeg, і я чув, що у нього є фільтр для чорного кольору. Я хочу видалити чорні смуги вгорі та внизу відео, щоб відео було обрізане на решту відео без чорних смуг. Спасибі:)
Я новачок у ffmpeg, і я чув, що у нього є фільтр для чорного кольору. Я хочу видалити чорні смуги вгорі та внизу відео, щоб відео було обрізане на решту відео без чорних смуг. Спасибі:)
Відповіді:
cropdetect можна використовувати для надання параметрів для фільтра обрізання . У цьому прикладі пропускаються перші 90 секунд і обробляються 10 кадрів:
$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0
Тож згідно з cropdetect ми можемо використовувати crop=1280:720:0:0
.
ffplay
$ ffplay -vf crop=1280:720:0:0 input.mp4
$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4
У цьому прикладі звук просто копіюється (повторно відтворюється), оскільки, ймовірно, не потрібно його перекодувати.
Як ви бачили вище на ffplay
прикладі, деякі гравці дозволяють обрізати при відтворенні. Це має перевагу:
Відповідь @LordNeckbeard чудова. Я б рекомендував це в більшості випадків.
ffplay чудово працював і добре переглядав, але версія ffmpeg, яку я використовував, боровся зі звуком цього відео, яке я використовував.
st:1 error, non monotone timestamps
У мене виникли проблеми із запропонованою відповіддю, як із тим, що -c:a
не підтримували версію, яку я працював, так і проблеми з перетворенням бітрейту у відео, яке я використовував.
Примітка: -c:a
можна замінити на:-acodec
Найпростішим альтернативним безкоштовним рішенням, який я знайшов, було використання ручного гальма.
Це автокроп видалив чорні смуги без особливих проблем.
Сподіваюся, що це допомагає.