Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Есть список wmv. Как получить список длительности воспр.?
цитата
22/11/10 в 15:00
 Vyacheslav
На сервере есть список WMV и их копий в MOV, MP4. Как ffmpegom получить текстовый файл или вывести в консоль список с соответствующимим файлами и длительностью их воспроизведения напротив имени?
цитата
22/11/10 в 15:49
 axelded
Как то так на скорую руку:
Код:
for i in `cat filename.txt`; do j=`ffmpeg -i $i 2>&1 | cat | grep Duration | awk '{print($2)}' | awk -F'.' '{print($1)}'`; echo $i $j >> video-duration.txt; done
цитата
22/11/10 в 18:04
 JM
Ну или юзая модуль ffmpeg-php
цитата
22/11/10 в 19:05
 Dr.Syshalt
Вот из одного скрипта кусок, просто функция. global $ffmpeg_path - это понятно, что. На вход принимает путь к файлу, что возвращает - надеюсь, прозрачно.

Вторая часть марлезонского балета - для разбора заголовков mp4, там все немного не так, как в flv, надо из стрима брать информацию, а не из самого контейнера.


function get_video_info($file) {
    global $ffmpeg_path;
    $info = array();
    if (is_file($file)) {
        ob_start();
        passthru("$ffmpeg_path -i $file 2>&1", $res);
        $buff = ob_get_contents();
        ob_end_clean();

        preg_match('/Duration: (.*?),/', $buff, $matches);
        $duration = $matches[1];
        $duration_array = explode(':', $duration);
        $info['duration'] = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];

        preg_match('/width\s*:\s*(\d+)/', $buff, $matches);
        $info['width'] = $matches[1];

        preg_match('/height\s*:\s*(\d+)/', $buff, $matches);
        $info['height'] = $matches[1];

        if (!defined($info['width']) || !defined($info['height'])) {
            // get from stream info
            preg_match('/stream.*video.*\s(\d+)x(\d+)/i', $buff,$matches);
            $info['width'] = $matches[1];
            $info['height'] = $matches[2];
        }
    }
    if ($info['duration']) {
        return $info;
    }
    return NULL;
}
цитата
22/11/10 в 20:13
 Vyacheslav
Буду проверять.
А если все файлы в одной директории? Т.е. без cat filename.txt ...
цитата
23/11/10 в 09:46
 axelded
Замени "cat filename.txt" на "ls -1 *.WMV" (или просто * если нужны все файлы в каталоге).


Эта страница в полной версии