int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) { int ret = 0; // packet data int type, size; u_int32_t timestamp = 0; char* data = NULL; if ((ret = connect_ic(irtmp)) != 0) { return ret; } if ((ret = connect_oc(ortmp)) != 0) { return ret; } trace("start proxy RTMP stream"); for (;;) { if ((ret = srs_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) { trace("irtmp get packet failed. ret=%d", ret); return ret; } verbose("irtmp got packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); if ((ret = srs_write_packet(ortmp, type, timestamp, data, size)) != 0) { trace("irtmp get packet failed. ret=%d", ret); return ret; } verbose("ortmp sent packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); } return ret; }
int proxy(srs_flv_t flv, srs_rtmp_t ortmp) { int ret = 0; u_int32_t timestamp = 0; int32_t starttime = -1; char header[13]; if ((ret = srs_flv_read_header(flv, header)) != 0) { return ret; } if ((ret = connect_oc(ortmp)) != 0) { return ret; } int64_t re = re_create(); ret = do_proxy(flv, ortmp, re, &starttime, ×tamp); // for the last pulse, always sleep. re_cleanup(re, starttime, timestamp); return ret; }
int proxy(int flv_fd, srs_rtmp_t ortmp) { int ret = 0; // packet data int type, size; u_int32_t timestamp = 0; char* data = NULL; // re int64_t re = re_create(); if ((ret = flv_open_ic(flv_fd)) != 0) { return ret; } if ((ret = connect_oc(ortmp)) != 0) { return ret; } trace("start ingest flv to RTMP stream"); for (;;) { if ((ret = flv_read_packet(flv_fd, &type, ×tamp, &data, &size)) != 0) { trace("irtmp get packet failed. ret=%d", ret); return ret; } verbose("irtmp got packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); if ((ret = srs_write_packet(ortmp, type, timestamp, data, size)) != 0) { trace("irtmp get packet failed. ret=%d", ret); return ret; } verbose("ortmp sent packet: type=%s, time=%d, size=%d", srs_type2string(type), timestamp, size); re = re_update(re, timestamp); } return ret; }