LINUX.ORG.RU

Ищу пример кода как выдрать n-кадр из видео

 ,


6

6

Задача вроде примитивная: получить произвольный кадр из видео. Но не тут-то было.

1) Половина примеров из инета или не собираются или сыпят кучу варнингов о deprecated методах (у меня ffmpeg 3).

2) То, что работает - работает или неверно или медленно. Код из kde-ffmpegthumbs работает реактивно, но у него шаг огромный. Сделать более точное «перемещение» так и не удалось.

Нужны всего две функции: количество_кадров() и получить_кадр().

Сомневаюсь, что это уж такая титаническая задача, но на просторах инета ничего толкового не нашел.

Где уже смотрел: mpenkov/ffmpeg-tutorial, kde-ffmpegthumbs, qtffmpegwrapper, opencv (модуль CvCapture_FFMPEG, его пока и использую, но уж очень медленный он)

PS: нужен поиск именно по кадру, а не по времени.

★★★★★
Ответ на: комментарий от Harald

Если в cygwin-е смогли собрать, значит это возможно.

Под POSIX-совместимую ОС, не? Ведь задача Cygwin как раз в том, чтобы приложения под GNU/Linux абсолютно без изменений можно было собрать под виндой. А mingw-w64 совсем не об этом.

Но и под mingw-w64 собрали webkitgtk2, webkitgtk3 и qtwebkit-tp5: http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-qtwebkit-tp5-4-any.pkg.ta...

gag ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ты то понял, что я хотел посоветовать? Я вижу, что мой подход ложится на указанный тобой юзкейз. Заказчику важна интерактивность, а не абстрактная «быстрота», ведь не агент 007.

Если речь идет о флешках, то тупо во время копирования её - уже один проход можно делать, и кеш формировать. Думай шире. Никто с флешки не будет видео обрабатывать, там ты в скорость чтения упрешься быстрее, либо сглючит, еще хуже будет.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Harald

При чём тут вообще вебкит? Тормоза были при сборки проги с Qt из msys2. В то время как сборка с официальной сборкой Qt не тормозила.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Но он же собран не с официальной сборкой Qt, а своей...

и что? Бери свою. И это 32 битная версия, а не 64

Harald ★★★★★
()
Ответ на: комментарий от Harald

Хотите сказать, что если я закину эти файлы в папку с Qt, установленным через инсталятор Qt - они у меня подхватятся? Очень сомневаюсь.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

И вообще, в крайнем случае можно 32 битный гуй оставить, а декодирование отдельным 64 битным процессом

Harald ★★★★★
()
Ответ на: комментарий от Harald

Во всём. Тупо во всём.

PS: тестил заказчик, а не я. Так что тут дохлый номер. У меня работало, на глаз, так же.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Я понял. Но это слишком мудрёно. Сейчас мне нужно выжать максимум из ffmpeg, о чём и тема. Если вариантов не останется - буду искать другие решения.

Ибо зачем делать хитрые фоновые операции, если у меня сам поиска кадра кривой.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Хотите сказать, что если я закину эти файлы в папку с Qt, установленным через инсталятор Qt - они у меня подхватятся? Очень сомневаюсь.

В чём смысл данного действия? Закидывать надо весь Qt, собранный нужным тулчейном (в данном случае, mingw-w64), со своими хэдерами и библиотеками импорта

Harald ★★★★★
()
Ответ на: комментарий от Harald

Это понятно. Так я и делал, с 32 битной сборкой. Но заказчик забраковал этот вариант.

RazrFalcon ★★★★★
() автор топика
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Внизу шкала, которая позволяет выбрать промежуток видео

Там натурально ползунок? Или можно ввести номер кадра вручную?

Можно, кстати, завести два ползунка: один позиционирует грубо, по ключевым кадрам, второй точно, прямо по отдельным.

Типа когда пользователь перестал возюкать грубый ползунок, можно несколько секунд до и после ключевого разложить по кадрам и дать ему возможность точно позиционироваться.

В любом случае придется хитрить, очень быстро спозиционироваться на произвольный кадр в общем случае не получится

Deleted
()
Ответ на: комментарий от Deleted

Да, ползунок. Я именно этот вариант и предлагал выше.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от ruzisufaka

индексы матрешки

Но она как-то же перематывается быстро в плеерах. В чем прикол?

Свой видеоредактор я забросил, да.

Да ты шо? Ай-я-яй!!! А я так на тебя надеялся, у меня блендер тут падает, я его в соседней теме хаял. Ну зачем ты так? Почему забросил? На что-то напоролся? Больше не будешь делать? Ну дай посмотреть тогда что ты там успел сделать. Не пропадать же добру. Или там совсем нерабочее состояние?

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Но она как-то же перематывается быстро в плеерах. В чем прикол?

Я же выше привёл пример расчёта, с какой точностью можно быстро перематывать (по ключевым кадрам).

В продолжение ещё вот иллюстрация. Возьмём разрешение монитора в пикселях по горизонтали стандартные FullHD, т.е. 1920, между ключевыми кадрами 40 промежуточных и FPS 24 кадра/с. Т.к. ползунок можно подвинуть не менее чем на один пиксель (чтобы была визуальная обратная связь), получается что можно получить не более 1920 * 40 / 24 = 3200 секунд = 53.33 минуты. Если видео ещё длиннее, то даже некоторые ключевые кадры будут пропущены. А вот если видео короче чем 53 минуты, тогда лучше взять монитор с разрешением поменьше: HD 1280 - и вот уже 35.33 минуты без надобности в промежуточных кадрах.

gag ★★★★★
()
Ответ на: комментарий от deep-purple

Но она как-то же перематывается быстро в плеерах. В чем прикол?

Там не индекс, а seek points, грубо говоря точка каждые 5-10 секунд. Или 30 секунд, в зависимости от идиотизма енкодера.

Почему забросил? На что-то напоролся?

Кто-то мне посоветовал изучить матчасть, я почитал книги и понял, что видео можно редактировать на бумажке с карандашиком. Ну, в текстовом редакторе. Некоторое время я все еще изобретал свои кукольные театры, генераторы/визуализаторов сценариев, рисование сторибордов, запиливание прототипов, разные автоматические вики и темплейты, но потом заметил, что все это слишком далеко от моей практики, а видео я могу редактировать в mc

ruzisufaka
()
Ответ на: комментарий от RazrFalcon

Мы в 21-м веке, вообще-то.

Мы в 21-м веке, где хелловорлд не может весить менее 100 мегабайт. Мы в 21-м веке, где мигающий курсор делают при помощи анимированного гифа для сохранения ресурсов системы. Мы в 21-м веке, где незнание и невежество повод для осмеяния и подколок в адрес более образованных людей. Мы в 21-м веке, где основная ачивка программистов - это не написание стабильного кода, а питье смузей. Мы в 21-м веке, где никто не знает, зачем пишутся программы.

ruzisufaka
()
Ответ на: комментарий от RazrFalcon

Файл скинули с видео камеры, флешки или ещё откуда-то и мы должны как можно быстрее получить результат.

А нельзя ли перенастроить, чтобы чаще ключевые кадры были?

goingUp ★★★★★
()
Ответ на: комментарий от anonymous

dd

продвинутые господа

dd — пожалуй, самая древняя команда.

i-rinat ★★★★★
()
4 мая 2017 г.
Ответ на: комментарий от RazrFalcon

QtWebKit уже смогли собрать с помощью mingw64? Я не осилил

Я осилил. В чем трабл?

На худой конец можно из msys2 бинарный пакет поставить

annulen ★★★★★
()
Ответ на: комментарий от annulen

Логов не осталось. Были ошибки компиляции.

RazrFalcon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.