def doStartPostProcess(self): cmd = DMHelper.GET_FFMPEG_PATH() + ' ' for item in self.multi['files']: cmd += ' -i "{0}" '.format(item) cmd += ' -map 0:0 -map 1:0 -vcodec copy -acodec copy "{0}" >/dev/null 2>&1 '.format(self.filePath) printDBG("doStartPostProcess cmd[%s]" % cmd) self.console = eConsoleAppContainer() self.console_appClosed_conn = eConnectCallback(self.console.appClosed, self._cmdFinished) self.console.execute( E2PrioFix( cmd ) )
def _checkWorkingCallBack(self, callBackFun, code, data): reason = '' sts = True if code != 0: ffmpegBinaryName = DMHelper.GET_FFMPEG_PATH() if ffmpegBinaryName == '': ffmpegBinaryName = 'ffmpeg' sts = False if code == 127: reason = _('Utility "%s" can not be found.' % ffmpegBinaryName) else: reason = data self.iptv_sys = None callBackFun(sts, reason)
def start(self, url, filePath, params={}): ''' Owervrite start from BaseDownloader ''' self.url = url self.filePath = filePath self.downloaderParams = params self.fileExtension = '' # should be implemented in future self.outData = '' self.contentType = 'unknown' cmdTab = [DMHelper.GET_FFMPEG_PATH(), '-y'] tmpUri = strwithmeta(url) if 'iptv_video_rep_idx' in tmpUri.meta: cmdTab.extend( ['-video_rep_index', str(tmpUri.meta['iptv_video_rep_idx'])]) if 'iptv_audio_rep_idx' in tmpUri.meta: cmdTab.extend( ['-audio_rep_index', str(tmpUri.meta['iptv_audio_rep_idx'])]) if 'iptv_m3u8_live_start_index' in tmpUri.meta: cmdTab.extend([ '-live_start_index', str(tmpUri.meta['iptv_m3u8_live_start_index']) ]) if 'iptv_m3u8_key_uri_replace_old' in tmpUri.meta and 'iptv_m3u8_key_uri_replace_new' in tmpUri.meta: cmdTab.extend([ '-key_uri_old', str(tmpUri.meta['iptv_m3u8_key_uri_replace_old']), '-key_uri_new', str(tmpUri.meta['iptv_m3u8_key_uri_replace_new']) ]) if "://" in self.url: url, httpParams = DMHelper.getDownloaderParamFromUrlWithMeta( tmpUri, True) headers = [] for key in httpParams: if key == 'Range': #Range is always used by ffmpeg continue elif key == 'User-Agent': cmdTab.extend(['-user-agent', httpParams[key]]) else: headers.append('%s: %s' % (key, httpParams[key])) if len(headers): cmdTab.extend(['-headers', '\r\n'.join(headers)]) if self.url.startswith("merge://"): try: urlsKeys = self.url.split('merge://', 1)[1].split('|') for item in urlsKeys: cmdTab.extend(['-i', self.url.meta[item]]) except Exception: printExc() else: cmdTab.extend(['-i', url]) cmdTab.extend([ '-c:v', 'copy', '-c:a', 'copy', '-f', self.ffmpegOutputContener, self.filePath ]) self.fileCmdPath = self.filePath + '.iptv.cmd' rm(self.fileCmdPath) WriteTextFile(self.fileCmdPath, '|'.join(cmdTab)) cmd = GetCmdwrapPath() + (' "%s" "|" %s ' % (self.fileCmdPath, GetNice() + 2)) printDBG("FFMPEGDownloader::start cmd[%s]" % cmd) self.console = eConsoleAppContainer() self.console_appClosed_conn = eConnectCallback(self.console.appClosed, self._cmdFinished) self.console_stderrAvail_conn = eConnectCallback( self.console.stderrAvail, self._dataAvail) self.console.execute(cmd) self.status = DMHelper.STS.DOWNLOADING self.onStart() return BaseDownloader.CODE_OK
def isWorkingCorrectly(self, callBackFun): self.iptv_sys = iptv_system( DMHelper.GET_FFMPEG_PATH() + " -version 2>&1 ", boundFunction(self._checkWorkingCallBack, callBackFun))