Example #1
0
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, &timestamp, &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;
}
Example #2
0
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, &timestamp);

    // 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, &timestamp, &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;
}