public function actionMerge() { //Pego todas as multimidias que estão sem merge $arrMultimidia = Multimidia::findAll(['flg_merge' => 0]); $arrFinal = []; //Se exister as guardo em um array em que a chave sera o id da audiência if (count($arrMultimidia) > 0) { foreach ($arrMultimidia as $multimidia) { $arrFinal[$multimidia->id_audiencia][] = $multimidia; } //Pego todos os arquivos que estão com a flg_merge e os concateno foreach ($arrFinal as $idAudiencia => $arrMulAudi) { //Apenas faço este procedimento se tiver mais que 1 arquivo mergeado. if (count($arrMulAudi) > 1) { foreach ($arrMulAudi as $objMultimidia) { $path = Yii::getAlias('@upload') . '/' . $idAudiencia . '/'; $pathFile = Yii::getAlias('@upload') . '/' . $idAudiencia . '/' . 'FILES.TXT'; file_put_contents($pathFile, 'file ' . '\'' . $path . $objMultimidia->dsc_arquivo . '\'' . PHP_EOL, FILE_APPEND); $objMultimidia->flg_merge = 1; $objMultimidia->save(); } $arquivoFinal = md5(microtime()) . '.webm'; $cmd = ' -f concat -i ' . $pathFile . ' -c copy ' . $path . $arquivoFinal; //GATO PRA FUNCIONAR NO WINDOWS if (strstr(Yii::getAlias('@ffmpeg'), 'windows')) { $cmd = str_replace('/', '\\', $cmd); } exec(Yii::getAlias('@ffmpeg') . $cmd . ' 2>&1', $out, $ret); unlink($pathFile); $arquivo = new Multimidia(); $arquivo->dsc_arquivo = $arquivoFinal; $arquivo->id_audiencia = $idAudiencia; $arquivo->save(); } } } }