Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2020, 11:57   #1
Drouge
Пользователь
 
Регистрация: 18.05.2020
Сообщений: 21
По умолчанию FFMpeg в Delphi

Я пишу программу для математической обработки видео. Скачал библиотеку ffmpeg и враппер для Delphi с этого сайта. Запустил пример отсюда. Видео отображается, но теперь мне надо перевести каждый кадр в tbitmap. Я вставил в строку 132 такой код:

Код:
        avcodec_decode_video2(codec_context, frame, frame_finished, @packet);
        if (frame_finished <> 0) then
        begin
          bitmap.SetSize(frame.width,frame.height);
          for q:=0 to bitmap.Height-1 do for w:=0 to bitmap.Width-1 do
          begin
            r:=frame.data[0][q*bitmap.Width+w];
            g:=0;
            b:=0;
            bitmap.fRows[q,w]:=rgb(r,g,b);
          end;
          image1.Canvas.Draw(0,0,bitmap);
bitmap.frows это мой доступ к сканлайнам битмапа. Код в таком варианте запускается, и отображается синяя монохромная картинка. Но я не могу понять как получить цветную картинку. Кажется проблема в том, что ffmpeg работает не с rgb а с yuv форматом. Правильно ли я понимаю, что для получения g и b нужно предварительно обработать картинку через sws_scale, предварительно задав что-то в sws_setColorspaceDetails?
Drouge вне форума Ответить с цитированием
Старый 21.05.2020, 11:27   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

вот в этой строке
Код:
bitmap.fRows[q,w]:=rgb(r,g,b);
параметры цвета RGB: почему у вас только первый r:=frame.data[0][q*bitmap.Width+w]; чему-то равен. а остальные g и b вы просто сделали по нулям?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 21.05.2020, 13:22   #3
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

Можно, например, провести Побайтовое сравнение файлов. как в программе из форума https://www.cyberforum.ru/delphi-beg...ead514128.html
м.б. это Вы имели ввиду?
Viktor61 вне форума Ответить с цитированием
Старый 21.05.2020, 13:25   #4
Viktor61
Пользователь
 
Регистрация: 05.05.2018
Сообщений: 92
По умолчанию

ошибся, не в эту ветку сообщение. Извините...
Viktor61 вне форума Ответить с цитированием
Старый 24.05.2020, 15:26   #5
Drouge
Пользователь
 
Регистрация: 18.05.2020
Сообщений: 21
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
вот в этой строке
Код:
bitmap.fRows[q,w]:=rgb(r,g,b);
параметры цвета RGB: почему у вас только первый r:=frame.data[0][q*bitmap.Width+w]; чему-то равен. а остальные g и b вы просто сделали по нулям?
Потому что я не знаю откуда взять компоненты g и b.
Я вроде немного разобрался - взял код отсюда и поправил его для моих нужд:

https://github.com/Laex/Delphi-FFMPE.../dumpframe.dpr

Почему-то в моём коде иногда срабатывает ошибка.
Drouge вне форума Ответить с цитированием
Старый 25.05.2020, 09:33   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

а откуда тогда взяли строку
Код:
r:=frame.data[0][q*bitmap.Width+w];
???
с какого-то примера?
ну, попробуйте тогда и для остальных такое же написать
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 22.10.2020, 07:42   #7
Svema
Пользователь
 
Регистрация: 09.10.2017
Сообщений: 26
По умолчанию

Привет всем,
а где либы взять под эту версию? без них невозможно запустить
Svema вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FFVCL - Delphi FFmpeg VCL Components АНАТОЛИЙ249 Помощь студентам 1 16.10.2019 16:25
Error ffmpeg Lx62GjVWZQJFjPD Windows 6 08.12.2018 00:07
FFMpeg NordWay Свободное общение 0 13.04.2017 22:50
Ищу специалиста по FFmpeg Dahlum Фриланс 0 11.09.2016 18:05
ffmpeg Green4el PHP 1 28.01.2013 12:36