Вверх ↑
Этот топик читают: Гость
Ответов: 99
Рейтинг: 4
#1: 2024-05-23 11:04:58 ЛС | профиль | цитата
Сырой имеется ввиду без BMP заголовка. Пытаюсь сделать программу для записи экрана и кодировку кадров через FFmpeg.
Заметил что этот заголовок присутствует когда сохранил один кадр в файл.
карма: 0

0
Ответов: 2223
Рейтинг: 676
#2: 2024-05-23 12:03:21 ЛС | профиль | цитата
Элементом BitmapStream: Преобразование картинки в данные и наоборот (находится в Графика\Картинки) преобразовать Bmp в поток и поместить в MemoryStream: Загрузка и хранение двоичных данных в памят (находится в Файлы\Потоки). А там уже можно резать StreamCopy: Копирование данных из одного потока в другой) все что нужно и сохранить FileStream: Пoтoк данных файла.

Редактировалось 1 раз(а), последний 2024-05-23 12:04:05
карма: 11

0
Ответов: 8905
Рейтинг: 823
#3: 2024-05-23 18:34:37 ЛС | профиль | цитата
TheRenat, вот о чём рассказал sla8a:
Расшифровка


Add(MainForm,2953706,154,63)
{
Height=207
Caption="Кадры в потоке"
Point(onClose)
link(onCreate,4713873:doString,[])
link(onClose,15572565:doClose,[])
}
Add(Button,16623408,154,112)
{
Left=5
Top=5
Caption="зАПИСЬ"
link(onClick,14671224:doTimer,[(228,118)(228,146)])
}
Add(Button,2494576,154,147)
{
Left=5
Top=40
Caption="СТОП"
Data=Integer(0)
link(onClick,5768717:doEvent1,[])
}
Add(ScreenShort,15586006,280,140)
{
link(onCapture,2159317:doResize,[])
link(Handle,707359:Value,[])
}
Add(Resize,2159317,322,140)
{
Width=276
Height=154
Point(Result)
link(onResult,14889001:doWrite,[])
}
Add(Memory,707359,280,98)
{
Default=Integer(0)
}
Add(BitmapStream,14889001,378,133)
{
link(Stream,1907847:Var2,[])
}
Add(FileStream,15572565,378,77)
{
Mode=2
Point(doPosition)
}
Add(Image,14300608,280,224)
{
Left=95
Top=10
Width=280
Height=145
}
Add(BitmapStream,4382578,238,224)
{
link(onRead,14300608:doLoad,[])
link(Stream,1907847:Var1,[(244,215)(370,215)(370,124)])
}
Add(GetDataEx,1907847,378,119)
{
link(Data,15572565:Stream,[])
}
Add(Timer,14671224,238,140)
{
Interval=100
Enable=1
AutoStop=100
link(onTimer,15586006:doCapture,[])
}
Add(Button,9653819,154,224)
{
Left=5
Top=110
Caption="КАДР"
link(onClick,4382578:doRead,[])
}
Add(Hub,5768717,203,147)
{
link(onEvent1,14671224:doStop,[])
link(onEvent2,411923:doWork1,[(228,160)])
}
Add(Dir,11747645,203,35)
{
}
Add(FormatStr,4713873,203,77)
{
DataCount=1
Mask="%1\MyPict.stream"
link(onFString,15572565:doOpen,[])
link(Str1,11747645:CurrentDir,[])
}
Add(Button,12922399,154,189)
{
Left=5
Top=70
Caption="НАЧАЛО"
Data=Integer(0)
link(onClick,411923:doWork2,[])
}
Add(HubEx,411923,224,188)
{
link(onEvent,15572565:doPosition,[(361,194)(361,97)])
}

10 секунд, 100 кадров и возможность просмотра
карма: 19

0
Ответов: 753
Рейтинг: 164
#4: 2024-05-24 06:45:08 ЛС | профиль | цитата
На сколько я понял, TheRenat нужно просто удалить заголовок файла BMP.
Адрес начала данных растрового массива находится по смещению 10 (https://pascal.sources.ru/articles/099.htm)
The Structure ofthe Bitmap Image File(BMP)
В новый файл копируем всё начиная с этого места
Add(MainForm,2953706,105,84)
{
Point(onClose)
link(onCreate,10749451:doExecute,[])
link(onClose,7650964:doEvent1,[(151,111)(151,55)])
}
Add(ODialog,10749451,161,98)
{
Filter="BMP|*.bmp"
link(onExecute,15873387:doValue,[])
}
Add(FileStream,13740685,301,98)
{
Point(doPosition)
link(onLoad,384480:doData,[])
}
Add(DataToFileEx,4160234,462,105)
{
Point(doPosition)
link(onGet,8659885:doEvent1,[])
link(Stream,1361429:Var1,[(468,96)(454,96)])
}
Add(DoData,384480,350,98)
{
Data=Integer(10)
link(onEventData,193121:doEvent1,[])
}
Add(Hub,193121,406,98)
{
link(onEvent1,11433049:doWork3,[(431,104)])
link(onEvent2,4160234:doGet,[])
}
Add(Hub,8659885,504,105)
{
OutCount=3
link(onEvent1,11433049:doWork2,[(529,111)(529,90)])
link(onEvent2,11569468:doStrCat,[])
link(onEvent3,13972348:doOperation,[(532,125)(532,195)])
}
Add(Memory,15873387,217,98)
{
link(onData,13740685:doOpen,[])
}
Add(FileStream,6933692,637,112)
{
Mode=1
}
Add(StrCat,11569468,567,112)
{
Str2="-raw"
link(onStrCat,6933692:doOpen,[])
link(Str1,15873387:Value,[(573,82)(272,82)(272,138)(223,138)])
}
Add(HubEx,11433049,427,84)
{
Angle=2
link(onEvent,13740685:doPosition,[(291,90)(291,118)])
}
Add(StreamCopy,1109744,637,189)
{
link(onCopy,11683823:In,[])
link(Dest,6933692:Stream,[])
link(Source,1361429:Var3,[(650,166)])
}
Add(Hub,7650964,238,49)
{
link(onEvent1,6933692:doClose,[(606,55)(606,125)])
link(onEvent2,13740685:doClose,[(263,62)(263,111)])
}
Add(LineBreak,16402533,63,105)
{
link(Out,2953706:doClose,[])
Primary=[11683823,616,84]
}
Add(GetDataEx,1361429,448,161)
{
Angle=3
link(Data,13740685:Stream,[(307,166)])
}
Add(Math,13972348,560,189)
{
OpType=1
link(onResult,1109744:doCopy,[])
link(Op1,13740685:Size,[(566,180)(314,180)])
}


Редактировалось 4 раз(а), последний 2024-05-24 07:53:46
карма: 15

0
Ответов: 99
Рейтинг: 4
#5: 2024-05-24 15:44:28 ЛС | профиль | цитата
Да, именно в заголовке дело. Иначе кадры почему-то скользят в сторону.
Но есть другая проблема. Кадры все вот такие:

Вот такие параметры:
-v 0 -y -f rawvideo -pix_fmt %3 -s %1x%2 -r 10 -i - Rec9x.avi
Где %1 и %2 это разрешение, а %3 формат пикселей (argb).

Редактировалось 1 раз(а), последний 2024-05-24 15:45:43
карма: 0

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)