我正在寻找一个将 swf 无损转换为 mp4 的批处理脚本。我尝试同时使用 ffmpeg 和 handbrake,但显然 swf 已被压缩,我无法以这种方式转换它们。
ffmpeg -i input -c:v libx264 -preset ultrafast -qp 0 output.mkv
HandBrakeCLI -i source -o destination
我知道我 acn 使用像 xilisoft 这样的工具,但我有 3000 多个视频,需要自动运行它。是否有脚本/算法可以帮助我自动化这个过程?
最佳答案
咬牙切齿:
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 需要知道颜色空间(rga32)尺寸和输入 fps。我们告诉它合并音频(160kbps mp3),以 30fps 的速度渲染视频
您需要额外的标志来获得无损 mp4。
关于ffmpeg - 将压缩的 swf 转换为 mp4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20194270/