#include "serviceWindowGenerationFromText.h" #define PATH_LIBRAS "libras/video/" #define OUTPUT_VIDEO_WEB "../gtaaas-plugin-server/videos/libras.webm" #define MAX_SIZE_PATH 256 ServiceWindowGenerationFromText::ServiceWindowGenerationFromText (char* _path_file, char* _video_path_file, int _transp, int _serviceType, char* _client_type) { path_file = _path_file; client_type = _client_type; setTransparency(_transp); setServiceType(_serviceType); char* final_path = new char[MAX_SIZE_PATH]; strcpy(final_path, PATH_LIBRAS); strcat(final_path, _video_path_file); strcat(final_path, ".ts"); setPathLibras(final_path); alive = true; DPRINTF("Done!\n"); } ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { DDDPRINTF("Service Text finished!\n"); } int ServiceWindowGenerationFromText::readTextFile() { string line; string all_text = ""; std::ifstream file (path_file, std::ifstream::binary); int bytes = 0; if (file.is_open()) { while (file.good()) { getline (file,line); all_text.append(line); } file.close(); } bytes = all_text.length(); if (bytes > 1) { // 1 = " " char* tbuffer = new char[bytes+1]; std::strcpy (tbuffer, all_text.c_str()); text_buff = tbuffer; DDPRINTF("Texto extraido.\n"); return bytes; } return -1; } void ServiceWindowGenerationFromText::initialize() { DDPRINTF("Service Text Initialize.\n"); if (readTextFile() > 1) { ServiceWindowGeneration::initialize(); notificaTradutor(text_buff); } else { printf("Problema ao ler arquivo!\n"); } free(text_buff); } void ServiceWindowGenerationFromText::notificaTradutor(char *legenda) { char* chars_array = strtok(legenda, "."); while(chars_array){ tradutor->traduz((unsigned char *) chars_array); chars_array = strtok(NULL, "."); } free(chars_array); } bool ServiceWindowGenerationFromText::isAlive() { return alive; } void ServiceWindowGenerationFromText::Run() { while (isRunning()) { usleep(200000); //200ms } if (strcmp(client_type, (char*)"WEB") == 0) { printf("[INFO]: A transcodificação para .webm está ativada!\n"); transcodeVideoToWebm(); } alive = false; } void ServiceWindowGenerationFromText::transcodeVideoToWebm() { FILE *video_webm; video_webm = fopen(OUTPUT_VIDEO_WEB, "r"); if (video_webm != NULL) { string cmd = "rm "; cmd.append(OUTPUT_VIDEO_WEB); printf("[INFO]: Remove video libras.webm: %s\n", cmd.c_str()); system(cmd.c_str()); fclose(video_webm); } char* command = (char*) malloc (INT_MAX); strcpy(command, "ffmpeg -i "); strcat(command, PATH_LIBRAS); strcat(command, " -vcodec libvpx -acodec libvorbis "); strcat(command, OUTPUT_VIDEO_WEB); printf("[INFO]: Transcodification command -> %s\n", command); system(command); free(video_webm); free(command); }