редактирование видеофайла
Модератор: Модераторы
редактирование видеофайла
Требуется получить попиксельный доступ для редактирования видеоданных. Режима реального времени не требуется. Нужно открыть по номеру нужный кадр, обработать и обработанный кадр записать обратно. Какой модуль для этого посоветуете?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Снег Север, спасибо за ссылки.
Бегло посмотрел, как мне показалось это всё описание компонент для работы c видео потоком (воспроизведение, работа с источником и т.д.).
Мне нужно немного другое, а именно: ранее записанный видеофайл хранится на диске, нужно открыть этот файл, прочитать кадр по номеру кадра, иметь доступ к данным в этом кадре аналогичный canvas.pixels[x,y]:=RGB(R,G,B), потом этот кадр сохранить, и начать работать со сл. кадром. В режиме реального времени отображать или вещать не требуется. Скорость обработки не является критичным фактором, т.е. допустимо 5 минутный ролик обрабатывать час.
желательно под Win10, Lazarus.
Или стоит внимательнее посмотреть, и по ссылкам то, что мне нужно?
Бегло посмотрел, как мне показалось это всё описание компонент для работы c видео потоком (воспроизведение, работа с источником и т.д.).
Мне нужно немного другое, а именно: ранее записанный видеофайл хранится на диске, нужно открыть этот файл, прочитать кадр по номеру кадра, иметь доступ к данным в этом кадре аналогичный canvas.pixels[x,y]:=RGB(R,G,B), потом этот кадр сохранить, и начать работать со сл. кадром. В режиме реального времени отображать или вещать не требуется. Скорость обработки не является критичным фактором, т.е. допустимо 5 минутный ролик обрабатывать час.
желательно под Win10, Lazarus.
Или стоит внимательнее посмотреть, и по ссылкам то, что мне нужно?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Aleandr, тот же VLC - это опенсорсный видеоплейер, а паскалевская обертка - просто доступ к его функциям из программы. У вас в любом случае первая задача - достать изображения кадров из контейнера и раскодировать, для этого и используют внешние библиотеки. После раскодирования у вас всегда будет доступ к отдельным кадрам, как к картинкам. В принципе можно написать свои чисто паскалевские декодеры, но это очень не просто и работать они будут наверняка медленнее готовых, типа FFmpeg.
Aleandr писал(а):Требуется получить попиксельный доступ для редактирования видеоданных. Режима реального времени не требуется. Нужно открыть по номеру нужный кадр, обработать и обработанный кадр записать обратно. Какой модуль для этого посоветуете?
Кстати давно хочу сделать программу "Персональный цензор" с возможностью выкидывать нафиг "перлы переводчиков " и рекламу.
(Один раз потерпеть можно но при повторном просмотре все это уже задалбывает довольно сильно - что характерно "лицензия" и "проплаченные фильмы" сейчас запросто могут оказаться самыми "замусоренными" )
Но нужно не только и не столько редактор видео, а в основном обработка звуковой дорожки ( простейшем случае отключение звука по таймингу и возможно дорисовка титров в случае невнятного или искаженного перевода. )
Думаю сделать програму в формате простого плеера .
Само видео может быть сжато, кодеками и упаковано в контейнер( он неободим для сериализации данных, когда более одного потока данных, типа видеоканалы, может быть стерео, квадро.. звук который тоже может иметь более одного канала.. их необходимо последовательно записать в файл)
То есть вам необходимо иметь Demux -> Decoding как минимум.
Если Windows - то нужно смотреть в сторону DX/DirectShow там сможешь получить битмап кадра. Пишем видеоплеер (проигрыватель видео) на Delphi с использованием технологии DirectShow.
Если кросплатформенно то тут есть сложности в плане готовых и актуальных библиотек.
Добавлено спустя 7 минут 19 секунд:
таким же успехом можно использовать FFMpeg чтобы он раскидал кадры в виде jpg/png/bmp в папку
То есть вам необходимо иметь Demux -> Decoding как минимум.
Если Windows - то нужно смотреть в сторону DX/DirectShow там сможешь получить битмап кадра. Пишем видеоплеер (проигрыватель видео) на Delphi с использованием технологии DirectShow.
Если кросплатформенно то тут есть сложности в плане готовых и актуальных библиотек.
Добавлено спустя 7 минут 19 секунд:
Снег Север писал(а):VLC
таким же успехом можно использовать FFMpeg чтобы он раскидал кадры в виде jpg/png/bmp в папку
Задавая этот вопрос я думал что всё гораздо проще, что есть некий компонент который умеет открыть файл и т.д.
В итоге решил задачу раскидыванием файла на кадры при помощи VideoPad, обработка каждого кадра в Lazarus, и сборка обратно в видео VideoPad'ом. Понятно, что для многократного использования это не годится.
В итоге решил задачу раскидыванием файла на кадры при помощи VideoPad, обработка каждого кадра в Lazarus, и сборка обратно в видео VideoPad'ом. Понятно, что для многократного использования это не годится.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Так вся фишка в том, что видео - это не просто файл, а контейнер, содержащий несколько видов данных (изображение и звук), которые упакованы разнообразными средствами (кодеками). Поэтому "просто" не получится.
Aleandr писал(а):Задавая этот вопрос я думал что всё гораздо проще, что есть некий компонент который умеет открыть файл и т.д.
В итоге решил задачу раскидыванием файла на кадры при помощи VideoPad, обработка каждого кадра в Lazarus, и сборка обратно в видео VideoPad'ом. Понятно, что для многократного использования это не годится.
Вообще-то добраться до видео можно и без компонентов ... Через ActiveX !
https://wiki.lazarus.freepascal.org/LazActiveX
Я таким образом делал "Микро браузер"
viewtopic.php?p=160723#p160723
Еще есть вот такая древность ...
https://wiki.freepascal.org/TMPlayerControl
https://github.com/DelphiForBroadcasting/ffmpeg-delphi
http://ffmpeg.org/index.html
Моя старая переделка-конверсия с дельфи ("Типа плеер" на DirectShow )
https://disk.yandex.ua/d/JDN1KzeYrfQig
(Сбирается (правда в 32-разрядом Лазарусе бо ассемблеровские вставки не адаптированы под 64-бита ) и даже работает но что-то не то с окном (видео открывается в отдельном окне ))
Добавлено спустя 7 часов 28 минут 20 секунд:
В общем чуть увлекся расследованием вопроса "Лазарус и Видео" и среди прочего накопал вот что ...
Обнаружен наверное самый простой способ показать видео!
Это это почти аутентичный пример от OpenCV EXE-ник занимает всего 93 кб (без сжатия!) и кода тоже кот наплакал .


Покадрово крутит почти любое видео (имя файла в командной строке ) а без параметров показывает изображение с веб-камеры.
( правда загрузкой звука еще даже не заморачивался, и еще не много не настроена задержка (100 миллисекунд) что малость много... Но это уже ерунда! )
Зы
Все нужные библиотеки лежат в папке Bin. (Исходники разумеется тоже не забыты )
Разумеется это всеволишь пример, а не настоящий плеер но как "информация к размышлению" это довольно неплохая штуковина.
