|
#1
|
|||
|
|||
avi в exe-шнике
Доброе время суток!
Помогите советом: нужно видео файл разместить в проекте, т.е. чтобы EXE-шник содержал видео файл, а не подгружал его из указанного места. По-моему, подошел бы компанент на подобии ImageList, только для видео. Если кто-то знает, где его найти или как еще можно решить данную задачу - пишите!!! P.S. желательно решение в рамках Delphi 5. |
#2
|
||||
|
||||
а зачем тебе ImageList???
Просто засовывай видео в res файл, а его в свою очередь в прогу. Проще некуда) |
#3
|
|||
|
|||
Спасибо за отклик!
Хорошо, что всё так просто. Вот только знать бы как это сделать Не будет ли так любезен глубокоуважаемый alikoder, что расскажет поподробнее что за res-файл, как в него засунуть видео, а его в прогу ну или хотябы где можно материал найти на эту тему ...
|
#4
|
||||
|
||||
Да пжлста любезный, В каталоге \DELPHI\BIN имеется утилита коммандной строки, BRCC.EXE, позволяющая создавать из файлов, содержащих изображения/иконки и т.д., RES-файлы.
Используя Блокнот, создай файл определения ресурса (Resource Definition) (текстовый) с именем, скажем, FUCK.RC (с обязательным расширением RC). Размести, каждую на отдельной строке, ссылки на изображения, иконки, (или твое видео), которое ты хотел включить в RES-файл, например: IDR_AVILOGO AVI "Pornuha.avi" После просто перенеси твой fuck.rc на brcc.exe, появится файл fuck.res В твоём модуле Delphi добавь после строки {$R *.RES} строку {$R fuck.RES}, но сначало кинь fuck.res в директорию с исходниками твоей проги. А для вызова видео из рес файла, в проге, используй например: Animate1.ResName := IDR_AVILOGO; Animate1.Active:=true; |
#5
|
||||
|
||||
упс. еще Animate1.ResName := IDR_AVILOGO; заключи в ковычки
'IDR_AVILOGO'; |
#6
|
|||
|
|||
продолжим разговор
Попробовал ... что-то пока не получается: Animate ругается на avi-шку, говорит что не может открыть файл может его как-то настроить надо или к файлу есть какие-то требования (по продолжительности/разрешению/кодеку/...)? MediaPlayer avi-шку воспроизводит напрямую (через .FileName), но у него нет параметра .ResName ... или он по-другому настраивается на res-файл? Может еще какой компонент можно использовать для воспроизведения из res-файла?
|
#7
|
||||
|
||||
Есть еще один вариант.
Тебе надо выдрать ресурс во временный файл, а уж потом воспроизвести его например через TMediaPlayer. Выдрать можно так: Var a:TResourceStream; b:TMemoryStream; Begin A:=TResourceStream.Create(hInstance,'Name','Type') ; B:=TMemoryStream.Create; B.CopyFrom(A,A.Size); B.SaveToFile('FileName here.avi'); a.free; b.free; end; |
#8
|
||||
|
||||
Чуть не забыл. Не забудь удалить извлеченный файл после использования.
|
#9
|
|||
|
|||
Спасибо за совет!
К сожалению, данный способ не подходит - нужно, чтобы всё было в одном файле (без "следов" на компе) |