Как извлечь длительность времени из вывода ffmpeg? - PullRequest
59 голосов
/ 05 июня 2011

Чтобы получить много информации о медиафайле, можно сделать

ffmpeg -i <filename>

, где будет выведено много строк, в частности одна

Duration: 00:08:07.98, start: 0.000000, bitrate: 2080 kb/s

Я хотел бы вывести только 00:08:07.98, поэтому я пытаюсь

ffmpeg -i file.mp4 | grep Duration| sed 's/Duration: \(.*\), start/\1/g'

Но он печатает все, а не только длину.

Даже ffmpeg -i file.mp4 | grep Duration выводит все.

Как я могу получить только продолжительность?

Ответы [ 13 ]

0 голосов
/ 17 сентября 2014

ffmpeg был заменен на avconv: просто замените avconb на ответ Луи Марасио.

avconv -i file.mp4 2>&1 | grep Duration | sed 's/Duration: \(.*\), start.*/\1/g'

Примечание: дополнительно. * После запуска, чтобы получить только время !!

0 голосов
/ 13 декабря 2013

Для тех, кто хочет выполнить те же вычисления без дополнительного программного обеспечения в Windows, вот скрипт для командной строки:

set input=video.ts

ffmpeg -i "%input%" 2> output.tmp

rem search "  Duration: HH:MM:SS.mm, start: NNNN.NNNN, bitrate: xxxx kb/s"
for /F "tokens=1,2,3,4,5,6 delims=:., " %%i in (output.tmp) do (
    if "%%i"=="Duration" call :calcLength %%j %%k %%l %%m
)
goto :EOF

:calcLength
set /A s=%3
set /A s=s+%2*60
set /A s=s+%1*60*60
set /A VIDEO_LENGTH_S = s
set /A VIDEO_LENGTH_MS = s*1000 + %4
echo Video duration %1:%2:%3.%4 = %VIDEO_LENGTH_MS%ms = %VIDEO_LENGTH_S%s

Тот же ответ выложен здесь: Как обрезать последние Nсекунд с видео TS

0 голосов
/ 16 декабря 2011

Вы можете попробовать это:

/*
* Determine video duration with ffmpeg
* ffmpeg should be installed on your server.
*/
function mbmGetFLVDuration($file){

  //$time = 00:00:00.000 format
  $time =  exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");

  $duration = explode(":",$time);
  $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);

  return $duration_in_seconds;

}

$duration = mbmGetFLVDuration('/home/username/webdir/video/file.mov');
echo $duration;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...