mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
fix bug of detect rtmp, add error code
This commit is contained in:
parent
4d9ed6f7fe
commit
d48d739fa7
3 changed files with 19 additions and 13 deletions
|
@ -31,6 +31,7 @@ gcc srs_detect_rtmp.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_detect
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
srs_rtmp_t rtmp;
|
srs_rtmp_t rtmp;
|
||||||
|
|
||||||
// time
|
// time
|
||||||
|
@ -62,7 +63,7 @@ int main(int argc, char** argv)
|
||||||
"For example:\n"
|
"For example:\n"
|
||||||
" %s rtmp://127.0.0.1:1935/live/livestream 3 10\n",
|
" %s rtmp://127.0.0.1:1935/live/livestream 3 10\n",
|
||||||
argv[0]);
|
argv[0]);
|
||||||
int ret = 1;
|
ret = 1;
|
||||||
exit(ret);
|
exit(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -79,39 +80,40 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
if (duration <= 0 || timeout <= 0) {
|
if (duration <= 0 || timeout <= 0) {
|
||||||
printf("duration and timeout must be positive.\n");
|
printf("duration and timeout must be positive.\n");
|
||||||
exit(1);
|
ret = 1;
|
||||||
return 1;
|
exit(ret);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtmp = srs_rtmp_create(rtmp_url);
|
rtmp = srs_rtmp_create(rtmp_url);
|
||||||
|
|
||||||
if (__srs_dns_resolve(rtmp) != 0) {
|
if ((ret = __srs_dns_resolve(rtmp)) != 0) {
|
||||||
printf("dns resolve failed.\n");
|
printf("dns resolve failed.\n");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
printf("dns resolve success\n");
|
printf("dns resolve success\n");
|
||||||
time_dns_resolve = srs_get_time_ms();
|
time_dns_resolve = srs_get_time_ms();
|
||||||
|
|
||||||
if (__srs_connect_server(rtmp) != 0) {
|
if ((ret = __srs_connect_server(rtmp)) != 0) {
|
||||||
printf("socket connect failed.\n");
|
printf("socket connect failed.\n");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
printf("socket connect success\n");
|
printf("socket connect success\n");
|
||||||
time_socket_connect = srs_get_time_ms();
|
time_socket_connect = srs_get_time_ms();
|
||||||
|
|
||||||
if (__srs_do_simple_handshake(rtmp) != 0) {
|
if ((ret = __srs_do_simple_handshake(rtmp)) != 0) {
|
||||||
printf("do simple handshake failed.\n");
|
printf("do simple handshake failed.\n");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
printf("do simple handshake success\n");
|
printf("do simple handshake success\n");
|
||||||
|
|
||||||
if (srs_connect_app(rtmp) != 0) {
|
if ((ret = srs_connect_app(rtmp)) != 0) {
|
||||||
printf("connect vhost/app failed.\n");
|
printf("connect vhost/app failed.\n");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
printf("connect vhost/app success\n");
|
printf("connect vhost/app success\n");
|
||||||
|
|
||||||
if (srs_play_stream(rtmp) != 0) {
|
if ((ret = srs_play_stream(rtmp)) != 0) {
|
||||||
printf("play stream failed.\n");
|
printf("play stream failed.\n");
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
|
@ -119,7 +121,7 @@ int main(int argc, char** argv)
|
||||||
time_play_stream = srs_get_time_ms();
|
time_play_stream = srs_get_time_ms();
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (srs_read_packet(rtmp, &type, ×tamp, &data, &size) != 0) {
|
if ((ret = srs_read_packet(rtmp, &type, ×tamp, &data, &size)) != 0) {
|
||||||
goto rtmp_destroy;
|
goto rtmp_destroy;
|
||||||
}
|
}
|
||||||
printf("got packet: type=%s, time=%d, size=%d\n", srs_type2string(type), timestamp, size);
|
printf("got packet: type=%s, time=%d, size=%d\n", srs_type2string(type), timestamp, size);
|
||||||
|
@ -147,6 +149,7 @@ rtmp_destroy:
|
||||||
|
|
||||||
// print result to stderr.
|
// print result to stderr.
|
||||||
fprintf(stderr, "{"
|
fprintf(stderr, "{"
|
||||||
|
"\"%s\":%d, " //#0
|
||||||
"\"%s\":%d, " //#1
|
"\"%s\":%d, " //#1
|
||||||
"\"%s\":%d, " // #2
|
"\"%s\":%d, " // #2
|
||||||
"\"%s\":%d, " // #3
|
"\"%s\":%d, " // #3
|
||||||
|
@ -155,7 +158,8 @@ rtmp_destroy:
|
||||||
"\"%s\":%d, " // #6
|
"\"%s\":%d, " // #6
|
||||||
"\"%s\":%d, " // #7
|
"\"%s\":%d, " // #7
|
||||||
"\"%s\":%d, " // #8
|
"\"%s\":%d, " // #8
|
||||||
"%s%s%s}",
|
"%s%s%s%s}",
|
||||||
|
"code", ret, //#0
|
||||||
// total = dns + tcp_connect + start_play + first_packet + last_packet
|
// total = dns + tcp_connect + start_play + first_packet + last_packet
|
||||||
"total", (int)(time_cleanup - time_startup), //#1
|
"total", (int)(time_cleanup - time_startup), //#1
|
||||||
"dns", (int)(time_dns_resolve - time_startup), //#2
|
"dns", (int)(time_dns_resolve - time_startup), //#2
|
||||||
|
@ -171,7 +175,8 @@ rtmp_destroy:
|
||||||
// unit in ms.
|
// unit in ms.
|
||||||
"\"unit\": \"ms\",",
|
"\"unit\": \"ms\",",
|
||||||
"\"remark0\": \"total = dns + tcp_connect + start_play + first_packet + last_packet\",",
|
"\"remark0\": \"total = dns + tcp_connect + start_play + first_packet + last_packet\",",
|
||||||
"\"remark1\": \"delay = stream - (time_cleanup - time_first_packet)\""
|
"\"remark1\": \"delay = stream - (time_cleanup - time_first_packet)\"",
|
||||||
|
"\"remark2\": \"if code is not 0, user must ignore all data\""
|
||||||
);
|
);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
#define ERROR_SOCKET_WRITE 209
|
#define ERROR_SOCKET_WRITE 209
|
||||||
#define ERROR_SOCKET_WAIT 210
|
#define ERROR_SOCKET_WAIT 210
|
||||||
#define ERROR_SOCKET_TIMEOUT 211
|
#define ERROR_SOCKET_TIMEOUT 211
|
||||||
|
#define ERROR_SOCKET_CONNECT 212
|
||||||
//#define ERROR_SOCKET_GET_LOCAL_IP 212
|
//#define ERROR_SOCKET_GET_LOCAL_IP 212
|
||||||
|
|
||||||
#define ERROR_RTMP_PLAIN_REQUIRED 300
|
#define ERROR_RTMP_PLAIN_REQUIRED 300
|
||||||
|
|
|
@ -57,7 +57,7 @@ SimpleSocketStream::~SimpleSocketStream()
|
||||||
int SimpleSocketStream::create_socket()
|
int SimpleSocketStream::create_socket()
|
||||||
{
|
{
|
||||||
if((fd = ::socket(AF_INET, SOCK_STREAM, 0)) < 0){
|
if((fd = ::socket(AF_INET, SOCK_STREAM, 0)) < 0){
|
||||||
return -1;
|
return ERROR_SOCKET_CREATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
@ -71,7 +71,7 @@ int SimpleSocketStream::connect(const char* server_ip, int port)
|
||||||
addr.sin_addr.s_addr = inet_addr(server_ip);
|
addr.sin_addr.s_addr = inet_addr(server_ip);
|
||||||
|
|
||||||
if(::connect(fd, (const struct sockaddr*)&addr, sizeof(sockaddr_in)) < 0){
|
if(::connect(fd, (const struct sockaddr*)&addr, sizeof(sockaddr_in)) < 0){
|
||||||
return -1;
|
return ERROR_SOCKET_CONNECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue