Полагаю, это вопрос логики, но я не могу его решить. У меня есть код, который конвертирует любой видеофайл в mp4, но на данный момент я конвертирую только в .gif. Я хотел знать, как создать файлы .mp4 и .gif с одним и тем же уникальным идентификатором.
Я пробовал что-то вроде этого
$finalFilePath = $targetDir . uniqid() . ".gif" ".mp4";
Однако мне это не удалось. Это только один генератор файлов В данном случае это файл uniqueid.gif, который на самом деле является mp4. и цель состоит в том, чтобы сгенерировать оба с одним и тем же уникальным идентификатором.
Заранее большое спасибо. Приветствуется любая помощь.
обновите больше контента, чтобы спросить ---> Здравствуйте, используя этот код ниже, я могу сгенерировать 2 файла, но проблема в том, что генерируются два файла, но оба должны иметь одинаковый uniqid. однако они генерируются с разными именами, у меня возникают трудности с созданием переменной, которая хранит только один uniqid, это моя большая проблема.
if(move_uploaded_file($videoData["tmp_name"], $tempFilePath)) {
$finalFilePath = $targetDir . uniqid() . ".gif" ;
$finalFilePath2 = $targetDir . uniqid() . ".mp4";
if(!$this->insertVideoData($videoUploadData, $finalFilePath)) {
echo "Insert query failed\n";
return false;
}
if(!$this->convertVideoToMp4($tempFilePath, $finalFilePath2)) {
echo "Upload failed\n";
return false;
}
Загрузка функции.
public function upload($videoUploadData) {
$targetDir = "uploads/videos/";
$videoData = $videoUploadData->videoDataArray;
$tempFilePath = $targetDir . uniqid() . basename($videoData["name"]);
$tempFilePath = str_replace(" ", "_", $tempFilePath);
$isValidData = $this->processData($videoData, $tempFilePath);
if(!$isValidData) {
return false;
}
if(move_uploaded_file($videoData["tmp_name"], $tempFilePath)) {
$finalFilePath = $targetDir . uniqid() . ".gif";
if(!$this->insertVideoData($videoUploadData, $finalFilePath)) {
echo "Insert query failed\n";
return false;
}
return true;
}
}
Функция ConvertVideoToMp4
public function convertVideoToMp4($tempFilePath, $finalFilePath) {
$cmd = "$this->ffmpegPath -i $tempFilePath -pix_fmt rgb24 -r 4 -vf scale=540:-1 $finalFilePath 2>&1";
$outputLog = array();
exec($cmd, $outputLog, $returnCode);
if($returnCode != 0) {
//Command failed
foreach($outputLog as $line) {
echo $line . "<br>";
}
return false;
}
return true;
}
Так в чем проблема? Вызов
uniqid
дважды приведет к созданию разных идентификаторов, но никто не мешает вам вызвать его один раз и сохранить результат в переменной, которая будет использоваться дважды.Здравствуйте, спасибо за ваш ответ, да, моя большая проблема заключается в том, чтобы создать переменную, в которой хранится один и тот же uniqid, и перенаправить ее в $finalFilePath и $finalFilePath2. Это именно то, что вы сказали, но я понятия не имею, как создать переменную для использования в обоих выходных данных загруженного файла.
Почему создание такой переменной является проблемой? Что вы пытались сделать это? Что именно с этим не работает? Только помните: не звоните по
uniqid
дважды.