|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
Скриншоттер ютуб-роликов27.08.2020, 19:56. Показов 2496. Ответов 15
Метки нет (Все метки)
Привет всем!
Приходится часто и много снимать скриншоты с ютуб-роликов, представляющих собой не собственно видео съёмку, а просто набор картинок, сменяющих друг друга, типа таких: https://www.youtube.com/watch?v=4xgmAUeAldg https://www.youtube.com/watch?v=wy-qLaE0g4Q Переходы между картинками реализуются самыми разными эффектами и в этот промежуток пиксели находятся в динамическом изменении, после чего очередная картинка полностью выводится и 2-5 секунд остаётся без изменения, то есть пиксели на экране не изменяются. Задача стоит в создании скриншоттера, который автоматически будет определять, что картинка новая, и делать её скриншот. Проблема не в собственно коде - определять цвет заранее определённых пикселей (десятка в разных местах экрана будет достаточно, я думаю) и делать скриншоты и сохранение в определённую папку я умею, но не совсем понятен алгоритм действий. Буду благодарен за подсказки в виде: 1 Определить цвета пикселей 2 Через полсекунды определить ещё раз 3 если есть изменения сделать то-то 4 если нет сделать то-то И так далее и тому подобное
0
|
|
| 27.08.2020, 19:56 | |
|
Ответы с готовыми решениями:
15
скриншоттер на С Монтаж роликов Раскрутка роликов на YouTube |
|
Модератор
|
|
| 27.08.2020, 22:54 | |
Сообщение было отмечено Catstail как решение
Решение
Получить пиксели можно через GetPixel (если пикселей мало), либо GetDiBits если пикселей много. Сравниваешь кадры и если разница больше порогового значения - устанавливаешь флаг, который следит пока изображения не перестанут изменяться. Как только изображения перестали изменяться - убираешь флаг, сохраняешь скриншот. Т.к. при использовании GetDiBits пиксели уже есть, то их очень просто сохранить в BMP, либо заюзав GDI+ или WIC сохранить в PNG/JPG/и т.д.
Я бы конечно если бы реазиовывал подобную задачу и мне данный инструмент был бы нужен в повседневной работе, я бы анализировал не скриншоты, а напрямую видеопоток. Так и скорость была бы выше и не приходилось бы обеспечивать видимость региона.
1
|
|
|
7 / 7 / 0
Регистрация: 10.07.2015
Сообщений: 69
|
||||||
| 30.08.2020, 04:15 | ||||||
0
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
||||||||||||||||
| 03.09.2020, 06:26 [ТС] | ||||||||||||||||
|
xxdoc большое спасибо за профессиональный код! Обязательно использую!
Но моя проблема не решается, как мне ни стыдно признаться, я уже 2-3день не могу сообразить алгоритм действий То есть фактически есть: Подпрограммы:
1 Снять пиксели 2 Сравнить 3 Если FlagIsSame = True то... и так далее Вот я вымучил прогу вся "обвеска" работает но сам процесс не могу сообразить Может кто посмотрит и укажет что надо сделать, там совсем капелюшка кода, в самом низу нужный блок кода выделен такими строками: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0
|
||||||||||||||||
|
sleep
4926 / 4576 / 840
Регистрация: 13.04.2015
Сообщений: 9,727
|
|
| 03.09.2020, 06:42 | |
|
giaber, а если пересмотреть подход? Не делать скриншоты, а скачать видео и нарезать его на ключевые кадры?
0
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 03.09.2020, 08:39 [ТС] | |
|
Долго и муторно! Когда именно видео так и делаю прогой Free Video Editor, но когда ролик типа такого: "Cтопицот Лучшиx дизайнов беседки" состоит из стопицот миллионов картинок которые надо соxранить каждую отдельно, чтоб потом разбить по папкам по стилям "ренессанс", "ампир" и "барокко"
и такиx роликов десятка 2-3, то это, сами понимаете, тот ещё гемор!
0
|
|
|
Модератор
|
||
| 03.09.2020, 15:07 | ||
|
Я бы помог в решении подобной задачи если ты используешь этот путь.
1
|
||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 03.09.2020, 19:36 [ТС] | |
|
I can, The trick! Это ж для меня космический уровень! Я ж VB на уровне годовалого младенца знаю!
Добавлено через 6 минут I can, The trick!. Спасибо большое, конечно, за такой оптимизм относительно моиx умственныx способностей, но давайте лучше по старинке, по рабоче-крестьянски так сказать:For Next, If Then - всё такое родное, простое, сермяжное...
0
|
|
|
Модератор
|
|
| 03.09.2020, 19:53 | |
|
giaber, ничего сложного. Используя Media Foundation можно прямо по URL иметь доступ к видео и кадрам.
Приблизительный алгоритм:
0
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 03.09.2020, 21:05 [ТС] | |
|
The trick огромное спасибо за пошаговое руководство! Взглянул одним глазком на те ссылки что вы написали и в дикой панике рука потянулась к кнопке RESET! до сиx пор пульс 120!
Когда нибудь я с удовольствием попытаюсь во всём этом разобраться тема интереснейшая! Но вы даже не представляете с вашего уровня профессионализма сколько времени это у меня займёт ! И вообще осилю ли! Поэтому сейчас я всё же xочу добить эту мою, с позволения сказать, программу обычными ламерскими методами, тем более что та проблема о которой я спрашиваю всё равно встаёт и при рекомендуемом вами методе насколько я понимаю
0
|
|
|
Модератор
|
||
| 06.09.2020, 17:55 | ||
Сообщение было отмечено giaber как решение
РешениеДля получения ссылок на видеопотоки разработан класс CYoutubeVideoProvider. Данный класс на основе запросов к серверу получает информацию о видеопотоках (размеры, тип, прямую ссылку) из которой можно уже извлечь непосредственно кадры. Т.к. приложение в любом случае требует подключение к интернету то реализовывать JSON парсер я не стал. Для парсинга используется JS код который скачивается с гитхаба и запускается в ScriptControl'е. Т.к. алгоритм обфускации довольно муторный у ютуба (и постоянно меняются), то возможно что некоторые ссылки не будут работать. Для обработки видео используется Media Foundation для которого я специально написал библиотеку типов и модуль. Всю логику инкапсулирует класс CVideoAnalyser. Он уже непосредственно анализирует пиксели и кидает событие NewSlide если алгоритм задетектировал новый слайд.
2
|
||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 07.09.2020, 14:12 [ТС] | |
|
Das Ist Fantastisch !!! Работает как атомные часы!
Спасибо!!! Спасибо!!! Спасибо!!! (стоя на коленяx отбивает поклоны, то выпрямляясь, воздевая руки то стукаясь лбом о землю)
0
|
|
|
7 / 7 / 0
Регистрация: 10.07.2015
Сообщений: 69
|
|
| 24.09.2020, 14:21 | |
|
@the trick
Is there a demo for your method. Want to see Добавлено через 13 минут Для обработки видео используется Media Foundation для которого я специально написал библиотеку типов и модуль. Всю логику инкапсулирует класс CVideoAnalyser. Он уже непосредственно анализирует пиксели и кидает событие NewSlide если алгоритм задетектировал новый слайд. @the trick Is there a demo for your method. Want to see
0
|
|
|
7 / 7 / 0
Регистрация: 10.07.2015
Сообщений: 69
|
|
| 25.09.2020, 05:48 | |
|
It doesn't seem to be this code when I downloaded it yesterday. You updated it. Thank you.
0
|
|
|
7 / 7 / 0
Регистрация: 10.07.2015
Сообщений: 69
|
|
| 27.09.2020, 06:23 | |
|
It's really great, but the speed is very slow, and ask if it supports other streaming videos
0
|
|
| 27.09.2020, 06:23 | |
|
Помогаю со студенческими работами здесь
16
Подмена названий у роликов Создания флеш роликов Насчёт заработка на переводе роликов Повторение роликов в Burnout Paradise Запись роликов с экрана монитора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|