mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
rename the confict macro to srs_lib_trace
This commit is contained in:
parent
3405f35d06
commit
606fc13a03
11 changed files with 135 additions and 135 deletions
|
@ -80,31 +80,31 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
rtmp = srs_rtmp_create2(argv[1]);
|
rtmp = srs_rtmp_create2(argv[1]);
|
||||||
|
|
||||||
srs_trace("bandwidth check/test url: %s", argv[1]);
|
srs_lib_trace("bandwidth check/test url: %s", argv[1]);
|
||||||
|
|
||||||
if ((ret = srs_simple_handshake(rtmp)) != 0) {
|
if ((ret = srs_simple_handshake(rtmp)) != 0) {
|
||||||
srs_trace("simple handshake failed.");
|
srs_lib_trace("simple handshake failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("simple handshake success");
|
srs_lib_trace("simple handshake success");
|
||||||
|
|
||||||
if ((ret = srs_connect_app2(rtmp,
|
if ((ret = srs_connect_app2(rtmp,
|
||||||
srs_server_ip, srs_server, srs_primary_authors, srs_version, &srs_id, &srs_pid)) != 0) {
|
srs_server_ip, srs_server, srs_primary_authors, srs_version, &srs_id, &srs_pid)) != 0) {
|
||||||
srs_trace("connect vhost/app failed.");
|
srs_lib_trace("connect vhost/app failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("connect vhost/app success");
|
srs_lib_trace("connect vhost/app success");
|
||||||
|
|
||||||
if ((ret = srs_bandwidth_check(rtmp,
|
if ((ret = srs_bandwidth_check(rtmp,
|
||||||
&start_time, &end_time, &play_kbps, &publish_kbps,
|
&start_time, &end_time, &play_kbps, &publish_kbps,
|
||||||
&play_bytes, &publish_bytes, &play_duration, &publish_duration)) != 0
|
&play_bytes, &publish_bytes, &play_duration, &publish_duration)) != 0
|
||||||
) {
|
) {
|
||||||
srs_trace("bandwidth check/test failed.");
|
srs_lib_trace("bandwidth check/test failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("bandwidth check/test success");
|
srs_lib_trace("bandwidth check/test success");
|
||||||
|
|
||||||
srs_trace("\n%s, %s\n"
|
srs_lib_trace("\n%s, %s\n"
|
||||||
"%s, %s, srs_pid=%d, srs_id=%d\n"
|
"%s, %s, srs_pid=%d, srs_id=%d\n"
|
||||||
"duration: %dms(%d+%d)\n"
|
"duration: %dms(%d+%d)\n"
|
||||||
"play: %dkbps\n"
|
"play: %dkbps\n"
|
||||||
|
@ -136,8 +136,8 @@ rtmp_destroy:
|
||||||
(int)(end_time - start_time), play_duration, publish_duration,
|
(int)(end_time - start_time), play_duration, publish_duration,
|
||||||
play_kbps, publish_kbps);
|
play_kbps, publish_kbps);
|
||||||
|
|
||||||
srs_trace("");
|
srs_lib_trace("");
|
||||||
srs_trace("completed");
|
srs_lib_trace("completed");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,55 +79,55 @@ int main(int argc, char** argv)
|
||||||
duration = atoi(argv[2]);
|
duration = atoi(argv[2]);
|
||||||
timeout = atoi(argv[3]);
|
timeout = atoi(argv[3]);
|
||||||
|
|
||||||
srs_trace("rtmp url: %s", rtmp_url);
|
srs_lib_trace("rtmp url: %s", rtmp_url);
|
||||||
srs_trace("duration: %ds, timeout:%ds", duration, timeout);
|
srs_lib_trace("duration: %ds, timeout:%ds", duration, timeout);
|
||||||
|
|
||||||
if (duration <= 0 || timeout <= 0) {
|
if (duration <= 0 || timeout <= 0) {
|
||||||
srs_trace("duration and timeout must be positive.");
|
srs_lib_trace("duration and timeout must be positive.");
|
||||||
exit(-2);
|
exit(-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
rtmp = srs_rtmp_create(rtmp_url);
|
rtmp = srs_rtmp_create(rtmp_url);
|
||||||
|
|
||||||
if ((ret = __srs_dns_resolve(rtmp)) != 0) {
|
if ((ret = __srs_dns_resolve(rtmp)) != 0) {
|
||||||
srs_trace("dns resolve failed. ret=%d", ret);
|
srs_lib_trace("dns resolve failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("dns resolve success");
|
srs_lib_trace("dns resolve success");
|
||||||
time_dns_resolve = srs_get_time_ms();
|
time_dns_resolve = srs_get_time_ms();
|
||||||
|
|
||||||
if ((ret = __srs_connect_server(rtmp)) != 0) {
|
if ((ret = __srs_connect_server(rtmp)) != 0) {
|
||||||
srs_trace("socket connect failed. ret=%d", ret);
|
srs_lib_trace("socket connect failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("socket connect success");
|
srs_lib_trace("socket connect success");
|
||||||
time_socket_connect = srs_get_time_ms();
|
time_socket_connect = srs_get_time_ms();
|
||||||
|
|
||||||
if ((ret = __srs_do_simple_handshake(rtmp)) != 0) {
|
if ((ret = __srs_do_simple_handshake(rtmp)) != 0) {
|
||||||
srs_trace("do simple handshake failed. ret=%d", ret);
|
srs_lib_trace("do simple handshake failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("do simple handshake success");
|
srs_lib_trace("do simple handshake success");
|
||||||
|
|
||||||
if ((ret = srs_connect_app(rtmp)) != 0) {
|
if ((ret = srs_connect_app(rtmp)) != 0) {
|
||||||
srs_trace("connect vhost/app failed. ret=%d", ret);
|
srs_lib_trace("connect vhost/app failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("connect vhost/app success");
|
srs_lib_trace("connect vhost/app success");
|
||||||
|
|
||||||
if ((ret = srs_play_stream(rtmp)) != 0) {
|
if ((ret = srs_play_stream(rtmp)) != 0) {
|
||||||
srs_trace("play stream failed. ret=%d", ret);
|
srs_lib_trace("play stream failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("play stream success");
|
srs_lib_trace("play stream success");
|
||||||
time_play_stream = srs_get_time_ms();
|
time_play_stream = srs_get_time_ms();
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((ret = srs_read_packet(rtmp, &type, ×tamp, &data, &size)) != 0) {
|
if ((ret = srs_read_packet(rtmp, &type, ×tamp, &data, &size)) != 0) {
|
||||||
srs_trace("read packet failed. ret=%d", ret);
|
srs_lib_trace("read packet failed. ret=%d", ret);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("got packet: type=%s, time=%d, size=%d",
|
srs_lib_trace("got packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), timestamp, size);
|
srs_type2string(type), timestamp, size);
|
||||||
|
|
||||||
if (SRS_RTMP_TYPE_VIDEO == type || SRS_RTMP_TYPE_AUDIO == type) {
|
if (SRS_RTMP_TYPE_VIDEO == type || SRS_RTMP_TYPE_AUDIO == type) {
|
||||||
|
@ -142,12 +142,12 @@ int main(int argc, char** argv)
|
||||||
free(data);
|
free(data);
|
||||||
|
|
||||||
if (srs_get_time_ms() - time_startup > timeout * 1000) {
|
if (srs_get_time_ms() - time_startup > timeout * 1000) {
|
||||||
srs_trace("timeout, terminate.");
|
srs_lib_trace("timeout, terminate.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((timestamp - basetime) > duration * 1000) {
|
if ((timestamp - basetime) > duration * 1000) {
|
||||||
srs_trace("duration exceed, terminate.");
|
srs_lib_trace("duration exceed, terminate.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,8 +196,8 @@ rtmp_destroy:
|
||||||
"\"remark2\": \"if code is not 0, user must ignore all data\""
|
"\"remark2\": \"if code is not 0, user must ignore all data\""
|
||||||
);
|
);
|
||||||
|
|
||||||
srs_trace("");
|
srs_lib_trace("");
|
||||||
srs_trace("completed");
|
srs_lib_trace("completed");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,9 +76,9 @@ int main(int argc, char** argv)
|
||||||
tmp_file = (char*)malloc(tmp_file_size);
|
tmp_file = (char*)malloc(tmp_file_size);
|
||||||
snprintf(tmp_file, tmp_file_size, "%s.tmp", out_flv_file);
|
snprintf(tmp_file, tmp_file_size, "%s.tmp", out_flv_file);
|
||||||
|
|
||||||
srs_trace("input: %s", in_flv_file);
|
srs_lib_trace("input: %s", in_flv_file);
|
||||||
srs_trace("output: %s", out_flv_file);
|
srs_lib_trace("output: %s", out_flv_file);
|
||||||
srs_trace("tmp_file: %s", tmp_file);
|
srs_lib_trace("tmp_file: %s", tmp_file);
|
||||||
|
|
||||||
ret = process(in_flv_file, tmp_file, &ic, &oc);
|
ret = process(in_flv_file, tmp_file, &ic, &oc);
|
||||||
|
|
||||||
|
@ -89,13 +89,13 @@ int main(int argc, char** argv)
|
||||||
unlink(tmp_file);
|
unlink(tmp_file);
|
||||||
if (ret == ERROR_INJECTED) {
|
if (ret == ERROR_INJECTED) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
srs_trace("file already injected.");
|
srs_lib_trace("file already injected.");
|
||||||
} else {
|
} else {
|
||||||
srs_trace("error, remove tmp file.");
|
srs_lib_trace("error, remove tmp file.");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rename(tmp_file, out_flv_file);
|
rename(tmp_file, out_flv_file);
|
||||||
srs_trace("completed, rename to %s", out_flv_file);
|
srs_lib_trace("completed, rename to %s", out_flv_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(tmp_file);
|
free(tmp_file);
|
||||||
|
@ -123,14 +123,14 @@ int process(const char* in_flv_file, const char* out_flv_file, srs_flv_t* pic, s
|
||||||
|
|
||||||
if ((ic = srs_flv_open_read(in_flv_file)) == NULL) {
|
if ((ic = srs_flv_open_read(in_flv_file)) == NULL) {
|
||||||
ret = 2;
|
ret = 2;
|
||||||
srs_trace("open input flv file failed. ret=%d", ret);
|
srs_lib_trace("open input flv file failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
*pic = ic;
|
*pic = ic;
|
||||||
|
|
||||||
if ((oc = srs_flv_open_write(out_flv_file)) == NULL) {
|
if ((oc = srs_flv_open_write(out_flv_file)) == NULL) {
|
||||||
ret = 2;
|
ret = 2;
|
||||||
srs_trace("open output flv file failed. ret=%d", ret);
|
srs_lib_trace("open output flv file failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
*poc = oc;
|
*poc = oc;
|
||||||
|
@ -164,13 +164,13 @@ int parse_metadata(char* data, int size, srs_amf0_t* pname, srs_amf0_t* pdata)
|
||||||
*pname = srs_amf0_parse(data, size, &nparsed);
|
*pname = srs_amf0_parse(data, size, &nparsed);
|
||||||
|
|
||||||
if (*pname == NULL || nparsed >= size) {
|
if (*pname == NULL || nparsed >= size) {
|
||||||
srs_trace("invalid amf0 name data.");
|
srs_lib_trace("invalid amf0 name data.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pdata = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed);
|
*pdata = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed);
|
||||||
if (*pdata == NULL || nparsed > size) {
|
if (*pdata == NULL || nparsed > size) {
|
||||||
srs_trace("invalid amf0 value data");
|
srs_lib_trace("invalid amf0 value data");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,22 +206,22 @@ int build_keyframes(srs_flv_t ic, srs_amf0_t *pname, srs_amf0_t* pdata, srs_amf0
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("build keyframe infos from flv");
|
srs_lib_trace("build keyframe infos from flv");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
offset = srs_flv_tellg(ic);
|
offset = srs_flv_tellg(ic);
|
||||||
|
|
||||||
// tag header
|
// tag header
|
||||||
if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) {
|
if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) {
|
||||||
if (srs_flv_is_eof(ret)) {
|
if (srs_flv_is_eof(ret)) {
|
||||||
srs_trace("parse completed.");
|
srs_lib_trace("parse completed.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
srs_trace("flv get packet failed. ret=%d", ret);
|
srs_lib_trace("flv get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size <= 0) {
|
if (size <= 0) {
|
||||||
srs_trace("invalid size=%d", size);
|
srs_lib_trace("invalid size=%d", size);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,20 +343,20 @@ int do_inject_flv(srs_flv_t ic, srs_flv_t oc, srs_amf0_t amf0_name, srs_amf0_t a
|
||||||
free(data);
|
free(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("build keyframe infos from flv");
|
srs_lib_trace("build keyframe infos from flv");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// tag header
|
// tag header
|
||||||
if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) {
|
if ((ret = srs_flv_read_tag_header(ic, &type, &size, ×tamp)) != 0) {
|
||||||
if (srs_flv_is_eof(ret)) {
|
if (srs_flv_is_eof(ret)) {
|
||||||
srs_trace("parse completed.");
|
srs_lib_trace("parse completed.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
srs_trace("flv get packet failed. ret=%d", ret);
|
srs_lib_trace("flv get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size <= 0) {
|
if (size <= 0) {
|
||||||
srs_trace("invalid size=%d", size);
|
srs_lib_trace("invalid size=%d", size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,11 +61,11 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
in_flv_file = argv[1];
|
in_flv_file = argv[1];
|
||||||
srs_trace("input: %s", in_flv_file);
|
srs_lib_trace("input: %s", in_flv_file);
|
||||||
|
|
||||||
if ((flv = srs_flv_open_read(in_flv_file)) == NULL) {
|
if ((flv = srs_flv_open_read(in_flv_file)) == NULL) {
|
||||||
ret = 2;
|
ret = 2;
|
||||||
srs_trace("open flv file failed. ret=%d", ret);
|
srs_lib_trace("open flv file failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,12 +147,12 @@ int parse_script_data(u_int32_t timestamp, char* data, int size, int64_t offset)
|
||||||
// amf0
|
// amf0
|
||||||
amf0_name = srs_amf0_parse(data, size, &nparsed);
|
amf0_name = srs_amf0_parse(data, size, &nparsed);
|
||||||
if (amf0_name == NULL || nparsed >= size) {
|
if (amf0_name == NULL || nparsed >= size) {
|
||||||
srs_trace("invalid amf0 name data.");
|
srs_lib_trace("invalid amf0 name data.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
amf0_data = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed);
|
amf0_data = srs_amf0_parse(data + nparsed, size - nparsed, &nparsed);
|
||||||
|
|
||||||
srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
srs_lib_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
||||||
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n%s%s",
|
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n%s%s",
|
||||||
srs_type2string(SRS_RTMP_TYPE_SCRIPT), timestamp, size + FLV_HEADER_SIZE, size,
|
srs_type2string(SRS_RTMP_TYPE_SCRIPT), timestamp, size + FLV_HEADER_SIZE, size,
|
||||||
(int)offset, hbuf, tbuf,
|
(int)offset, hbuf, tbuf,
|
||||||
|
@ -178,7 +178,7 @@ int parse_audio_data(u_int32_t timestamp, char* data, int size, int64_t offset)
|
||||||
// bytes
|
// bytes
|
||||||
parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16);
|
parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16);
|
||||||
|
|
||||||
srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
srs_lib_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
||||||
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n",
|
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n",
|
||||||
srs_type2string(SRS_RTMP_TYPE_AUDIO), timestamp, size + FLV_HEADER_SIZE, size,
|
srs_type2string(SRS_RTMP_TYPE_AUDIO), timestamp, size + FLV_HEADER_SIZE, size,
|
||||||
(int)offset, hbuf, tbuf);
|
(int)offset, hbuf, tbuf);
|
||||||
|
@ -196,7 +196,7 @@ int parse_video_data(u_int32_t timestamp, char* data, int size, int64_t offset)
|
||||||
// bytes
|
// bytes
|
||||||
parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16);
|
parse_bytes(data, size, hbuf, sizeof(hbuf), tbuf, sizeof(tbuf), 16);
|
||||||
|
|
||||||
srs_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
srs_lib_trace("packet type=%s, time=%d, size=%d, data-size=%d, \n"
|
||||||
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n",
|
"offset=%d\n[+00, +15] %s\n[-15, EOF] %s\n",
|
||||||
srs_type2string(SRS_RTMP_TYPE_VIDEO), timestamp, size + FLV_HEADER_SIZE, size,
|
srs_type2string(SRS_RTMP_TYPE_VIDEO), timestamp, size + FLV_HEADER_SIZE, size,
|
||||||
(int)offset, hbuf, tbuf);
|
(int)offset, hbuf, tbuf);
|
||||||
|
@ -221,22 +221,22 @@ int parse_flv(srs_flv_t flv)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("start parse flv");
|
srs_lib_trace("start parse flv");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
offset = srs_flv_tellg(flv);
|
offset = srs_flv_tellg(flv);
|
||||||
|
|
||||||
// tag header
|
// tag header
|
||||||
if ((ret = srs_flv_read_tag_header(flv, &type, &size, ×tamp)) != 0) {
|
if ((ret = srs_flv_read_tag_header(flv, &type, &size, ×tamp)) != 0) {
|
||||||
if (srs_flv_is_eof(ret)) {
|
if (srs_flv_is_eof(ret)) {
|
||||||
srs_trace("parse completed.");
|
srs_lib_trace("parse completed.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
srs_trace("flv get packet failed. ret=%d", ret);
|
srs_lib_trace("flv get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size <= 0) {
|
if (size <= 0) {
|
||||||
srs_trace("invalid size=%d", size);
|
srs_lib_trace("invalid size=%d", size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ int read_h264_frame(char* data, int size, char** pp, int* pnb_start_code, int fp
|
||||||
// we search the h264 frame from the buffer which cached the h264 data.
|
// we search the h264 frame from the buffer which cached the h264 data.
|
||||||
// please get h264 raw data from device, it always a encoded frame.
|
// please get h264 raw data from device, it always a encoded frame.
|
||||||
if (!srs_h264_startswith_annexb(p, size - (p - data), pnb_start_code)) {
|
if (!srs_h264_startswith_annexb(p, size - (p - data), pnb_start_code)) {
|
||||||
srs_trace("h264 raw data invalid.");
|
srs_lib_trace("h264 raw data invalid.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ int read_h264_frame(char* data, int size, char** pp, int* pnb_start_code, int fp
|
||||||
*pp = p;
|
*pp = p;
|
||||||
*frame_size = p - *frame;
|
*frame_size = p - *frame;
|
||||||
if (*frame_size <= 0) {
|
if (*frame_size <= 0) {
|
||||||
srs_trace("h264 raw data invalid.");
|
srs_lib_trace("h264 raw data invalid.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,32 +95,32 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
const char* raw_file = argv[1];
|
const char* raw_file = argv[1];
|
||||||
const char* rtmp_url = argv[2];
|
const char* rtmp_url = argv[2];
|
||||||
srs_trace("raw_file=%s, rtmp_url=%s", raw_file, rtmp_url);
|
srs_lib_trace("raw_file=%s, rtmp_url=%s", raw_file, rtmp_url);
|
||||||
|
|
||||||
// open file
|
// open file
|
||||||
int raw_fd = open(raw_file, O_RDONLY);
|
int raw_fd = open(raw_file, O_RDONLY);
|
||||||
if (raw_fd < 0) {
|
if (raw_fd < 0) {
|
||||||
srs_trace("open h264 raw file %s failed.", raw_fd);
|
srs_lib_trace("open h264 raw file %s failed.", raw_fd);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
off_t file_size = lseek(raw_fd, 0, SEEK_END);
|
off_t file_size = lseek(raw_fd, 0, SEEK_END);
|
||||||
if (file_size <= 0) {
|
if (file_size <= 0) {
|
||||||
srs_trace("h264 raw file %s empty.", raw_file);
|
srs_lib_trace("h264 raw file %s empty.", raw_file);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("read entirely h264 raw file, size=%dKB", (int)(file_size / 1024));
|
srs_lib_trace("read entirely h264 raw file, size=%dKB", (int)(file_size / 1024));
|
||||||
|
|
||||||
char* h264_raw = (char*)malloc(file_size);
|
char* h264_raw = (char*)malloc(file_size);
|
||||||
if (!h264_raw) {
|
if (!h264_raw) {
|
||||||
srs_trace("alloc raw buffer failed for file %s.", raw_file);
|
srs_lib_trace("alloc raw buffer failed for file %s.", raw_file);
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
lseek(raw_fd, 0, SEEK_SET);
|
lseek(raw_fd, 0, SEEK_SET);
|
||||||
ssize_t nb_read = 0;
|
ssize_t nb_read = 0;
|
||||||
if ((nb_read = read(raw_fd, h264_raw, file_size)) != file_size) {
|
if ((nb_read = read(raw_fd, h264_raw, file_size)) != file_size) {
|
||||||
srs_trace("buffer %s failed, expect=%dKB, actual=%dKB.",
|
srs_lib_trace("buffer %s failed, expect=%dKB, actual=%dKB.",
|
||||||
raw_file, (int)(file_size / 1024), (int)(nb_read / 1024));
|
raw_file, (int)(file_size / 1024), (int)(nb_read / 1024));
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
@ -129,22 +129,22 @@ int main(int argc, char** argv)
|
||||||
srs_rtmp_t rtmp = srs_rtmp_create(rtmp_url);
|
srs_rtmp_t rtmp = srs_rtmp_create(rtmp_url);
|
||||||
|
|
||||||
if (srs_simple_handshake(rtmp) != 0) {
|
if (srs_simple_handshake(rtmp) != 0) {
|
||||||
srs_trace("simple handshake failed.");
|
srs_lib_trace("simple handshake failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("simple handshake success");
|
srs_lib_trace("simple handshake success");
|
||||||
|
|
||||||
if (srs_connect_app(rtmp) != 0) {
|
if (srs_connect_app(rtmp) != 0) {
|
||||||
srs_trace("connect vhost/app failed.");
|
srs_lib_trace("connect vhost/app failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("connect vhost/app success");
|
srs_lib_trace("connect vhost/app success");
|
||||||
|
|
||||||
if (srs_publish_stream(rtmp) != 0) {
|
if (srs_publish_stream(rtmp) != 0) {
|
||||||
srs_trace("publish stream failed.");
|
srs_lib_trace("publish stream failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("publish stream success");
|
srs_lib_trace("publish stream success");
|
||||||
|
|
||||||
u_int32_t dts = 0;
|
u_int32_t dts = 0;
|
||||||
u_int32_t pts = 0;
|
u_int32_t pts = 0;
|
||||||
|
@ -161,27 +161,27 @@ int main(int argc, char** argv)
|
||||||
if (read_h264_frame(h264_raw, file_size, &p, &nb_start_code, fps,
|
if (read_h264_frame(h264_raw, file_size, &p, &nb_start_code, fps,
|
||||||
&data, &size, &dts, &pts) < 0
|
&data, &size, &dts, &pts) < 0
|
||||||
) {
|
) {
|
||||||
srs_trace("read a frame from file buffer failed.");
|
srs_lib_trace("read a frame from file buffer failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
// send out the h264 packet over RTMP
|
// send out the h264 packet over RTMP
|
||||||
if (srs_write_h264_raw_frames(rtmp, data, size, dts, pts) != 0) {
|
if (srs_write_h264_raw_frames(rtmp, data, size, dts, pts) != 0) {
|
||||||
srs_trace("send h264 raw data failed.");
|
srs_lib_trace("send h264 raw data failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5bits, 7.3.1 NAL unit syntax,
|
// 5bits, 7.3.1 NAL unit syntax,
|
||||||
// H.264-AVC-ISO_IEC_14496-10.pdf, page 44.
|
// H.264-AVC-ISO_IEC_14496-10.pdf, page 44.
|
||||||
u_int8_t nut = (char)data[nb_start_code] & 0x1f;
|
u_int8_t nut = (char)data[nb_start_code] & 0x1f;
|
||||||
srs_trace("sent packet: type=%s, time=%d, size=%d, fps=%d, b[%d]=%#x(%s)",
|
srs_lib_trace("sent packet: type=%s, time=%d, size=%d, fps=%d, b[%d]=%#x(%s)",
|
||||||
srs_type2string(SRS_RTMP_TYPE_VIDEO), dts, size, fps, nb_start_code, (char)data[nb_start_code],
|
srs_type2string(SRS_RTMP_TYPE_VIDEO), dts, size, fps, nb_start_code, (char)data[nb_start_code],
|
||||||
(nut == 7? "SPS":(nut == 8? "PPS":(nut == 5? "I":(nut == 1? "P":"Unknown")))));
|
(nut == 7? "SPS":(nut == 8? "PPS":(nut == 5? "I":(nut == 1? "P":"Unknown")))));
|
||||||
|
|
||||||
// @remark, when use encode device, it not need to sleep.
|
// @remark, when use encode device, it not need to sleep.
|
||||||
usleep(1000 / fps * 1000);
|
usleep(1000 / fps * 1000);
|
||||||
}
|
}
|
||||||
srs_trace("h264 raw data completed");
|
srs_lib_trace("h264 raw data completed");
|
||||||
|
|
||||||
rtmp_destroy:
|
rtmp_destroy:
|
||||||
srs_rtmp_destroy(rtmp);
|
srs_rtmp_destroy(rtmp);
|
||||||
|
|
|
@ -89,19 +89,19 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("input: %s", in_flv_file);
|
srs_lib_trace("input: %s", in_flv_file);
|
||||||
srs_trace("output: %s", out_rtmp_url);
|
srs_lib_trace("output: %s", out_rtmp_url);
|
||||||
|
|
||||||
if ((flv = srs_flv_open_read(in_flv_file)) == NULL) {
|
if ((flv = srs_flv_open_read(in_flv_file)) == NULL) {
|
||||||
ret = 2;
|
ret = 2;
|
||||||
srs_trace("open flv file failed. ret=%d", ret);
|
srs_lib_trace("open flv file failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ortmp = srs_rtmp_create(out_rtmp_url);
|
ortmp = srs_rtmp_create(out_rtmp_url);
|
||||||
|
|
||||||
ret = proxy(flv, ortmp);
|
ret = proxy(flv, ortmp);
|
||||||
srs_trace("ingest flv to RTMP completed");
|
srs_lib_trace("ingest flv to RTMP completed");
|
||||||
|
|
||||||
srs_rtmp_destroy(ortmp);
|
srs_rtmp_destroy(ortmp);
|
||||||
srs_flv_close(flv);
|
srs_flv_close(flv);
|
||||||
|
@ -118,20 +118,20 @@ int do_proxy(srs_flv_t flv, srs_rtmp_t ortmp, int64_t re, u_int32_t* ptimestamp)
|
||||||
int size;
|
int size;
|
||||||
char* data = NULL;
|
char* data = NULL;
|
||||||
|
|
||||||
srs_trace("start ingest flv to RTMP stream");
|
srs_lib_trace("start ingest flv to RTMP stream");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// tag header
|
// tag header
|
||||||
if ((ret = srs_flv_read_tag_header(flv, &type, &size, ptimestamp)) != 0) {
|
if ((ret = srs_flv_read_tag_header(flv, &type, &size, ptimestamp)) != 0) {
|
||||||
if (srs_flv_is_eof(ret)) {
|
if (srs_flv_is_eof(ret)) {
|
||||||
srs_trace("parse completed.");
|
srs_lib_trace("parse completed.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
srs_trace("flv get packet failed. ret=%d", ret);
|
srs_lib_trace("flv get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size <= 0) {
|
if (size <= 0) {
|
||||||
srs_trace("invalid size=%d", size);
|
srs_lib_trace("invalid size=%d", size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,10 +142,10 @@ int do_proxy(srs_flv_t flv, srs_rtmp_t ortmp, int64_t re, u_int32_t* ptimestamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = srs_write_packet(ortmp, type, *ptimestamp, data, size)) != 0) {
|
if ((ret = srs_write_packet(ortmp, type, *ptimestamp, data, size)) != 0) {
|
||||||
srs_trace("irtmp get packet failed. ret=%d", ret);
|
srs_lib_trace("irtmp get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_verbose("ortmp sent packet: type=%s, time=%d, size=%d",
|
srs_lib_verbose("ortmp sent packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), *ptimestamp, size);
|
srs_type2string(type), *ptimestamp, size);
|
||||||
|
|
||||||
re_update(re, *ptimestamp);
|
re_update(re, *ptimestamp);
|
||||||
|
@ -182,22 +182,22 @@ int connect_oc(srs_rtmp_t ortmp)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if ((ret = srs_simple_handshake(ortmp)) != 0) {
|
if ((ret = srs_simple_handshake(ortmp)) != 0) {
|
||||||
srs_trace("ortmp simple handshake failed. ret=%d", ret);
|
srs_lib_trace("ortmp simple handshake failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp simple handshake success");
|
srs_lib_trace("ortmp simple handshake success");
|
||||||
|
|
||||||
if ((ret = srs_connect_app(ortmp)) != 0) {
|
if ((ret = srs_connect_app(ortmp)) != 0) {
|
||||||
srs_trace("ortmp connect vhost/app failed. ret=%d", ret);
|
srs_lib_trace("ortmp connect vhost/app failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp connect vhost/app success");
|
srs_lib_trace("ortmp connect vhost/app success");
|
||||||
|
|
||||||
if ((ret = srs_publish_stream(ortmp)) != 0) {
|
if ((ret = srs_publish_stream(ortmp)) != 0) {
|
||||||
srs_trace("ortmp publish stream failed. ret=%d", ret);
|
srs_lib_trace("ortmp publish stream failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp publish stream success");
|
srs_lib_trace("ortmp publish stream success");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -209,16 +209,16 @@ int64_t re_create()
|
||||||
|
|
||||||
// use the starttime to get the deviation
|
// use the starttime to get the deviation
|
||||||
int64_t deviation = re - tools_main_entrance_startup_time;
|
int64_t deviation = re - tools_main_entrance_startup_time;
|
||||||
srs_trace("deviation is %d ms, pulse is %d ms", (int)(deviation), (int)(RE_PULSE_MS));
|
srs_lib_trace("deviation is %d ms, pulse is %d ms", (int)(deviation), (int)(RE_PULSE_MS));
|
||||||
|
|
||||||
// so, we adjust time to max(0, deviation)
|
// so, we adjust time to max(0, deviation)
|
||||||
// because the last pulse, we already sleeped
|
// because the last pulse, we already sleeped
|
||||||
int adjust = (int)(deviation);
|
int adjust = (int)(deviation);
|
||||||
if (adjust > 0) {
|
if (adjust > 0) {
|
||||||
srs_trace("adjust re time for %d ms", adjust);
|
srs_lib_trace("adjust re time for %d ms", adjust);
|
||||||
re -= adjust;
|
re -= adjust;
|
||||||
} else {
|
} else {
|
||||||
srs_trace("no need to adjust re time");
|
srs_lib_trace("no need to adjust re time");
|
||||||
}
|
}
|
||||||
|
|
||||||
return re;
|
return re;
|
||||||
|
@ -239,7 +239,7 @@ void re_cleanup(int64_t re, u_int32_t time)
|
||||||
int64_t now = srs_get_time_ms();
|
int64_t now = srs_get_time_ms();
|
||||||
int64_t diff = time - (now -re);
|
int64_t diff = time - (now -re);
|
||||||
if (diff > 0) {
|
if (diff > 0) {
|
||||||
srs_trace("re_cleanup sleep for the last pulse for %d ms", (int)diff);
|
srs_lib_trace("re_cleanup sleep for the last pulse for %d ms", (int)diff);
|
||||||
usleep(diff * 1000);
|
usleep(diff * 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,14 +74,14 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("input: %s", in_rtmp_url);
|
srs_lib_trace("input: %s", in_rtmp_url);
|
||||||
srs_trace("output: %s", out_rtmp_url);
|
srs_lib_trace("output: %s", out_rtmp_url);
|
||||||
|
|
||||||
irtmp = srs_rtmp_create(in_rtmp_url);
|
irtmp = srs_rtmp_create(in_rtmp_url);
|
||||||
ortmp = srs_rtmp_create(out_rtmp_url);
|
ortmp = srs_rtmp_create(out_rtmp_url);
|
||||||
|
|
||||||
ret = proxy(irtmp, ortmp);
|
ret = proxy(irtmp, ortmp);
|
||||||
srs_trace("proxy completed");
|
srs_lib_trace("proxy completed");
|
||||||
|
|
||||||
srs_rtmp_destroy(irtmp);
|
srs_rtmp_destroy(irtmp);
|
||||||
srs_rtmp_destroy(ortmp);
|
srs_rtmp_destroy(ortmp);
|
||||||
|
@ -105,20 +105,20 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("start proxy RTMP stream");
|
srs_lib_trace("start proxy RTMP stream");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((ret = srs_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) {
|
if ((ret = srs_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) {
|
||||||
srs_trace("irtmp get packet failed. ret=%d", ret);
|
srs_lib_trace("irtmp get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_verbose("irtmp got packet: type=%s, time=%d, size=%d",
|
srs_lib_verbose("irtmp got packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), timestamp, size);
|
srs_type2string(type), timestamp, size);
|
||||||
|
|
||||||
if ((ret = srs_write_packet(ortmp, type, timestamp, data, size)) != 0) {
|
if ((ret = srs_write_packet(ortmp, type, timestamp, data, size)) != 0) {
|
||||||
srs_trace("irtmp get packet failed. ret=%d", ret);
|
srs_lib_trace("irtmp get packet failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_verbose("ortmp sent packet: type=%s, time=%d, size=%d",
|
srs_lib_verbose("ortmp sent packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), timestamp, size);
|
srs_type2string(type), timestamp, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,22 +130,22 @@ int connect_ic(srs_rtmp_t irtmp)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if ((ret = srs_simple_handshake(irtmp)) != 0) {
|
if ((ret = srs_simple_handshake(irtmp)) != 0) {
|
||||||
srs_trace("irtmp simple handshake failed. ret=%d", ret);
|
srs_lib_trace("irtmp simple handshake failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("irtmp simple handshake success");
|
srs_lib_trace("irtmp simple handshake success");
|
||||||
|
|
||||||
if ((ret = srs_connect_app(irtmp)) != 0) {
|
if ((ret = srs_connect_app(irtmp)) != 0) {
|
||||||
srs_trace("irtmp connect vhost/app failed. ret=%d", ret);
|
srs_lib_trace("irtmp connect vhost/app failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("irtmp connect vhost/app success");
|
srs_lib_trace("irtmp connect vhost/app success");
|
||||||
|
|
||||||
if ((ret = srs_play_stream(irtmp)) != 0) {
|
if ((ret = srs_play_stream(irtmp)) != 0) {
|
||||||
srs_trace("irtmp play stream failed. ret=%d", ret);
|
srs_lib_trace("irtmp play stream failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("irtmp play stream success");
|
srs_lib_trace("irtmp play stream success");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -155,22 +155,22 @@ int connect_oc(srs_rtmp_t ortmp)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if ((ret = srs_simple_handshake(ortmp)) != 0) {
|
if ((ret = srs_simple_handshake(ortmp)) != 0) {
|
||||||
srs_trace("ortmp simple handshake failed. ret=%d", ret);
|
srs_lib_trace("ortmp simple handshake failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp simple handshake success");
|
srs_lib_trace("ortmp simple handshake success");
|
||||||
|
|
||||||
if ((ret = srs_connect_app(ortmp)) != 0) {
|
if ((ret = srs_connect_app(ortmp)) != 0) {
|
||||||
srs_trace("ortmp connect vhost/app failed. ret=%d", ret);
|
srs_lib_trace("ortmp connect vhost/app failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp connect vhost/app success");
|
srs_lib_trace("ortmp connect vhost/app success");
|
||||||
|
|
||||||
if ((ret = srs_publish_stream(ortmp)) != 0) {
|
if ((ret = srs_publish_stream(ortmp)) != 0) {
|
||||||
srs_trace("ortmp publish stream failed. ret=%d", ret);
|
srs_lib_trace("ortmp publish stream failed. ret=%d", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
srs_trace("ortmp publish stream success");
|
srs_lib_trace("ortmp publish stream success");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,26 +44,26 @@ int main(int argc, char** argv)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
srs_trace("rtmp url: %s", argv[1]);
|
srs_lib_trace("rtmp url: %s", argv[1]);
|
||||||
srs_rtmp_t rtmp = srs_rtmp_create(argv[1]);
|
srs_rtmp_t rtmp = srs_rtmp_create(argv[1]);
|
||||||
|
|
||||||
if (srs_simple_handshake(rtmp) != 0) {
|
if (srs_simple_handshake(rtmp) != 0) {
|
||||||
srs_trace("simple handshake failed.");
|
srs_lib_trace("simple handshake failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("simple handshake success");
|
srs_lib_trace("simple handshake success");
|
||||||
|
|
||||||
if (srs_connect_app(rtmp) != 0) {
|
if (srs_connect_app(rtmp) != 0) {
|
||||||
srs_trace("connect vhost/app failed.");
|
srs_lib_trace("connect vhost/app failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("connect vhost/app success");
|
srs_lib_trace("connect vhost/app success");
|
||||||
|
|
||||||
if (srs_play_stream(rtmp) != 0) {
|
if (srs_play_stream(rtmp) != 0) {
|
||||||
srs_trace("play stream failed.");
|
srs_lib_trace("play stream failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("play stream success");
|
srs_lib_trace("play stream success");
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int type, size;
|
int type, size;
|
||||||
|
@ -73,7 +73,7 @@ int main(int argc, char** argv)
|
||||||
if (srs_read_packet(rtmp, &type, ×tamp, &data, &size) != 0) {
|
if (srs_read_packet(rtmp, &type, ×tamp, &data, &size) != 0) {
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("got packet: type=%s, time=%d, size=%d",
|
srs_lib_trace("got packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), timestamp, size);
|
srs_type2string(type), timestamp, size);
|
||||||
|
|
||||||
free(data);
|
free(data);
|
||||||
|
|
|
@ -47,31 +47,31 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
// warn it .
|
// warn it .
|
||||||
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/126
|
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/126
|
||||||
srs_trace("\033[33m%s\033[0m",
|
srs_lib_trace("\033[33m%s\033[0m",
|
||||||
"[warning] it's only a sample to use librtmp. "
|
"[warning] it's only a sample to use librtmp. "
|
||||||
"please never use it to publish and test forward/transcode/edge/HLS whatever. "
|
"please never use it to publish and test forward/transcode/edge/HLS whatever. "
|
||||||
"you should refer to this tool to use the srs-librtmp to publish the real media stream."
|
"you should refer to this tool to use the srs-librtmp to publish the real media stream."
|
||||||
"read about: https://github.com/winlinvip/simple-rtmp-server/issues/126");
|
"read about: https://github.com/winlinvip/simple-rtmp-server/issues/126");
|
||||||
srs_trace("rtmp url: %s", argv[1]);
|
srs_lib_trace("rtmp url: %s", argv[1]);
|
||||||
srs_rtmp_t rtmp = srs_rtmp_create(argv[1]);
|
srs_rtmp_t rtmp = srs_rtmp_create(argv[1]);
|
||||||
|
|
||||||
if (srs_simple_handshake(rtmp) != 0) {
|
if (srs_simple_handshake(rtmp) != 0) {
|
||||||
srs_trace("simple handshake failed.");
|
srs_lib_trace("simple handshake failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("simple handshake success");
|
srs_lib_trace("simple handshake success");
|
||||||
|
|
||||||
if (srs_connect_app(rtmp) != 0) {
|
if (srs_connect_app(rtmp) != 0) {
|
||||||
srs_trace("connect vhost/app failed.");
|
srs_lib_trace("connect vhost/app failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("connect vhost/app success");
|
srs_lib_trace("connect vhost/app success");
|
||||||
|
|
||||||
if (srs_publish_stream(rtmp) != 0) {
|
if (srs_publish_stream(rtmp) != 0) {
|
||||||
srs_trace("publish stream failed.");
|
srs_lib_trace("publish stream failed.");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("publish stream success");
|
srs_lib_trace("publish stream success");
|
||||||
|
|
||||||
u_int32_t timestamp = 0;
|
u_int32_t timestamp = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
@ -84,7 +84,7 @@ int main(int argc, char** argv)
|
||||||
if (srs_write_packet(rtmp, type, timestamp, data, size) != 0) {
|
if (srs_write_packet(rtmp, type, timestamp, data, size) != 0) {
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
srs_trace("sent packet: type=%s, time=%d, size=%d",
|
srs_lib_trace("sent packet: type=%s, time=%d, size=%d",
|
||||||
srs_type2string(type), timestamp, size);
|
srs_type2string(type), timestamp, size);
|
||||||
|
|
||||||
usleep(40 * 1000);
|
usleep(40 * 1000);
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// current release version
|
// current release version
|
||||||
#define VERSION_MAJOR 2
|
#define VERSION_MAJOR 2
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 11
|
#define VERSION_REVISION 12
|
||||||
// server info.
|
// server info.
|
||||||
#define RTMP_SIG_SRS_KEY "SRS"
|
#define RTMP_SIG_SRS_KEY "SRS"
|
||||||
#define RTMP_SIG_SRS_ROLE "origin/edge server"
|
#define RTMP_SIG_SRS_ROLE "origin/edge server"
|
||||||
|
|
|
@ -237,8 +237,8 @@ extern int64_t srs_get_nrecv_bytes(srs_rtmp_t rtmp);
|
||||||
|
|
||||||
// log to console, for use srs-librtmp application.
|
// log to console, for use srs-librtmp application.
|
||||||
extern const char* srs_format_time();
|
extern const char* srs_format_time();
|
||||||
#define srs_trace(msg, ...) printf("[%s] ", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n")
|
#define srs_lib_trace(msg, ...) printf("[%s] ", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n")
|
||||||
#define srs_verbose(msg, ...) printf("[%s] ", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n")
|
#define srs_lib_verbose(msg, ...) printf("[%s] ", srs_format_time());printf(msg, ##__VA_ARGS__);printf("\n")
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
**************************************************************
|
**************************************************************
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue