Как сделать формат `mktime` с миллисекундами? - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно сделать 24 кадра в секунду с PHP ffmpeg.Это текущий формат

$t = mktime(0, 0, 0, 1, 1, 98);

Позже я использую эту функцию

exec("/usr/local/bin/ffmpeg -ss " . date("H:i:s", $t) . " -i {$file} -f mjpeg -vframes 1 -s {$size} {$tmpfile}");

В date("H:i:s", $t) Мне нужно сделать date("H:i:s.milliseconds", $t).Это не работает date("H:i:s.u", $t) из-за формата mktime (часы, минуты, секунды, день. Месяц, годы), я думаю.

Итак, возможно ли добавить миллисекунды к mktime?

1 Ответ

1 голос
/ 20 сентября 2019

Я думаю, что самое простое решение для печати пользовательского времени "H: i: su" использует DateTime :: setTime с DateTime :: format , которое поддерживает микросекунды:

echo (new DateTime())->setTime(1, 2, 3, 456789)->format('H:i:s.u');

Результат:

01:02:03.456789

Это означает, что ваш PHP можно записать так:

<?php

$hour = 1; $minute = 1; $second = 98;
$millisecond = 123; // or whatever
$t = (new DateTime())->setTime($hour, $minute, $second, $millisecond * 1000);

exec("/usr/local/bin/ffmpeg -ss {$t->format('H:i:s.v')} -i {$file} -f mjpeg -vframes 1 -s {$size} {$tmpfile}");
...