Бортовой журнал Ктулху

Конвертация SWF в avi на стороне сервера

Конвертация SWF в один из видеоформатов, такие как avi, mp4 и прочие может быть простой операцией а может и не очень, как оказалось. Есть два способа конвертации SWF.

 

 

Swftools & avconv

Если SWF не сжат и не имеет дополнительных слоев, то достаточно команды

avconv -i file.swf file.avi

На выходе получаем avi файл с проигранным содержимым SWF.

Но иногда SWF бывает сжатым.

compressed swf

В таком случае его предварительно необходимо "разжать", т.к. avconv не умеет работать со сжатыми SWF.

Для этого понадобится компонент swftools - swfcombine.

swfcombine -d file.swf -o file_new.swf

После этого можно конвертировать при помощи avconv.

Dump-gnash & avconv

Dump-gnash - утилита из состава альтернативного flash-проигрывателя Gnash.

В некоторых случаях стоит использовать ее если не отображается сожержимое SWF (хотя нормально отображается только в адобовском плеере).

Делаем дамп SWF.

dump-gnash -1 -D video.raw@15 file.swf

где

1 - только один цикл проигрывания. Если не поставить, уйдет в бесконечный цикл,

15 - частота "кадров", framerate.

raw файл после этого можно конвертировать через avconv.

ffmpeg -f rawvideo -pixel_format rgb32 -video_size 1280x720 -r 15 -i video.raw -c:v libx264 -preset ultrafast -crf 20 -tune stillimage output.mp4

Возможные проблемы - нет звука. В таком случае отдельно делать дамп звука и дамп видео.

Поддерживается только формат wma.

A - аудио.

D - видео, как ни странно.

dump-gnash -1 -A video.wma file_new.swf

Добавляем звук в видео.

avconv -i output.mp4 -i video.wav -codec copy -shortest output.avi

Использованные ресурсы:

http://www.linux.org.ru/forum/general/11712009

http://stackoverflow.com/questions/20194270/convert-compressed-swf-to-mp4