|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.03.2018, 18:46 | #1 |
Регистрация: 22.11.2010
Сообщений: 5
|
Создание видеофайла из множества BMP(JPEG) файлов
Ни где не смог найти информации как создать видео ряд из картинок (640*480) средствами Delphi XE5 - XE7... Цель моей программы - периодическая съёмка (1 раз в 10сек) объекта и сохранение снимка на диск, а при нажатии на кнопку - из этих снимков собрать видеофайл... Съемку по таймеру я уже сделал, даже прикрутил "датчик движения" (пока не знаю зачем)... А вот со сборкой видеоряда полная засада... ни когда не имел дело с видео, кроме плееров... кто то сможет мне толково разяснить как это делается и где чего искать?
|
28.03.2018, 20:03 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Если знаний по формата видео у вас нет, то лучше взять что-то готовое, например, на базе ffmpeg. Можно и модули, можно и саму тулзу запускать, можно и платное http://www.delphiffmpeg.com/
А так в принципе можете почитать про mjpeg. |
28.03.2018, 22:22 | #3 | |
Регистрация: 22.11.2010
Сообщений: 5
|
Цитата:
Также я рассматривал вариант с использованием avi_writer, avi_writer_2, avi_writer_2.1 , там тоже есть подводные камни, связаные с версиями Delphi... Хотя этот вариант мне бы понравился, если бы я писал свою программу в D7... |
|
29.03.2018, 09:44 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
AVI - это контейнер. в нём могут быть представлены потоки мультимедия данных - видео, аудио. Каждый из потоков должен иметь свою структуру, чтобы его смог понять стандартный плеер. В частности, в структуре есть заголовок, в котором описаны параметры потока. один из параметров - кодек - он как раз и говорит плееру (точнее декодеру потока) что там за данные в потоке и что с ними делать.
Один из простейших кодеков - это и есть MJPEG. см. например википедия MJPEG (Motion JPEG) его суть в том, что каждый кадр видео - это и есть отдельный JPEG файл. Межкадровая разница никак не учитывается. Т.е. по сути это просто склеенные вместе JPEG файлы + заголовок. |
29.03.2018, 10:50 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Есть несколько путей. И все они имеют минусы.
1) Самописный кодек. 2) DirectX 3) VFW 4) FFMPEG 5) VCL 6) OpenCV 7) Компоненты. 1) MJPEG, тут можно посмотреть по создание http://www.delphimaster.ru/cgi-bin/f...1227686777&n=7 Хотя с ним могут быть проблемы с воспроизведением да и сжатие значительно хуже чем у других кодеков. Файлы *.MJPEG - содержат только заголовок у первого кадра. У других надо его вырезать. JPEG - понятия заголовка отсуствует есть несколько частей которые могут быть могут не быть и вообще не имеют строгой позиции. В формате крайне плохо описаны,есть практика применения которая говорит что считать заголовком а что нет. И вот эту вот лапшу надо закодить на Delphi грубо говоря перевести с какого либо Си++ проекта так как готового нет. Проще придумать свой формат запихать подряд BMP файлы и после воспроизводить своим плейром. 2) DirectX из недостатков слишком сложно организован изначально заточен под потоковую обработку. Примеры есть в том же DSPack. Куча багов самого DirectX раздрожает. Фактически под виндоус это основной API так что худо бедно работает. https://github.com/JayDi85/dspack/bl...eocap/main.pas 3) VFW - API довольно простой. Правда описания на русском языке нету. Из недостатков для VFW нужны свои кодеки. VFW - считается устаревшей технологией. Из контейнеров поддерживает только AVI и MPEG. Да и кодеки можно пересчитать по пальцам руки. Велика вероятность что для воспроизведения вам придётся доставлять такие вот кодеки. https://github.com/maerlyn/old-delph...VIRecorder.pas http://www.programmersforum.ru/showp...00&postcount=3 4) FFMPEG хорошая программа. Одна беда она написана на Си++. 4.1) Используем FFMPEG.exe из минусов неумет сжимать данные из стандартного ввода/вывода. - т.е BMP файлы придётся сохранять на диск. А это может снизить производительность. http://www.cyberforum.ru/delphi-mult...ad1457871.html 4.2) FFMPEG DLL Трудно найти заголовочные файлы на паскале, а к ним необходимую версию библиотеки https://github.com/DJMaster/ffmpeg-f...master/binding http://www.delphiffmpeg.com/headers/ 4.3) Помимо бесплатных заголовочных файлов есть платная версия компонента для Delphi. 5) https://prog.olsztyn.pl/paslibvlc/ Сам не пробовал возможно это самое лучшее решение! 6) OpenCV работает по верх выше описанных технологий. Из недостатки найти актуальную версию заголовочных файлов. https://sourceforge.net/p/delphiopen...amples/FFMpeg/ 7) Компоненты. Компоненты были написаны для старых дельфей и в новом просто отказываются работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 29.03.2018 в 20:13. |
29.03.2018, 20:14 | #6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Обновил пост добавил ссылки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
29.03.2018, 21:53 | #7 |
Регистрация: 22.11.2010
Сообщений: 5
|
Всем огромное спасибо... Даже не ожидал что столько толкового прочитаю... Теперь мне всё это надо перелопатить, и понять и опробовать... На это на уйдут не мало времени... Если получится что нибудь сотворить, то обязательно вынесу на обсуждение...
|
30.03.2018, 07:26 | #8 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,834
|
а попробуй по форуму поискать про скриншоты и как из них сделать видео на лету. там где-то были вложения с готовыми проектами на Delphi. скриншоты - это ведь те же самые фотографии в формате JPEG или BMP.
вот одна из тем http://www.programmersforum.ru/showt...F8%EE%F2%E5%F0
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
30.03.2018, 07:56 | #9 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
NetSpace
Одна из ссылок в 3 пункте и есть скришотилка. почти образцовая.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
20.04.2018, 16:07 | #10 |
Регистрация: 22.11.2010
Сообщений: 5
|
И снова всем привет! Спасибо за отклики, но у меня ни чего не получилось... Засорил Delphi различными компонентами, но эффекта - ноль... Выход один, пока не найду выхода - сохранять все Bitmap'ы в *.Gif... Примеры интересны, но я работаю в среде DXE 5 и DXE 7. А Delphi 7 на Win10 нормально установить не получилось...
Последний раз редактировалось alexnike; 20.04.2018 в 16:36. Причина: Не закончил мысль |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изображения BMP и JPEG | OmegaBerkut | C# (си шарп) | 9 | 29.05.2017 13:52 |
Создание таблицы xls из множества файлов doc. | Master_shmell | Помощь студентам | 0 | 04.06.2013 21:50 |
Компрессия BMP в JPG (JPEG) | MartyM | Общие вопросы C/C++ | 2 | 25.11.2012 00:57 |
Работа с BMP -> JPEG | MartyM | Общие вопросы C/C++ | 6 | 18.11.2012 14:07 |
Проблема с TImage, BMP, JPEG | Florento | Общие вопросы Delphi | 5 | 16.06.2011 16:18 |