Guest User

ecxerpt

a guest
Sep 14th, 2016
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.51 KB | None | 0 0
  1.    curl_global_init(CURL_GLOBAL_DEFAULT);
  2.    multi_handle = curl_multi_init();
  3.    rtsp_handle = curl_easy_init();
  4.    curl_easy_setopt(rtsp_handle, CURLOPT_URL, argv[1]);
  5.    curl_easy_setopt(rtsp_handle, CURLOPT_RTSP_STREAM_URI, argv[1]);
  6.    curl_easy_setopt(rtsp_handle, CURLOPT_FOLLOWLOCATION, 1);
  7.    curl_easy_setopt(rtsp_handle, CURLOPT_HEADER, 1);
  8.    curl_easy_setopt(rtsp_handle, CURLOPT_INTERLEAVEFUNCTION, rtp_write_callback);
  9.    curl_easy_setopt(rtsp_handle, CURLOPT_INTERLEAVEDATA, (void *)fd);
  10.    curl_easy_setopt(rtsp_handle, CURLOPT_VERBOSE, 1);
  11.  
  12.    rtsp_options(rtsp_handle, argv[1]);
  13.    rtsp_describe(rtsp_handle, sdp);
  14.    sprintf(uri, "%s/%s", argv[1], "track0");
  15.    rtsp_setup(rtsp_handle, uri, "RTP/AVP/TCP;interleaved=0-1");
  16.    rtsp_play(rtsp_handle, argv[1], "0.000-");
  17.    // easy_perform is removed from the rtsp_play, PLAY it is being called by the first multi
  18.    curl_multi_add_handle(multi_handle, rtsp_handle);
  19.    curl_multi_perform(multi_handle, &still_running);
  20.  
  21.    do
  22.    {
  23.       CURLMcode mc;
  24.       int numfds;
  25.  
  26.       mc = curl_multi_wait(multi_handle, NULL, 0, 500, &numfds);
  27.       printf("%s:%d-%s  curl_multi_wait return is still running %d \n", __FILE__, __LINE__, __FUNCTION__, still_running);
  28.       if(mc != CURLM_OK)
  29.       {
  30.          fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
  31.          break;
  32.       }
  33.       curl_multi_perform(multi_handle, &still_running);
  34.       if(!numfds)
  35.       {
  36.          printf("%s:%d-%s  numfds %d  repeats %d\n", __FILE__, __LINE__, __FUNCTION__, numfds, repeats);
  37.          repeats++;
  38.          if(repeats > 1)
  39.          {
  40.             WAITMS(100);
  41.          }
  42.       }
  43.       else repeats = 0;
  44.  
  45.       curl_multi_perform(multi_handle, &still_running);
  46.       int msgs_left;
  47.  
  48.       while((msg = curl_multi_info_read(multi_handle, &msgs_left)))
  49.       {
  50.          if(msg->msg == CURLMSG_DONE)
  51.          {
  52.             printf("%s:%d-%s  curl_multi_info_read return is CURLMSG_DONE \n", __FILE__, __LINE__, __FUNCTION__);
  53.             curl_multi_remove_handle(multi_handle, rtsp_handle);
  54.             curl_easy_setopt(rtsp_handle, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_RECEIVE);
  55.             curl_multi_add_handle(multi_handle, rtsp_handle);
  56.             curl_multi_perform(multi_handle, &still_running);
  57.          }
  58.       }
  59.  
  60.    }
  61.    while(still_running);
  62.  
  63.  
  64. //rtsp_receive_data(rtsp_handle, 1, rtp_write_callback);
  65.  
  66.    rtsp_teardown(rtsp_handle);
  67.  
  68.    curl_easy_cleanup(rtsp_handle);
  69.    curl_multi_cleanup(multi_handle);
  70.    curl_global_cleanup();
Add Comment
Please, Sign In to add comment