読み取り手順を行っているため、使用しているユニットが間違っていると思います。
procedure ReadStream (rtmp: RTMP; Stream: TStream);
var
Buffer: array [0 .. 16384-1] of Byte ;/ / 16kB buffer
BytesRead: Integer;
begin
while True do
begin
BytesRead: = RTMP_ReadData (rtmp, @ Buffer [0], SizeOf (Buffer));
if BytesRead = 0 then
exit;
Stream.WriteBuffer (Buffer [0], BytesRead);
end;
end;
プロシージャ コール:
var
MY_RTMP: RTMP;
URL_str: string;
MY_RTMPPacket: RTMPPacket;
URL_char: PAnsiChar;
F: TFileStream;
begin
F: = TFileStream.Create (ExtractFilePath (GetModuleName (0)) + 'Video.flv', fmCreate or fmOpenWrite);
URL_str: = 'rtmp :/ / localhost: 1935/Video/test.stream';
MY_RTMP: = RTMP_Alloc;
RTMP_Init (MY_RTMP);
RTMP_SetupURL (MY_RTMP, pcchar (URL_str));
RTMP_EnableWrite (MY_RTMP);
RTMP_Connect (MY_RTMP, MY_RTMPPacket);
RTMP_ConnectStream (MY_RTMP, 0);
ReadStream (MY_RTMP, F);
end;
プログラムはコンパイルされますが、次のエラー メッセージが表示 されるようになります。プロシージャ エントリ ポイント RTMP_ReadData がライブラリ DLL librtmp に見つかりません しかし、この機能はモジュールで説明されています。矛盾を見つけるのを手伝ってください
Dependency Walker を信頼する場合、ライブラリは RTMP_ReadData を機能しません。関数 RTMP_Read があり、ソースによると:
C では次のように機能します。
static int rtmp_read (URLContext * s, uint8_t * buf, int size)
{
LibRTMPContext * ctx = s-> priv_data;
RTMP * r = & ctx-> rtmp;
return RTMP_Read (r, buf, size);
}
そして、私が使用するモジュールでは、説明がありません
既存のエントリを使用するモジュール:
RTMP_READ = record
buf: pcchar;
bufpos: pcchar;
buflen: cuint;
timestamp: uint32_t;
dataType: uint8_t;
flags: uint8_t;
status: int8_t;
initialFrameType: uint8_t;
nResumeTS: uint32_t;
metaHeader: pcchar;
initialFrame: pcchar;
nMetaHeaderSize: uint32_t;
nInitialFrameSize: uint32_t;
nIgnoredFrameCounter: uint32_t;
nIgnoredFlvFrameCounter: uint32_t;
end;
彼女は呼び出された名前ですが、私の意見では、負荷の機能に関係なく、混乱を招くオプションがたくさん含まれています。この記録をどうするか?