Проигрывание AVI в Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проигрывание AVI в Lazarus

Сообщение GORKOFF » 11.09.2011 12:59:32

Собственно в теме описана вся проблема. Есть ли какой-нибудь способ проиграть обычный avi-файл в Lazarus. Важно только изображение, т.е. звук воспроизводить не обязательно. Заранее спасибо за помощь.
GORKOFF
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.09.2011 12:56:48

Re: Проигрывание AVI в Lazarus

Сообщение Сквозняк » 11.09.2011 15:02:47

Используя комманды системы задействовать внешний плеер, например mplayer. В линуксе его нужно устанавливать а в виндовсе достаточно скачать готовую сборку с сайта проекта и положить в каталог программы.
Для линукса комманда имеет вид:
Код: Выделить всё
FPSYSTEM('nohup mplayer "file.avi" &');

Для виндовса:
Код: Выделить всё
FPSYSTEM('start "mplayer.exe" "file.avi"');
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Проигрывание AVI в Lazarus

Сообщение GORKOFF » 11.09.2011 15:09:29

Сквозняк писал(а):Используя комманды системы задействовать внешний плеер, например mplayer.

Я так понимаю, что запустится отдельное окно? А можно как-то выводить это на TPanel к примеру? И дело ещ в том, что каждый кадр должен быть обработан. Т.е. можно как-то указывать какой именно фрейм выводить?
GORKOFF
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.09.2011 12:56:48

Re: Проигрывание AVI в Lazarus

Сообщение Сквозняк » 11.09.2011 15:37:27

Да, окно отдельное. В мплаере много комманд, ипользуя их можно начинать проигрывание с определённого места на определённое время, только точность будет невысокая - место высчитывается по ключевым кадрам, а в наиболее популярных форматах это не очень просто. Если тебе нужны отдельные кадры, то можно выводить не на экран а в скриншоты используя видеовывод png
Код: Выделить всё
mplayer file.avi -vo png
И уже с картинкой делать всё, что тебе нужно. Если этого недостаточно, смотри другие плееры или способы обработки информации лазарусом.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Проигрывание AVI в Lazarus

Сообщение Ism » 11.09.2011 15:42:24

mplayer вообще можно заставить выводить только картинку без рамки и задавать ее размер и положение с помощью опций. То есть встроить в интерфейс программы. Кажется даже можно управлять. Как, можно посмотреть исходники фронтендов
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Проигрывание AVI в Lazarus

Сообщение Alexx2000 » 11.09.2011 16:38:58

GORKOFF писал(а): А можно как-то выводить это на TPanel к примеру?

Можно, в качестве примера можно посмотреть на плагин WlxMPlayer
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Проигрывание AVI в Lazarus

Сообщение Odyssey » 11.09.2011 17:51:25

Сквозняк писал(а):например mplayer ... в виндовсе достаточно скачать готовую сборку с сайта проекта и положить в каталог программы.

При этом важно помнить про лицензию mplayer (GPL v2) и выпускать свою программу под совместимой лицензией, с открытыми исходниками.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Проигрывание AVI в Lazarus

Сообщение Brainenjii » 11.09.2011 20:36:30

Разве вирусные свойства GPL распостраняются на бинарники?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Проигрывание AVI в Lazarus

Сообщение alexs » 11.09.2011 21:18:22

Ism писал(а):mplayer вообще можно заставить выводить только картинку без рамки и задавать ее размер и положение с помощью опций


При запуске - один из параметров хендл окна, в который выводить изображение. Тогда он не будет создавать своё окно, а использует то, которые ты указал.
Команды управления посылаются в stdInput процесса, который ты создаёшь для запуска MPlayer-а.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Проигрывание AVI в Lazarus

Сообщение GORKOFF » 17.09.2011 17:26:07

Спасибо за помощь, но всё же это не совсем то. Я плохо сформулировал вопрос.
Мне скорее нужно получить кадр из AVI-фильма, обработать его, запросить другой кадр и так далее.
GORKOFF
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.09.2011 12:56:48

Re: Проигрывание AVI в Lazarus

Сообщение Odyssey » 17.09.2011 21:24:52

Brainenjii писал(а):Разве вирусные свойства GPL распостраняются на бинарники?

Если я правильно понимаю пункт 2, он не делает различий между исходниками и бинарниками. Там написано, что всё, что включает GPL-программу или её часть (производная работа, derivative work), должно распространяться на условиях GPL. Если в составе этой работы есть независимые от GPL-программы части, то сами по себе (без GPL-программы) они могут быть под любой лицензией. Но если распространять их вместе с GPL-программой, их придётся лицензировать под GPL, поэтому логично выбрать в качестве этой "любой" лицензии GPL-совместимую, например BSD или MIT.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Проигрывание AVI в Lazarus

Сообщение pda » 17.09.2011 22:54:23

Неправильно понимаете. Это не "derivative work", а "mere aggregation", не обязано иметь одну лицензию. Использовать mplayer в slave mode можно, поскольку взаимодействие осуществляется через документированный протокол межпроцессного взаимодействия.
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: Проигрывание AVI в Lazarus

Сообщение Odyssey » 18.09.2011 15:17:20

pda писал(а):Это не "derivative work", а "mere aggregation".

Посмотрим GPL FAQ. Там пишут, что mere aggregation -- это когда я записываю mplayer и свою программу рядом на один и тот же диск. Это не наш случай.

Там же пишут, что если два модуля соединены друг с другом -- они формируют larger work (сходу не переведу), и если хотя бы одна её часть под GPL, то вся larger work должна быть под GPL. При этом что считается соединением, а что нет - решается в суде.

В GNU считают, что статическая или динамическая линковка - это наверняка соединение, а пайпы, сокеты и командная строка -- скорее всего не соединение, т.е. программы остаются независимыми. Дальше они же пишут, что если через пайпы/сокеты/командную строку ведётся обмен внутренними сложными структурами данных, то это тоже, возможно, соединение. При этом окончательное решение остаётся за судьёй, которому нужно ещё доказать, что команды mplayer slave mode не являются такими структурами.

pda писал(а):Использовать mplayer в slave mode можно, поскольку взаимодействие осуществляется через документированный протокол межпроцессного взаимодействия.

Ни в самой GPL, ни в FAQ ничего не написано о документированных протоколах межпроцессного взаимодействия. В FAQ написано, что если есть сомнения в связанности/не связанности программ, вопрос решается в суде.

Для меня "вопрос решается в суде" = "нельзя". Теоретически суд может признать законность использования mplayer slave mode в проприетарных программах, а может и признать. Но выяснять это экспериментально я бы не стал.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru