我正在寻找一个批量脚本将swf转换为mp4,无损.我尝试使用ffmpeg和handbrake,但显然swf是压缩的,我不能以这种方式转换它们.
ffmpeg -i input -c:v libx264 -preset ultrafast -qp 0 output.mkv HandBrakeCLI -i source -o destination
我知道我使用像xilisoft这样的工具,但是我有超过3000个视频,需要自动运行.有没有脚本/算法可以帮助我自动化这个过程?
解决方法
获取gnash:
git clone git://git.sv.gnu.org/gnash.git
您需要一堆依赖关系才能构建它(应该能够让它们全部):
libsdl-dev libboost-dev libagg-dev
然后配置和构建gnash视频转储器:
cd gnash ./autogen.sh ./configure --enable-renderer=agg \ --enable-gui=dump \ --disable-menus \ --enable-media=ffmpeg \ --disable-jemalloc make
然后,您可以将dump-gnash指向swf,并将渲染原始视频和音频
dump-gnash -1 \ -D /tmp/out.raw@30 \ -A /tmp/out.wav \ -P "FlashVars=myURL=http://example.com/blah&online=true" \ http://example.com/blah/some.swf \
这将写入/tmp/out.raw(这是bgra aka rgb32视频)在30fps(@ 30位)和/tmp/out.wav
这些需要重新组合到例如mp4使用:
ffmpeg -i /tmp/out.wav \ -f rawvideo \ -pix_fmt rgb32 \ -s:v 800x550 \ -r 30 \ -i /tmp/out.raw \ -c:v libx264 \ -r 30 \ -b 160k \ /tmp/out.mp4
因为它的原始视频,ffmpeg需要知道colourspace(rga32)的尺寸和输入fps.我们告诉它结合音频(160kbps mp3),渲染视频30fps
您将需要额外的标志来获得无损MP4.