понедельник, 28 октября 2013 г.

Конвертация flv to avi, swf to avi

Добрый день. Возникла необходимость сконвертировать видео flv в avi, для просмотра на IPad и Android устройствах. Наверное есть какие-то приложения для Android и IOS, которые позволяют смотреть flv, но приложений под IOS, которые просматривают swf точно нет, т.к. для проигрывания swf нужен Flash. От конвертации под Windows я сразу отказался, по трём причинам:
1.  Происхождение приложений. Скачивая приложения с непонятных сайтов и устанавливая их с правами администратора, можно получить очень "интересные" последствия. Наверное, я параноик, но устанавливать непонятные Win-приложения я не хочу.
2. Интерфейс у приложений, какой-то не очень для меня очевидный. Может быть я тупой или ленивый, но разбираться в невероятном количестве менюшек мне не хотелось.
3. В процессе конвертации видео на моём бюджетном ноутбуке, выяснилось что время, затрачиваемое на конвертацию, чуть ли не больше, чем время воспроизведения файла. Т.е. на конвертацию 20 часов видео потратиться более суток и если при этом что-то, программа  вернёт ошибку, то сколько то часов времени будет потеряно.

И тут мне в голову пришла совершенно очевидная мысль: не может быть, что бы в репозиториях для Debian не было средства для конвертации. Первая же ссылка в поиске привела меня на форум OpenNet . А дальше дело техники:
# apt-get install ffmpeg

Сам код для конвертации без потери качества, для тех кому день читать man :
ffmpeg -i src.flv -vcodec copy -acodec copy dst.avi

И маленький скриптик:

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
        ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi &
done

exit 0


Кстати, очень важно наличие амперсанда & в конце команды :

ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi

Т.к. это позволяет запустить конвертацию в несколько "потоков" и отвязать выполнение скрипта от консоли в которой он запущен. Т.е. после запуска скрипта проверяем наличие ffmpeg
в top и можно закрывать консоль. На моём сервере с древним Xeon и 2 Гб оперативной памяти все процессы (12 шт.) ffmpeg "съели" 4% процессорного времени и всё видео (20 часов) сконвертировалось в течении 3-4 минут.

Желающие могут усовершенствовать скрипт использую BASH Guide .
Конвертация проходит без потери качества.
Удачи:)

1 комментарий:

  1. Спасибо большое! Долго искал этот код конвертации без потери качества и вот наконец-то нашёл)

    ОтветитьУдалить