2009 12/11

MetaData с помощью Yamdi и FlvMeta

yamdiДля публикации видео в интернете после того, как мы перекодировали видео в нужный нам формат, необходимо вставить мета-данные. Они нужны для того, чтобы player, который будет проигрывать это видео, смог прочитать ряд параматеров, таких как информация о keyframes, длительности видео, размер, высота ширина, аудио-rate и т.д. Эти данные действительно необходимы, если вы хотите, чтобы ваш flash ролик проигрывался без таких часто встречаемых проблем, как, например, неработающая перемотка.

Yamdi

Если вы устанавливали ffmpeg, пользуясь этой инструкцией, то yamdi (Yet Another Meta Data Injector) был установлен автоматически и мы можем перейти к изучению команд.

Итак, запускаем Terminal, переходим в папку где у нас хранятся видео и пишем:

yamdi -i input.flv -o output.flv -l

параметр ‘-l‘ добавляет событие OnLastSecond, необходимое для корректного streaming’а (потокового проигрывания) видео-файла.

Для того, чтобы запустить очередь файлов:

for f in *.flv do; yamdi -i $f -o path/$f -l; done

path/‘ – опциональный параметр относительного пути для новых файлов (со вставленными мета-данными). Дело в том, что если вы оставите, -’o $f’, то получите мертвую петлю и файлы перезапишуться размером 0 байт. Поэтому, либо прописывайте путь для новых файлов, либо добавляйте новым файлам prefix или suffix.

FlvMeta

Существует великолепная альтернатива yamdi – FlvMeta. На мой взгляд, это продукт потребляет меньше системных ресурсов, а работает так же хорошо. Поэтому привожу инструкцию по установке (зайдите на сайт проекта, чтобы получить url к свежей версии):

Вам понадобиться Xcode Tools для того, чтобы скомпилировать flvmeta binary file.
curl -O http://flvmeta.googlecode.com/files/flvmeta-1.0.10.tar.gz
tar -xzf flvmeta-1.0.10.tar.gz
cd flvmeta-1.0.10
./configure
make
sudo mv flvmeta /usr/local/bin/
sudo chown root:wheel /usr/local/bin/flvmeta
sudo chmod 755 /usr/local/bin/flvmeta

Готово! Теперь мы у нас есть альтернатива. Запускаем командой:

flvmeta -i input.flv -o output.flv

или

for f in *.flv do; flvmeta -i $f -o path/$f; done

  • http://www.facebook.com/vladislav.meyer Владислав Мейер

    У вас тут парочка ошибок я исправил )) должно быть так

    for f in *.*; do yamdi -i /home/111/$f -o /home/222/$f -l; done

  • Vilgood

    Помогите!!!
    Выдает вот что: Error: cannot open -i for reading.
    Видео кодирую в Media Encoder cs5.5 с настройками от источника

  • Pavel Zhila

    >> for f in *.flv do; flvmeta -i $f -o path/$f; done

    тут тоже не все ок, должно быть 

    for f in *.flv; do flvmeta $f path/$f; done


copyright 2008-2010 MacGuide