diff options
| author | Mistivia <i@mistivia.com> | 2025-09-10 17:41:52 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-09-10 17:41:52 +0800 |
| commit | 8d089010b37ee193b2b8c809a4f317fa2b11a758 (patch) | |
| tree | f2a671f9bcc8760983ab016d8d181f2630fe16a7 /main.c | |
rtmp server
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 56 |
1 files changed, 56 insertions, 0 deletions
@@ -0,0 +1,56 @@ +#include <stdio.h> + +#include "rtmpserver.h" +#include "fileutils.h" + +void on_rtmp_start(void *ctx) { + *(FILE**)ctx = fopen("test.flv", "wb"); + FILE *fp = *(FILE**)ctx; + fwrite_char(fp, 'F'); + fwrite_char(fp, 'L'); + fwrite_char(fp, 'V'); + fwrite_char(fp, 1); + fwrite_char(fp, 5); + fwrite_word32be(fp, 9); + fwrite_word32be(fp, 0); +} + +void on_rtmp_stop(void *ctx) { + FILE *fp = *(FILE**)ctx; + fclose(fp); + exit(0); +} + +void on_rtmp_video(void *ctx, int64_t timestamp, char *buf, size_t size) { + FILE *fp = *(FILE**)ctx; + fwrite_char(fp, 9); + fwrite_word24be(fp, size); + fwrite_word24be(fp, timestamp); + fwrite_char(fp, timestamp >> 24); + fwrite_word24be(fp, 0); + fwrite(buf, 1, size, fp); + fwrite_word32be(fp, size + 11); +} + +void on_rtmp_audio(void *ctx, int64_t timestamp, char *buf, size_t size) { + FILE *fp = *(FILE**)ctx; + fwrite_char(fp, 8); + fwrite_word24be(fp, size); + fwrite_word24be(fp, timestamp); + fwrite_char(fp, timestamp >> 24); + fwrite_word24be(fp, 0); + fwrite(buf, 1, size, fp); + fwrite_word32be(fp, size + 11); +} + +int main() { + RtmpCallbacks rtmp_cbs = { + .on_audio = &on_rtmp_audio, + .on_video = &on_rtmp_video, + .on_start = &on_rtmp_start, + .on_stop = &on_rtmp_stop, + }; + FILE* fp = NULL; + start_rtmpserver(rtmp_cbs, &fp); + return 0; +}
\ No newline at end of file |
