Node-Webkit Получить продолжительность видео из пути к файлу avi

Я ищу способ получить продолжительность видео из пути к файлу avi в Node-Webkit, который не требует использования ffmpeg.

ffprobe.exe — это большой файл (30 МБ), и кажется, что хранить его все слишком много, когда это единственное, для чего он мне нужен.


person Jaruba    schedule 17.02.2015    source источник


Ответы (2)


Существует модуль узла: avprober, который представляет собой оболочку инструмента командной строки avprobe, который поставляется вместе с установкой avconv.

Он показывает детали данного медиафайла, такого как продолжительность

... в качестве альтернативы, вот некоторый python, который использует hachoir для анализа информации заголовка мультимедиа ... и это делает обрабатывать видеофайлы (AVI, mp4 и т. д.), чтобы показать продолжительность

import sys

from hachoir_core.cmd_line import unicodeFilename
from hachoir_core.i18n import getTerminalCharset
from hachoir_metadata import extractMetadata
from hachoir_parser import createParser


filename = sys.argv[1]
charset = getTerminalCharset()
filename, real_filename = unicodeFilename(filename, charset), filename
parser = createParser(filename, real_filename=real_filename)
metadata = extractMetadata(parser)
print("Duration (hh:mm:ss.f): %s" % metadata.get('duration'))
person Scott Stensland    schedule 17.02.2015
comment
Я скачал пакет libav, но он весит 160 Мб. Можно ли как-нибудь сократить libav до минимума, необходимого для использования avprobe? - person Jaruba; 18.02.2015
comment
После компиляции libav размер исполняемого файла avprobe составляет всего 64 кбайт, но он динамически связывается с МНОГИМИ объектными файлами, которые должны быть доступны в любой целевой системе ... это открытый исходный код ... возможно, продолжительность - это поле в какой-то заголовок и может быть прочитан напрямую с минимальным кодом незнаю без дальнейшего копания - person Scott Stensland; 18.02.2015
comment
вот несколько выводов по формату заголовка /вопросы/3057157/ - person Scott Stensland; 18.02.2015
comment
Я попробую любое решение, я делаю это с файлами .avi, vlc никогда не обновляет продолжительность при воспроизведении, и я использую плагин на основе libvlc. ffprobe имеет размер 30 МБ, он не имеет правильной продолжительности в начале, требуется около 2-4 минут, пока он не сможет получить правильную продолжительность (в зависимости от скорости загрузки, потому что я использую его для частично загруженных файлов). Поэтому я ищу самый маленький и быстрый способ получить продолжительность в этом сценарии. - person Jaruba; 18.02.2015
comment
похоже, что HTML5 File API может получить доступ к Duration ... также вот код, который извлекает Duration для файла mp4 jsfiddle. net/derickbailey/s4P2v - person Scott Stensland; 18.02.2015
comment
не работает для файлов avi, я не думаю, что файлы avi включают продолжительность в заголовок. Я немного не уверен, как ffprobe правильно рассчитывает его из частично загруженных файлов. - person Jaruba; 18.02.2015

Чтение видеосвойств файла, таких как продолжительность, битрейт, разрешение и т. д., требует некоторого декодирования. Итак, да, вам нужен ffmpeg.

Получив его, вы можете использовать аудио- и видеофункции HTML5.

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video

person javorosas    schedule 17.02.2015