#include "serviceWindowGenerationFromText.h" #define PATH_LIBRAS "vlibras_user/vlibras-api/videos/" #define MAX_SIZE_PATH 256 ServiceWindowGenerationFromText::ServiceWindowGenerationFromText ( char* _path_file, char* _username, int _transp, int _serviceType, char* _client_type) { path_file = _path_file; client_type = _client_type; setUserId(_username); setTransparency(_transp); setServiceType(_serviceType); char* final_path = new char[MAX_SIZE_PATH]; strcpy(final_path, PATH_LIBRAS); strcat(final_path, _username); strcat(final_path, ".ts"); setPathLibras(final_path); alive = true; DPRINTF("Done!\n"); } ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() { delete extratorTXT; DDDPRINTF("Service Text finished!\n"); } void ServiceWindowGenerationFromText::initialize() { DDPRINTF("Service Text Initialize.\n"); extratorTXT = new ExtratorTXT(); extratorTXT->addListener(this); extratorTXT->setFilePath((char*) path_file); ServiceWindowGeneration::initialize(); try{ extratorTXT->initialize(); }catch(ExtratorTxtException ex){ throw ServiceException(ex.getMessage()); } this->Start(); } void ServiceWindowGenerationFromText::notifyEnd(int line_size) { DDPRINTF("Service SRT recebeu: %d linhas.\n", line_size); setSizeOfSubtitles(line_size); } void ServiceWindowGenerationFromText::notificaTradutor(unsigned char* line) { tradutor->traduz(line); } 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() { string command = "ffmpeg -i "; command.append(getPathLibras()) .append(" -vcodec libvpx -acodec libvorbis ") .append(PATH_LIBRAS) .append(getUserId()) .append(".webm") .append(" && rm ") .append(getPathLibras()); printf("[INFO]: Transcodification command -> %s\n", command.c_str()); system(command.c_str()); }