⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iptv_prog.cpp

📁 网络MPEG4IP流媒体开发源代码
💻 CPP
字号:
#include "systems.h"#include "mpeg4ip_getopt.h"#include "http.h"#include "sdp.h"#include <time.h>static int display_sdp (session_desc_t *sdp){  size_t len;  printf("Sid %llu name %s\n", sdp->session_id, sdp->session_name);  if (sdp->control_string == NULL) {    // broadcast - try time    if (sdp->time_desc != NULL) {      if (sdp->time_desc->start_time == 0 &&	  sdp->time_desc->start_time == 0) {	printf("Continuous program\n");      } else {	const char *status;	char start_time[40], end_time[40];	if (time(NULL) >= sdp->time_desc->start_time) {	  if (time(NULL) <= sdp->time_desc->end_time) {	    status = " - ACTIVE";	  } else {	    status = " - COMPLETED";	  }	} else {	  status = "";	}	ctime_r(&sdp->time_desc->start_time, start_time);	len = strlen(start_time);	len -= 1; // get last offset	while (isspace(start_time[len])) {	  start_time[len] = '\0';	  len--;	}	ctime_r(&sdp->time_desc->end_time, end_time);	len = strlen(end_time);	len -= 1; // get last offset	while (isspace(end_time[len])) {	  end_time[len] = '\0';	  len--;	}	printf("Starts %s - ends %s %s\n",	       start_time, end_time, status);      }    }  }  printf("----------------------------------------------------------------------\n");  return 0;}static int get_program_list (const char *content_manager,			     bool save_sid,			     uint64_t sid){  http_client_t *http_client;  http_resp_t *http_resp;  int ret;  sdp_decode_info_t *sdp_info;  session_desc_t *sdp, *ptr;  int translated;  int retvalue;  int ix;  http_resp = NULL;  http_client = http_init_connection(content_manager);  if (http_client == NULL) {    fprintf(stderr, "Cannot create http client with %s\n", 	    content_manager);    return -1;  }  retvalue = -1;  ret = http_get(http_client, NULL, &http_resp);    if (ret > 0) {    sdp_info = set_sdp_decode_from_memory(http_resp->body);    if ((sdp_decode(sdp_info, &sdp, &translated) == 0) &&	(translated > 0)) {      retvalue = 0;      for (ix = 0; ix < translated; ix++) {	if (save_sid) {	  if (sid == sdp->session_id) {	    char buffer[80];	    sprintf(buffer, "%llu.sdp", sid);	    sdp_encode_one_to_file(sdp, buffer, 0);	    retvalue = 1;	  }	} else {	  display_sdp(sdp);	}	ptr = sdp->next;	sdp->next = NULL;	sdp_free_session_desc(sdp);	sdp = ptr;      }    } else {      fprintf(stderr, "No programs\n");    }  }  http_resp_free(http_resp);  http_free_connection(http_client);  return retvalue;}int main (int argc, char **argv){  char* ProgName = argv[0];  bool save_sid;  uint64_t sid;  save_sid = false;  sid = 0;  while (true) {    int c = -1;    int option_index = 0;    static struct option long_options[] = {      { "version", 0, 0, 'V' },      { "debug", 0, 0, 'd' },      { "save", 1, 0, 's' },      { NULL, 0, 0, 0 }    };        c = getopt_long_only(argc, argv, "Vds:",			 long_options, &option_index);        if (c == -1)      break;        switch (c) {    case '?':      fprintf(stderr, "%s - usage [-v] [-d] [-s sid] <content manager>\n", ProgName);      fprintf(stderr, " -d - debug\n");      fprintf(stderr, " -v - version\n");      fprintf(stderr, " -s sid - save sdp for session id <sid>\n");      exit(0);    case 'd':      sdp_set_loglevel(LOG_DEBUG);      http_set_loglevel(LOG_DEBUG);      break;    case 'V':      fprintf(stderr, "%s - %s version %s\n", ProgName, 	      PACKAGE, VERSION);      exit(0);    case 's':      sid = strtoull(optarg, NULL, 10);      save_sid = true;      break;    }  }    while (optind < argc) {    char *cm = argv[optind++];    char buffer[1024];    if (!save_sid)      printf("Content manager %s Scheduled Programs\n", cm);    snprintf(buffer, sizeof(buffer), "http://%s/iptvfiles/guide.sdf", 	     cm);    if (get_program_list(buffer, save_sid, sid) > 0) {      printf("Program %llu found in Scheduled programs\n", sid);      return 0;    }    if (!save_sid)      printf("Content manager %s On-Demand Programs\n", cm);    snprintf(buffer, sizeof(buffer), "http://%s/servlet/OdPublish", cm);    if (get_program_list(buffer, save_sid, sid) > 0) {      printf("Program %llu found in On-demand programs\n", sid);      return 0;    }  }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -