正在显示
3 个修改的文件
包含
103 行增加
和
28 行删除
| @@ -34,6 +34,11 @@ int connect_ic(srs_rtmp_t irtmp); | @@ -34,6 +34,11 @@ int connect_ic(srs_rtmp_t irtmp); | ||
| 34 | int connect_oc(srs_rtmp_t ortmp); | 34 | int connect_oc(srs_rtmp_t ortmp); |
| 35 | int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp); | 35 | int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp); |
| 36 | 36 | ||
| 37 | +// whether use verbose log. | ||
| 38 | +int verbose = 0; | ||
| 39 | +// 2000 is about 30s. | ||
| 40 | +#define PITHY_PRINT_EVERY_MSGS 2000 | ||
| 41 | + | ||
| 37 | int main(int argc, char** argv) | 42 | int main(int argc, char** argv) |
| 38 | { | 43 | { |
| 39 | int ret = 0; | 44 | int ret = 0; |
| @@ -46,18 +51,19 @@ int main(int argc, char** argv) | @@ -46,18 +51,19 @@ int main(int argc, char** argv) | ||
| 46 | // rtmp handler | 51 | // rtmp handler |
| 47 | srs_rtmp_t irtmp, ortmp; | 52 | srs_rtmp_t irtmp, ortmp; |
| 48 | 53 | ||
| 49 | - printf("ingest RTMP and publish to RTMP server like edge.\n"); | ||
| 50 | - printf("srs(ossrs) client librtmp library.\n"); | ||
| 51 | - printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision()); | 54 | + printf("Ingest RTMP to server like FFMPEG over srs-librtmp %d.%d.%d\n", |
| 55 | + srs_version_major(), srs_version_minor(), srs_version_revision()); | ||
| 52 | 56 | ||
| 53 | if (argc <= 2) { | 57 | if (argc <= 2) { |
| 54 | printf("ingest RTMP and publish to RTMP server\n" | 58 | printf("ingest RTMP and publish to RTMP server\n" |
| 55 | - "Usage: %s <-i in_rtmp_url> <-y out_rtmp_url>\n" | 59 | + "Usage: %s <-i in_rtmp_url> <-y out_rtmp_url> [-v verbose]\n" |
| 56 | " in_rtmp_url input rtmp url, ingest from this url.\n" | 60 | " in_rtmp_url input rtmp url, ingest from this url.\n" |
| 57 | " out_rtmp_url output rtmp url, publish to this url.\n" | 61 | " out_rtmp_url output rtmp url, publish to this url.\n" |
| 58 | - "For example:\n" | ||
| 59 | - " %s -i rtmp://127.0.0.1/live/livestream -y rtmp://127.0.0.1/live/demo\n", | ||
| 60 | - argv[0], argv[0]); | 62 | + " verbose output verbose log.\n" |
| 63 | + "For example:\n" | ||
| 64 | + " %s -i rtmp://127.0.0.1/live/livestream -y rtmp://127.0.0.1/live/demo\n" | ||
| 65 | + " %s -i rtmp://127.0.0.1/live/livestream -y rtmp://127.0.0.1/live/demo -v verbose\n", | ||
| 66 | + argv[0], argv[0], argv[0]); | ||
| 61 | exit(-1); | 67 | exit(-1); |
| 62 | } | 68 | } |
| 63 | 69 | ||
| @@ -73,8 +79,9 @@ int main(int argc, char** argv) | @@ -73,8 +79,9 @@ int main(int argc, char** argv) | ||
| 73 | 79 | ||
| 74 | // parse according the option name. | 80 | // parse according the option name. |
| 75 | switch (p[1]) { | 81 | switch (p[1]) { |
| 76 | - case 'i': in_rtmp_url = argv[opt + 1]; break; | ||
| 77 | - case 'y': out_rtmp_url = argv[opt + 1]; break; | 82 | + case 'i': in_rtmp_url = argv[++opt]; break; |
| 83 | + case 'y': out_rtmp_url = argv[++opt]; break; | ||
| 84 | + case 'v': verbose=1; opt++; break; | ||
| 78 | default: break; | 85 | default: break; |
| 79 | } | 86 | } |
| 80 | } | 87 | } |
| @@ -88,8 +95,7 @@ int main(int argc, char** argv) | @@ -88,8 +95,7 @@ int main(int argc, char** argv) | ||
| 88 | return -1; | 95 | return -1; |
| 89 | } | 96 | } |
| 90 | 97 | ||
| 91 | - srs_human_trace("input: %s", in_rtmp_url); | ||
| 92 | - srs_human_trace("output: %s", out_rtmp_url); | 98 | + srs_human_trace("ingest %s to %s, verbose=%d", in_rtmp_url, out_rtmp_url, verbose); |
| 93 | 99 | ||
| 94 | irtmp = srs_rtmp_create(in_rtmp_url); | 100 | irtmp = srs_rtmp_create(in_rtmp_url); |
| 95 | ortmp = srs_rtmp_create(out_rtmp_url); | 101 | ortmp = srs_rtmp_create(out_rtmp_url); |
| @@ -112,6 +118,7 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | @@ -112,6 +118,7 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | ||
| 112 | char type; | 118 | char type; |
| 113 | char* data; | 119 | char* data; |
| 114 | u_int32_t timestamp; | 120 | u_int32_t timestamp; |
| 121 | + u_int64_t nb_msgs = 0; | ||
| 115 | 122 | ||
| 116 | if ((ret = connect_ic(irtmp)) != 0) { | 123 | if ((ret = connect_ic(irtmp)) != 0) { |
| 117 | return ret; | 124 | return ret; |
| @@ -120,7 +127,11 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | @@ -120,7 +127,11 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | ||
| 120 | return ret; | 127 | return ret; |
| 121 | } | 128 | } |
| 122 | 129 | ||
| 123 | - srs_human_trace("start proxy RTMP stream"); | 130 | + if (verbose) { |
| 131 | + srs_human_trace("start proxy RTMP stream"); | ||
| 132 | + } else { | ||
| 133 | + srs_human_verbose("start proxy RTMP stream"); | ||
| 134 | + } | ||
| 124 | for (;;) { | 135 | for (;;) { |
| 125 | if ((ret = srs_rtmp_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) { | 136 | if ((ret = srs_rtmp_read_packet(irtmp, &type, ×tamp, &data, &size)) != 0) { |
| 126 | srs_human_trace("irtmp get packet failed. ret=%d", ret); | 137 | srs_human_trace("irtmp get packet failed. ret=%d", ret); |
| @@ -128,22 +139,34 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | @@ -128,22 +139,34 @@ int proxy(srs_rtmp_t irtmp, srs_rtmp_t ortmp) | ||
| 128 | } | 139 | } |
| 129 | 140 | ||
| 130 | if (!srs_utils_flv_tag_is_ok(type)) { | 141 | if (!srs_utils_flv_tag_is_ok(type)) { |
| 131 | - srs_human_trace("ignore invalid flv tag=%d, dts=%d, %d bytes", type, timestamp, size); | 142 | + if (verbose) { |
| 143 | + srs_human_trace("ignore invalid flv tag=%d, dts=%d, %d bytes", type, timestamp, size); | ||
| 144 | + } else { | ||
| 145 | + srs_human_verbose("ignore invalid flv tag=%d, dts=%d, %d bytes", type, timestamp, size); | ||
| 146 | + } | ||
| 132 | free(data); | 147 | free(data); |
| 133 | continue; | 148 | continue; |
| 134 | } | 149 | } |
| 135 | 150 | ||
| 136 | - if ((ret = srs_human_print_rtmp_packet(type, timestamp, data, size)) != 0) { | ||
| 137 | - srs_human_trace("print packet failed. ret=%d", ret); | ||
| 138 | - return ret; | 151 | + if (verbose || ((nb_msgs++ % PITHY_PRINT_EVERY_MSGS) == 0 && nb_msgs > 10)) { |
| 152 | + if ((ret = srs_human_print_rtmp_packet(type, timestamp, data, size)) != 0) { | ||
| 153 | + srs_human_trace("print packet failed. ret=%d", ret); | ||
| 154 | + return ret; | ||
| 155 | + } | ||
| 139 | } | 156 | } |
| 140 | 157 | ||
| 141 | if ((ret = srs_rtmp_write_packet(ortmp, type, timestamp, data, size)) != 0) { | 158 | if ((ret = srs_rtmp_write_packet(ortmp, type, timestamp, data, size)) != 0) { |
| 142 | srs_human_trace("irtmp get packet failed. ret=%d", ret); | 159 | srs_human_trace("irtmp get packet failed. ret=%d", ret); |
| 143 | return ret; | 160 | return ret; |
| 144 | } | 161 | } |
| 145 | - srs_human_verbose("ortmp sent packet: type=%s, time=%d, size=%d", | ||
| 146 | - srs_human_flv_tag_type2string(type), timestamp, size); | 162 | + |
| 163 | + if (verbose) { | ||
| 164 | + srs_human_trace("ortmp sent packet: type=%s, time=%d, size=%d", | ||
| 165 | + srs_human_flv_tag_type2string(type), timestamp, size); | ||
| 166 | + } else { | ||
| 167 | + srs_human_verbose("ortmp sent packet: type=%s, time=%d, size=%d", | ||
| 168 | + srs_human_flv_tag_type2string(type), timestamp, size); | ||
| 169 | + } | ||
| 147 | } | 170 | } |
| 148 | 171 | ||
| 149 | return ret; | 172 | return ret; |
| @@ -153,23 +176,49 @@ int connect_ic(srs_rtmp_t irtmp) | @@ -153,23 +176,49 @@ int connect_ic(srs_rtmp_t irtmp) | ||
| 153 | { | 176 | { |
| 154 | int ret = 0; | 177 | int ret = 0; |
| 155 | 178 | ||
| 179 | + // srs debug info. | ||
| 180 | + char srs_server_ip[128]; | ||
| 181 | + char srs_server[128]; | ||
| 182 | + char srs_primary[128]; | ||
| 183 | + char srs_authors[128]; | ||
| 184 | + char srs_version[32]; | ||
| 185 | + int srs_id = 0; | ||
| 186 | + int srs_pid = 0; | ||
| 187 | + | ||
| 188 | + // set to zero. | ||
| 189 | + srs_server_ip[0] = 0; | ||
| 190 | + srs_server[0] = 0; | ||
| 191 | + srs_primary[0] = 0; | ||
| 192 | + srs_authors[0] = 0; | ||
| 193 | + srs_version[0] = 0; | ||
| 194 | + | ||
| 156 | if ((ret = srs_rtmp_handshake(irtmp)) != 0) { | 195 | if ((ret = srs_rtmp_handshake(irtmp)) != 0) { |
| 157 | srs_human_trace("irtmp simple handshake failed. ret=%d", ret); | 196 | srs_human_trace("irtmp simple handshake failed. ret=%d", ret); |
| 158 | return ret; | 197 | return ret; |
| 159 | } | 198 | } |
| 160 | - srs_human_trace("irtmp simple handshake success"); | 199 | + if (verbose) { |
| 200 | + srs_human_trace("irtmp simple handshake success"); | ||
| 201 | + } else { | ||
| 202 | + srs_human_verbose("irtmp simple handshake success"); | ||
| 203 | + } | ||
| 161 | 204 | ||
| 162 | - if ((ret = srs_rtmp_connect_app(irtmp)) != 0) { | 205 | + if (srs_rtmp_connect_app2(irtmp, |
| 206 | + srs_server_ip, srs_server, srs_primary, srs_authors, srs_version, | ||
| 207 | + &srs_id, &srs_pid) != 0) { | ||
| 163 | srs_human_trace("irtmp connect vhost/app failed. ret=%d", ret); | 208 | srs_human_trace("irtmp connect vhost/app failed. ret=%d", ret); |
| 164 | return ret; | 209 | return ret; |
| 165 | } | 210 | } |
| 166 | - srs_human_trace("irtmp connect vhost/app success"); | 211 | + srs_human_trace("irtmp connect ok, ip=%s, server=%s/%s, pid=%d, cid=%d", srs_server_ip, srs_server, srs_version, srs_pid, srs_id); |
| 167 | 212 | ||
| 168 | if ((ret = srs_rtmp_play_stream(irtmp)) != 0) { | 213 | if ((ret = srs_rtmp_play_stream(irtmp)) != 0) { |
| 169 | srs_human_trace("irtmp play stream failed. ret=%d", ret); | 214 | srs_human_trace("irtmp play stream failed. ret=%d", ret); |
| 170 | return ret; | 215 | return ret; |
| 171 | } | 216 | } |
| 172 | - srs_human_trace("irtmp play stream success"); | 217 | + if (verbose) { |
| 218 | + srs_human_trace("irtmp play stream success"); | ||
| 219 | + } else { | ||
| 220 | + srs_human_verbose("irtmp play stream success"); | ||
| 221 | + } | ||
| 173 | 222 | ||
| 174 | return ret; | 223 | return ret; |
| 175 | } | 224 | } |
| @@ -178,23 +227,49 @@ int connect_oc(srs_rtmp_t ortmp) | @@ -178,23 +227,49 @@ int connect_oc(srs_rtmp_t ortmp) | ||
| 178 | { | 227 | { |
| 179 | int ret = 0; | 228 | int ret = 0; |
| 180 | 229 | ||
| 230 | + // srs debug info. | ||
| 231 | + char srs_server_ip[128]; | ||
| 232 | + char srs_server[128]; | ||
| 233 | + char srs_primary[128]; | ||
| 234 | + char srs_authors[128]; | ||
| 235 | + char srs_version[32]; | ||
| 236 | + int srs_id = 0; | ||
| 237 | + int srs_pid = 0; | ||
| 238 | + | ||
| 239 | + // set to zero. | ||
| 240 | + srs_server_ip[0] = 0; | ||
| 241 | + srs_server[0] = 0; | ||
| 242 | + srs_primary[0] = 0; | ||
| 243 | + srs_authors[0] = 0; | ||
| 244 | + srs_version[0] = 0; | ||
| 245 | + | ||
| 181 | if ((ret = srs_rtmp_handshake(ortmp)) != 0) { | 246 | if ((ret = srs_rtmp_handshake(ortmp)) != 0) { |
| 182 | srs_human_trace("ortmp simple handshake failed. ret=%d", ret); | 247 | srs_human_trace("ortmp simple handshake failed. ret=%d", ret); |
| 183 | return ret; | 248 | return ret; |
| 184 | } | 249 | } |
| 185 | - srs_human_trace("ortmp simple handshake success"); | 250 | + if (verbose) { |
| 251 | + srs_human_trace("ortmp simple handshake success"); | ||
| 252 | + } else { | ||
| 253 | + srs_human_verbose("ortmp simple handshake success"); | ||
| 254 | + } | ||
| 186 | 255 | ||
| 187 | - if ((ret = srs_rtmp_connect_app(ortmp)) != 0) { | 256 | + if (srs_rtmp_connect_app2(ortmp, |
| 257 | + srs_server_ip, srs_server, srs_primary, srs_authors, srs_version, | ||
| 258 | + &srs_id, &srs_pid) != 0) { | ||
| 188 | srs_human_trace("ortmp connect vhost/app failed. ret=%d", ret); | 259 | srs_human_trace("ortmp connect vhost/app failed. ret=%d", ret); |
| 189 | return ret; | 260 | return ret; |
| 190 | } | 261 | } |
| 191 | - srs_human_trace("ortmp connect vhost/app success"); | 262 | + srs_human_trace("ortmp connect ok, ip=%s, server=%s/%s, pid=%d, cid=%d", srs_server_ip, srs_server, srs_version, srs_pid, srs_id); |
| 192 | 263 | ||
| 193 | if ((ret = srs_rtmp_publish_stream(ortmp)) != 0) { | 264 | if ((ret = srs_rtmp_publish_stream(ortmp)) != 0) { |
| 194 | srs_human_trace("ortmp publish stream failed. ret=%d", ret); | 265 | srs_human_trace("ortmp publish stream failed. ret=%d", ret); |
| 195 | return ret; | 266 | return ret; |
| 196 | } | 267 | } |
| 197 | - srs_human_trace("ortmp publish stream success"); | 268 | + if (verbose) { |
| 269 | + srs_human_trace("ortmp publish stream success"); | ||
| 270 | + } else { | ||
| 271 | + srs_human_verbose("ortmp publish stream success"); | ||
| 272 | + } | ||
| 198 | 273 | ||
| 199 | return ret; | 274 | return ret; |
| 200 | } | 275 | } |
| @@ -2410,7 +2410,7 @@ int srs_human_print_rtmp_packet4(char type, u_int32_t timestamp, char* data, int | @@ -2410,7 +2410,7 @@ int srs_human_print_rtmp_packet4(char type, u_int32_t timestamp, char* data, int | ||
| 2410 | srs_human_flv_audio_aac_packet_type2string(srs_utils_flv_audio_aac_packet_type(data, size)) | 2410 | srs_human_flv_audio_aac_packet_type2string(srs_utils_flv_audio_aac_packet_type(data, size)) |
| 2411 | ); | 2411 | ); |
| 2412 | } else if (type == SRS_RTMP_TYPE_SCRIPT) { | 2412 | } else if (type == SRS_RTMP_TYPE_SCRIPT) { |
| 2413 | - srs_human_verbose("Data packet id=%"PRId64"/%.1f/%.1f, type=%s, time=%d, ndiff=%d, diff=%d, size=%d", | 2413 | + srs_human_trace("Data packet id=%"PRId64"/%.1f/%.1f, type=%s, time=%d, ndiff=%d, diff=%d, size=%d", |
| 2414 | nb_packets, pi, gfps, srs_human_flv_tag_type2string(type), timestamp, ndiff, diff, size); | 2414 | nb_packets, pi, gfps, srs_human_flv_tag_type2string(type), timestamp, ndiff, diff, size); |
| 2415 | int nparsed = 0; | 2415 | int nparsed = 0; |
| 2416 | while (nparsed < size) { | 2416 | while (nparsed < size) { |
| @@ -956,7 +956,7 @@ extern const char* srs_human_format_time(); | @@ -956,7 +956,7 @@ extern const char* srs_human_format_time(); | ||
| 956 | #define srs_human_raw(msg, ...) (void)0 | 956 | #define srs_human_raw(msg, ...) (void)0 |
| 957 | #else | 957 | #else |
| 958 | #define srs_human_trace(msg, ...) printf("[%s][%d] ", srs_human_format_time(), getpid());printf(msg, ##__VA_ARGS__);printf("\n") | 958 | #define srs_human_trace(msg, ...) printf("[%s][%d] ", srs_human_format_time(), getpid());printf(msg, ##__VA_ARGS__);printf("\n") |
| 959 | - #define srs_human_verbose(msg, ...) printf("[%s][%d] ", srs_human_format_time(), getpid());printf(msg, ##__VA_ARGS__);printf("\n") | 959 | + #define srs_human_verbose(msg, ...) (void)0 |
| 960 | #define srs_human_raw(msg, ...) printf(msg, ##__VA_ARGS__) | 960 | #define srs_human_raw(msg, ...) printf(msg, ##__VA_ARGS__) |
| 961 | #endif | 961 | #endif |
| 962 | 962 |
-
请 注册 或 登录 后发表评论