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

📄 wmp4client.cpp

📁 网络MPEG4IP流媒体开发源代码
💻 CPP
字号:
#include "systems.h"#include "wmp4client.h"#include "client_process.h"#include <rtsp/rtsp_client.h>#include "player_session.h"#include "player_media.h"#include "player_util.h"#include "our_msg_queue.h"#include "ip_port.h"#include "media_utils.h"#include "playlist.h"#include "our_config_file.h"#include <rtp/debug.h>#include <libhttp/http.h>#include "codec_plugin_private.h"static int session_paused;static int screen_size = 2;static int fullscreen = 0;static int volume;CPlayerSession *psptr;void set_configs (void){	config.read_config_file("Software\\Mpeg4ip", "Config");	rtsp_set_loglevel(config.get_config_value(CONFIG_RTSP_DEBUG));	rtp_set_loglevel(config.get_config_value(CONFIG_RTP_DEBUG));	sdp_set_loglevel(config.get_config_value(CONFIG_SDP_DEBUG));	http_set_loglevel(config.get_config_value(CONFIG_HTTP_DEBUG));	volume = config.get_config_value(CONFIG_VOLUME);	if (config.get_config_value(CONFIG_MUTED) != 0)		volume = 0;	if (psptr != NULL) {		psptr->set_audio_volume(volume);	}}	int main (int argc, char **argv){	CClientProcess proc;	SDL_sem *master_sem;	CMsgQueue master_queue;	char errmsg[512];	config.read_config_file("Software\\Mpeg4ip", "Config");	open_output("wmp4player.log");	if (proc.enable_communication() < 0) {		printf("Could not enable communications\n");		Sleep(10 * 1000);		close_output();		return -1;	}	initialize_plugins();	argv++;	argc--;	psptr = NULL;	master_sem = NULL;	if (*argv == NULL) {		proc.initial_response(-1, psptr,"No argument to process");	} else {		rtsp_set_error_func(player_library_message);		rtp_set_error_msg_func(player_library_message);		sdp_set_error_func(player_library_message);		http_set_error_func(player_library_message);			master_sem = SDL_CreateSemaphore(0);		psptr = new CPlayerSession(&master_queue, master_sem,								   *argv);		int ret = -1;		errmsg[0] = '\0';		if (psptr != NULL) {			ret = parse_name_for_session(psptr, *argv, errmsg, sizeof(errmsg), NULL);			if (ret < 0) {				//player_debug_message("%s %s", errmsg, name);				delete psptr;				psptr = NULL;			} else {								if (ret > 0) {					player_debug_message(errmsg);				}								psptr->set_up_sync_thread();				psptr->set_screen_location(100, 100);								psptr->set_screen_size(screen_size);				psptr->set_audio_volume(config.get_config_value(CONFIG_VOLUME));				if (psptr->play_all_media(TRUE) != 0) {					snprintf(errmsg, sizeof(*errmsg), "Couldn't start playing");					delete psptr;					psptr = NULL;				}			}		}		proc.initial_response(ret, psptr, errmsg);	}	// Either way - we need to loop and wait until we get the	// terminate message	int running = 0;	int state = 0;	while (running == 0) {		CMsg *msg;		running = proc.receive_messages(psptr);		while ((msg = master_queue.get_message()) != NULL) {			switch (msg->get_value()) {			case MSG_SESSION_FINISHED:				proc.send_message(GUI_MSG_SESSION_FINISHED);				break;			case MSG_RECEIVED_QUIT:				proc.send_message(GUI_MSG_RECEIVED_QUIT);				break;			case MSG_SDL_KEY_EVENT:				uint32_t len;				void *sdl_event = (void *)msg->get_message(len);				proc.send_message(GUI_MSG_SDL_KEY,								  sdl_event,								  len);				break;			}			delete msg;		}		if (psptr != NULL) state = psptr->sync_thread(state);	}	if (psptr != NULL) {		delete psptr;	}	if (master_sem != NULL) {		SDL_DestroySemaphore(master_sem);	}	  // remove invalid global ports		close_plugins();	config.write_config_file("Software\\Mpeg4ip", "Config");	close_output();	return 0;}

⌨️ 快捷键说明

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