選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

65 行
1.8KB

  1. #include "aio-rtmp-server.h"
  2. #include "aio-timeout.h"
  3. #include "aio-socket.h"
  4. #include "flv-writer.h"
  5. #include "flv-proto.h"
  6. #include <string.h>
  7. #include <assert.h>
  8. #include <stdio.h>
  9. static aio_rtmp_userptr_t aio_rtmp_server_onpublish(void* param, aio_rtmp_session_t* /*session*/, const char* app, const char* stream, const char* type)
  10. {
  11. printf("aio_rtmp_server_onpublish(%s, %s, %s)\n", app, stream, type);
  12. return flv_writer_create((const char*)param);
  13. }
  14. static int aio_rtmp_server_onscript(aio_rtmp_userptr_t flv, const void* script, size_t bytes, uint32_t timestamp)
  15. {
  16. return flv_writer_input(flv, FLV_TYPE_SCRIPT, script, bytes, timestamp);
  17. }
  18. static int aio_rtmp_server_onvideo(aio_rtmp_userptr_t flv, const void* data, size_t bytes, uint32_t timestamp)
  19. {
  20. return flv_writer_input(flv, FLV_TYPE_VIDEO, data, bytes, timestamp);
  21. }
  22. static int aio_rtmp_server_onaudio(aio_rtmp_userptr_t flv, const void* data, size_t bytes, uint32_t timestamp)
  23. {
  24. return flv_writer_input(flv, FLV_TYPE_AUDIO, data, bytes, timestamp);
  25. }
  26. static void aio_rtmp_server_onsend(aio_rtmp_userptr_t /*ptr*/, size_t /*bytes*/)
  27. {
  28. }
  29. static void aio_rtmp_server_onclose(aio_rtmp_userptr_t flv)
  30. {
  31. flv_writer_destroy(flv);
  32. }
  33. void rtmp_server_publish_aio_test(const char* flv)
  34. {
  35. aio_rtmp_server_t* rtmp;
  36. struct aio_rtmp_server_handler_t handler;
  37. memset(&handler, 0, sizeof(handler));
  38. handler.onsend = aio_rtmp_server_onsend;
  39. handler.onpublish = aio_rtmp_server_onpublish;
  40. handler.onscript = aio_rtmp_server_onscript;
  41. handler.onaudio = aio_rtmp_server_onaudio;
  42. handler.onvideo = aio_rtmp_server_onvideo;
  43. handler.onclose = aio_rtmp_server_onclose;
  44. aio_socket_init(1);
  45. rtmp = aio_rtmp_server_create(NULL, 1935, &handler, (void*)flv);
  46. while (aio_socket_process(2000) > 0)
  47. {
  48. aio_timeout_process();
  49. }
  50. aio_rtmp_server_destroy(rtmp);
  51. aio_socket_clean();
  52. }