1. alTus

    24.01.2010

    0 ↑
    0 ↓
    Здравствуйте.

    На сайте реализован вывод видео двумя способами.
    Можно, во-первых, задать ссылку на youtube ролик (тогда получение инфы о нем сводится к GET-запросу на http://gdata.youtube.com/feeds/api/videos/#VIDEO_ID# и парсингу XML, если интересно).

    Во-вторых, можно выбрать файл на сервере - и тогда инфу о нем можно получить только.. хм.. если как-то считать эту инфу напрямую из файла. В поисках библиотек я набрел только на ffmpeg, но он какой-то монструозный. Может, конечно, я не так ищу...

    А надо мне, собственно, по-минимуму - хотя бы разрешение видео-файла получить (пока для flv и mpeg, но может и еще каких-то форматов).

    Может, кто-то сталкивался?
  2. Ринат Измаилов

    25.01.2010

    0 ↑
    0 ↓
    Пользуюсь давно написанным куском
    import re, os

    MPLAYER_ROOT = "mplayer" # "mplayer.exe"

    def infoMedia(fname):
    string = os.popen('%s -vo null -ao null -frames 0 -identify "%s"' % (MPLAYER_ROOT, fname)).read()
    result = {}
    tmp_keys = {}
    for line in re.findall("ID_(.*)=(.*)", string):
    skey, svar = line[0].lower(), line[1]
    match = re.search("^(.*)_name(\d+)$", skey)
    if match:
    g = match.groups()
    if g[0] not in result:
    result[g[0]] = {}
    tmp_keys[g[0]] = {g[1]: svar}
    else:
    tmp_keys[g[0]] [g[1]] = svar
    continue

    match = re.search("^(.*)_value(\d+)$", skey)
    if match:
    g_key = tmp_keys[g[0]] [g[1]]
    result[g[0]] [g_key] = svar
    continue

    result[skey] = svar
    return result

    print infoMedia("test.avi")
  3. alTus

    25.01.2010

    0 ↑
    0 ↓
    Спасибо! Были мысли по поводу использования какой-нибудь консольной программы, но думал сначала поискать "прямой" способ.

    А не поясните, все эти флаги отвечают за то чтобы из файла получить только данные, и при этом ресурсы тратятся минимально?
  4. Grigory Fateyev

    25.01.2010

    2 ↑
    0 ↓
    Можно получить данные о видео файле (и других файлах) через утилиту file
    > file iso/video/99\ франков.avi
    iso/video/99 франков.avi: RIFF (little-endian) data, AVI, 720 x 304, 25.00 fps, video: XviD, audio: Dolby AC3 (6 channels, 48000 Hz)
    в питон вызвать например так:
    subpocess.call('file ...', shell=True)
    и парсить вывод.
  5. alTus

    26.01.2010

    0 ↑
    0 ↓
    Еще проще, спасибо.
  6. avl23.ya.ru

    09.02.2010

    0 ↑
    0 ↓
    > Можно получить данные о видео файле
    > (и других файлах) через утилиту file

    Можно но не нужно. Ключевое слово - mediainfo
    и соответствующий биндинг для python к нему

    По части видеофайлов умеет намнооого больше чем стандартный file
    И более кроссплатформенно.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.