2016-06-09 2 views
0

Я пытаюсь получить продолжительность видеофайла .webm, который я записал, используя плагин video.js (https://github.com/collab-project/videojs-record).Не удается получить длительность файла webm с помощью ffmpeg

Я использую FFmpeg, чтобы получить длительность, но она всегда возвращается N/A:

ffprobe version 3.0.2-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2016 the FFmpeg developers 
    built with gcc 5.3.1 (Debian 5.3.1-16) 20160424 
    configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --enable-frei0r --enable-libfribidi --disable-indev=sndio --disable-outdev=sndio --enable-librtmp --enable-libmfx --enable-libzimg --cc=gcc 
    libavutil  55. 17.103/55. 17.103 
    libavcodec  57. 24.102/57. 24.102 
    libavformat 57. 25.100/57. 25.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 31.100/6. 31.100 
    libswscale  4. 0.100/4. 0.100 
    libswresample 2. 0.101/2. 0.101 
    libpostproc 54. 0.100/54. 0.100 
Input #0, matroska,webm, from '/home/demoss/public_html/source/bALRt9I697PVQh4zglou.webm': 
    Metadata: 
    encoder   : Chrome 
    Duration: N/A, start: 0.000000, bitrate: N/A 
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default) 
    Stream #0:1(eng): Audio: opus, 48000 Hz, mono, fltp (default) 
duration=N/A 

Я не думаю, что видео поврежден, как он играл в моем VideoJS плеере без проблем.

Любые указатели относительно того, почему его не возвращают продолжительность, будем очень благодарны. Я бы не прочь использовать альтернативную библиотеку, а также

Благодаря

+0

Просьба указать образец входного файла. – LordNeckbeard

+0

К сожалению, видеоролики являются внутренними, и я не могу поделиться им с сожалением, но я смог преобразовать его, используя команду, указанную в моем ответе. Благодаря! –

ответ

0

Я был в состоянии преобразовать WebM в MP4 с помощью следующей команды:

ffmpeg -fflags +genpts -i myfile.webm -r 24 mynew.mp4 

Я не совсем уверен, как это работает внутренне, но я надеюсь, что эксперты могут расширить это.

Надеется, что это помогает кто-то

2

Если ffprobe/ffmpeg не показывают длительности формата или потока, то вы можете полностью расшифровать файл, чтобы найти продолжительность:

ffmpeg -i input.webm -f null - 
... 
frame= 2087 fps=0.0 q=-0.0 Lsize=N/A time=00:01:23.48 bitrate=N/A speed= 123x 

Обратитесь к time= в втором к последней строке на выходе. В этом примере продолжительность файла составляет 00: 01: 23,48.

В зависимости от продолжительности и сложности вашего ввода это может занять некоторое время.

См. Также FFmpeg Wiki: FFprobe Tips - Duration.