Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

64 rindas
1.8KB

  1. #include "rtmp-server.h"
  2. #include <assert.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include "flv-proto.h"
  7. #include "flv-writer.h"
  8. static int rtmp_server_send(void* /*param*/, const void* /*header*/, size_t len, const void* /*data*/, size_t bytes)
  9. {
  10. return len + bytes;
  11. }
  12. static int rtmp_server_onpublish(void* param, const char* app, const char* stream, const char* type)
  13. {
  14. printf("rtmp_server_onpublish(%s, %s, %s)\n", app, stream, type);
  15. return 0;
  16. }
  17. static int rtmp_server_onscript(void* flv, const void* script, size_t bytes, uint32_t timestamp)
  18. {
  19. printf("[S] timestamp: %u\n", timestamp);
  20. return flv_writer_input(flv, FLV_TYPE_SCRIPT, script, bytes, timestamp);
  21. }
  22. static int rtmp_server_onvideo(void* flv, const void* data, size_t bytes, uint32_t timestamp)
  23. {
  24. printf("[V] timestamp: %u\n", timestamp);
  25. return flv_writer_input(flv, FLV_TYPE_VIDEO, data, bytes, timestamp);
  26. }
  27. static int rtmp_server_onaudio(void* flv, const void* data, size_t bytes, uint32_t timestamp)
  28. {
  29. printf("[A] timestamp: %u\n", timestamp);
  30. return flv_writer_input(flv, FLV_TYPE_AUDIO, data, bytes, timestamp);
  31. }
  32. void rtmp_server_input_test(const char* file)
  33. {
  34. static uint8_t packet[1024];
  35. snprintf((char*)packet, sizeof(packet), "%s.flv", file);
  36. void* flv = flv_writer_create((const char*)packet);
  37. struct rtmp_server_handler_t handler;
  38. memset(&handler, 0, sizeof(handler));
  39. handler.send = rtmp_server_send;
  40. handler.onpublish = rtmp_server_onpublish;
  41. handler.onaudio = rtmp_server_onaudio;
  42. handler.onvideo = rtmp_server_onvideo;
  43. handler.onscript = rtmp_server_onscript;
  44. rtmp_server_t* rtmp = rtmp_server_create(flv, &handler);
  45. int n = 0;
  46. FILE* fp = fopen(file, "rb");
  47. while (fp && (n = fread(packet, 1, sizeof(packet), fp)) > 0)
  48. {
  49. assert(0 == rtmp_server_input(rtmp, packet, n));
  50. }
  51. fclose(fp);
  52. flv_writer_destroy(flv);
  53. rtmp_server_destroy(rtmp);
  54. }