Можно-ли записать видео с наложенным текстом в файл?
|
|
urry_buh | Дата: Четверг, 29.08.2013, 13:43 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Принимайте в ряды ещё одного новичка. Вообще-то вопросов масса, начиная от подмены имени файла вывода "на ходу" без перестроения графа . Задача- максимум: написать нечто, захватывающее изображение+ звук с камеры, с возможностью сохранения отд. кадров, упаковывающее результат в файл, и при этом обеспечивающее предварительный просмотр/прослушивание. Вроде-бы работает, но без упаковки и наложения картинок. С примерами разобрался, осталось разобраться с Рендерами- что-то не хотят они у меня вязаться по моему желанию:rolleyes: .
|
|
| |
xaramamburu | Дата: Четверг, 29.08.2013, 21:30 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| urry_buh, Цитата Задача- максимум: написать нечто, захватывающее изображение+ звук с камеры, с возможностью сохранения отд. кадров, упаковывающее результат в файл, и при этом обеспечивающее предварительный просмотр/прослушивание. Вроде-бы работает, но без упаковки и наложения картинок. Вот пример, где можно выбирать фильтры для сжатия видео и звука, вроде был рабочий, хотя возможно есть какие то косяки, я сейчас уже не помню - давно это было.))) http://basicsprog.ucoz.ru/uroki_delphi/multimedia/urok3_1/kamera000.zip
Цитата Вроде-бы работает, но без наложения картинок У меня была такая же мысль про наложение картинок и сохранение их в файл, но пока реализовать это не удалось. Само по себе наложение картинки на видео процесс не сложный, это умеет делать фильтр WMR-9 (видеорендер), но к сожалению он не умеет это записывать, а только показывает.(((
Цитата Вообще-то вопросов масса, начиная от подмены имени файла вывода "на ходу" без перестроения графа . Про это тоже сказать особо ничего не могу, не пробовал, но вот ссылка на документацию по DirectShow [url=http://msdn.microsoft.com/en-us/library/dd318624(v=vs.85).aspx]http://msdn.microsoft.com/en-us/library/dd318624(v=vs.85).aspx[/url] как раз по этому вопросу.))) Вообще в интернете в основном ходит такая мысль: ставим в граф SamleGrabber, получаем кадры, одновременно создаем поток типа AVIStream и пишем все это в файл. Но как это будет работать и с какой скорость, можно ли при этом успеть обработать кадр я не знаю, это нужно пробовать.)))
|
|
| |
urry_buh | Дата: Суббота, 31.08.2013, 12:24 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Практически сделал половину из того, что хотел. :-) Есть проблема со SmartTee: если делать параллельный вывод звука на Default DirectShow Audio device и в AviMux, то в файл пишется секунд 5-6 видео без звука и видеоцепочка встаёт. При этом микрофон работает, ошибок нет. Пытался указать синхронизацию от аудио-не помогает. Картинки накладываются просто: БМП на БМП построчно or, xor, not- как угодно :-)Добавлено (31.08.2013, 12:24) --------------------------------------------- Как иногда полезно читать документацию не поиском, а по темам! Надо просто для звука использовать Infinite pin tee! И делить его хоть на все устройства сразу!
|
|
| |
xaramamburu | Дата: Суббота, 31.08.2013, 20:12 | Сообщение # 4 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| urry_buh, Цитата Картинки накладываются просто: БМП на БМП построчно or, xor, not- как угодно :-) Может я конечно чего то не понимаю, но можно об этом по подробнее, а еще лучше с примером, если конечно вам не сложно.))) Возможно мы просто думаем о разных вещах.(((
Цитата Как иногда полезно читать документацию не поиском, а по темам! Вы пишите загадками. О какой документации идет речь?)))
|
|
| |
urry_buh | Дата: Суббота, 31.08.2013, 20:29 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| 2. http://msdn.microsoft.com/en-us/library/dd375006%28v=vs.85%29.aspx 1. Модификация "ограбленной" картинки . Наверное мы друг-друга недопоняли. ..... s := '[' + formatdatetime('hh:nn:ss.zzz', time) + ']'; _tmpbmp := Tbitmap.Create(); _tmpbmp.PixelFormat := pf24bit; _tmpbmp.Canvas.Brush.Color := CLWHITE; _tmpbmp.Canvas.Font.Color := CLRED; _tmpbmp.Canvas.Font.Size := 15; _tmpbmp.Canvas.Font.Style := [fsBold, fsItalic]; _tmpbmp.Width := _tmpbmp.Canvas.TextWidth(s); _tmpbmp.Height := _tmpbmp.Canvas.TextHeight('2'); _tmpbmp.Canvas.Rectangle(0, 0, _tmpbmp.Width, _tmpbmp.Height); _tmpbmp.Canvas.TextOut(0, 0, s); Bitmap.PixelFormat := pf24bit; Bitmap.Canvas.Brush.Color := CLWHITE; Bitmap.Canvas.Rectangle(0, 0, _tmpbmp.Width, _tmpbmp.Height); if (_tmpbmp.Height < Bitmap.Height) and (_tmpbmp.Width < Bitmap.Width) then for i := 0 to _tmpbmp.Height - 1 do begin Maskline := _tmpbmp.ScanLine; MainLine := Bitmap.ScanLine; for n := 0 to _tmpbmp.Width - 1 do begin MainLine[n].B := Maskline[n].B; MainLine[n].R := Maskline[n].R; MainLine[n].G := Maskline[n].G; end; end; _tmpbmp.Free; Image1.Picture.Graphic := Bitmap;
.... Можно было просто написать TextOut-om на канве основной картинки, или что-нибудь ещё... Просто сделал заготовку под будущее наложение, Чтоб было стыдно за код и хотелось что-то поправить
Кстати, в ХЕ3 куда-то пропали из меню все Кастом-стили :-( На Вин7 64 на 2-х машинах их в ветке "appearence" приложения нет, а на ХР32 с того-же дистрибутива есть:-( И физически на диске лежат....
|
|
| |
xaramamburu | Дата: Четверг, 05.09.2013, 16:37 | Сообщение # 6 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Цитата Кстати, в ХЕ3 куда-то пропали из меню все Кастом-стили :-( Про ХЕ3 сказать ничего не могу, т.к. у меня ее нет.(((
А по поводу ограбленной картинки, то здесь у вас все понятно. Только я имел ввиду немного другое, а конкретно наложение на видео изображение при получении веб-камеры какой либо графической или текстовой информации, с одновременной запись всего этого в файл в реальном режиме времени, пока этого я добиться не могу.(((
|
|
| |
|