Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- curl_global_init(CURL_GLOBAL_DEFAULT);
- multi_handle = curl_multi_init();
- rtsp_handle = curl_easy_init();
- curl_easy_setopt(rtsp_handle, CURLOPT_URL, argv[1]);
- curl_easy_setopt(rtsp_handle, CURLOPT_RTSP_STREAM_URI, argv[1]);
- curl_easy_setopt(rtsp_handle, CURLOPT_FOLLOWLOCATION, 1);
- curl_easy_setopt(rtsp_handle, CURLOPT_HEADER, 1);
- curl_easy_setopt(rtsp_handle, CURLOPT_INTERLEAVEFUNCTION, rtp_write_callback);
- curl_easy_setopt(rtsp_handle, CURLOPT_INTERLEAVEDATA, (void *)fd);
- curl_easy_setopt(rtsp_handle, CURLOPT_VERBOSE, 1);
- rtsp_options(rtsp_handle, argv[1]);
- rtsp_describe(rtsp_handle, sdp);
- sprintf(uri, "%s/%s", argv[1], "track0");
- rtsp_setup(rtsp_handle, uri, "RTP/AVP/TCP;interleaved=0-1");
- rtsp_play(rtsp_handle, argv[1], "0.000-");
- // easy_perform is removed from the rtsp_play, PLAY it is being called by the first multi
- curl_multi_add_handle(multi_handle, rtsp_handle);
- curl_multi_perform(multi_handle, &still_running);
- do
- {
- CURLMcode mc;
- int numfds;
- mc = curl_multi_wait(multi_handle, NULL, 0, 500, &numfds);
- printf("%s:%d-%s curl_multi_wait return is still running %d \n", __FILE__, __LINE__, __FUNCTION__, still_running);
- if(mc != CURLM_OK)
- {
- fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
- break;
- }
- curl_multi_perform(multi_handle, &still_running);
- if(!numfds)
- {
- printf("%s:%d-%s numfds %d repeats %d\n", __FILE__, __LINE__, __FUNCTION__, numfds, repeats);
- repeats++;
- if(repeats > 1)
- {
- WAITMS(100);
- }
- }
- else repeats = 0;
- curl_multi_perform(multi_handle, &still_running);
- int msgs_left;
- while((msg = curl_multi_info_read(multi_handle, &msgs_left)))
- {
- if(msg->msg == CURLMSG_DONE)
- {
- printf("%s:%d-%s curl_multi_info_read return is CURLMSG_DONE \n", __FILE__, __LINE__, __FUNCTION__);
- curl_multi_remove_handle(multi_handle, rtsp_handle);
- curl_easy_setopt(rtsp_handle, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_RECEIVE);
- curl_multi_add_handle(multi_handle, rtsp_handle);
- curl_multi_perform(multi_handle, &still_running);
- }
- }
- }
- while(still_running);
- //rtsp_receive_data(rtsp_handle, 1, rtp_write_callback);
- rtsp_teardown(rtsp_handle);
- curl_easy_cleanup(rtsp_handle);
- curl_multi_cleanup(multi_handle);
- curl_global_cleanup();
Add Comment
Please, Sign In to add comment