зображення труби ffmpeg, витягнуті з відео


8

Я можу використовувати наступну команду для отримання зображень із відео за допомогою ffmpeg, зберігаючи їх у файловій системі:

... | ffmpeg -i - -f image2 'img-%03d.png'

Я хотів би передати ці зображення в інший додаток, а не зберігати їх у файловій системі - те, як вони розділені в трубі, має мало значення, оскільки це буде сценарій NodeJS, яким я керую сам.

Наступне не працює:

... | ffmpeg -i - -f image2 pipe: | ...

Помилка з

[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument

Чи є спосіб передавати зображення, витягнуті з відео за допомогою ffmpeg, без використання файлової системи?


Спробуйте-f png - | ...
Gyan

@Mulvya Це призводить до помилок із [NULL @ 0x10e2860] Requested output format 'png' is not a suitable output format pipe:: Invalid argument.
Birjolaxew

2
Спробуйте -f image2pipe -vcodec png - | .... PNG може не працювати, якщо таким чином вихід буде MJPEG після видалення vcodec.
Gyan

@Mulvya Це дійсно спрацювало. Дуже дякую :)
Birjolaxew

Відповіді:


7

так, є!

додайте аргумент -f image2pipeта вкажіть назву вихідного файлу як єдину гіпену ( -у цьому контексті це означає stdout), а також вкажіть ім'я вхідного файлу також як окремий гіпен ( -i -у цьому контексті це означає stdin) та явно вкажіть формат виводу (наприклад, для png : -c:v png), ось повний приклад:

ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.