Передо мной стоит задача загрузить и сохранить rtmp поток с сервера на свой компьютер. Исследуя интернет, я пришел к выводу, что необходимо использовать библиотеку LIBRTMP. Я работаю в Delphi XE2, и единственный подходящий код, который я нашел на этой странице и продажи на странице Pascal.
У меня возникли трудности с переводом этого кода в удобную форму для delphi. , т.к. типы cint
, pcchar
и т.д я не распознал.
Я не работаю с C или C++, не могли бы вы дать мне направление работы, или проще решить эту проблему?
LIBRTMP Delphi: используйте dll
Ответы (1)
Вы можете сопоставить эти типы в Delphi, используя следующий код:
Type
cint = longint;
cchar = shortint;
pcchar = ^cchar;
И попробуйте перекомпилировать ваш код.
person
sybond
schedule
09.10.2012
использует ctypes, сокеты; ctypes - не используется в delphi?
- person Anvar; 09.10.2012
function RTMP_HashSWF(url:pcchar; var size:cuint; hash:pcuchar; age:cint):cint;cdecl;external Имя внешней_библиотеки 'RTMP_HashSWF'; hash:pcuchar - замена в delphi?
- person Anvar; 09.10.2012
На самом деле
TArray0to6OfPcchar
и AVal
полностью определены на Pascal Page. А cvar
— это просто директива, сообщающая Delphi, что значение переменной берется из внешней библиотеки.
- person sybond; 09.10.2012
hash:pcuchar - замена в delphi?
- person Anvar; 09.10.2012
или лучше, вы можете искать файл модуля
ctypes.pas
и sockets.pas
. Я считаю, что cint
, cchar
, pcchar
... определены в этих единицах.
- person sybond; 09.10.2012
pcuchar: ^cuchar;
и cuchar: byte;
- person sybond; 09.10.2012
RTMPProtocolStringsLower: TArray0to6OfPcchar; переменная; внешний; переменная; - указывает на ошибку при попытке компиляции: [Ошибка DCC] lrtmp.pas(313): E2029 ',' или ':' ожидается, но ';' найденная функция AMF_EncodeString(output:pcchar; outend:pcchar; var str:AVal):pcchar;cdecl;external Имя внешней_библиотеки 'AMF_EncodeString'; External_library — показывает ошибку при попытке компиляции: [Ошибка DCC] lrtmp.pas(318): E2003 Необъявленный идентификатор: «External_library»
- person Anvar; 09.10.2012
@Anvar извините, я перепутал с реализацией FPC
cvar
и Delphi. Для Delphi вы не можете загрузить переменную из внешней библиотеки.
- person sybond; 09.10.2012
Привет, мне удалось исправить ошибку, но у меня не получилось использовать var MY_RTMP: RTMP; URL_str: AnsiString; begin URL_str: = 'rtmp: // localhost: 1935/Video/test.stream'; MY_RTMP: = RTMP_Alloc; RTMP_Init (MY_RTMP); RTMP_SetupURL (MY_RTMP, pcchar (URL_str)); RTMP_Connect (MY_RTMP, 0); RTMP_ConnectStream(MY_RTMP, 0); конец; Ошибка RTMP_Connect (MY_RTMP, 0); - [Ошибка DCC] fMain.pas (36): E2033 Типы фактических и формальных параметров var должны быть идентичными, заранее спасибо
- person Anvar; 10.10.2012