Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 18.05.2020, 12:57   #1
Drouge
Новичок
Джуниор
 
Регистрация: 18.05.2020
Сообщений: 2
По умолчанию 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, 12:27   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,501
По умолчанию

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

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

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

Цитата:
Сообщение от 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, 10:33   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,501
По умолчанию

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS