将 swf 文件转换为 mp4

将 swf 文件转换为 mp4

我遇到了不错的网络。有swfmp3文件。我想将它们转换为mp4其他内容,以便可以查看。

我尝试过gnashffmpeg没有成功。

我上线了Lubuntu 22.04

答案1

首先,我将提到一些您不应该采取的路径以及为什么现在(只要您运行的是现代发行版):

Swivel 可以将 swf 转换为图像/视频,但它依赖于 Adob​​e AIR,而 Adob​​e AIR 在 Linux 上不可用。

Gnash 有一个 dump-gnash 命令,该命令可能有效,您可以尝试使用它导出原始 rgb32 30fps 视频,但它在我的系统上不起作用。无论如何,我会给你命令:

dump-gnash -1 -D ./out.raw@30

根据这个:https://stackoverflow.com/questions/20194270/convert-compressed-swf-to-mp4如果你使用 Gnash 也可能会成功。


但 Gnash 是一个未完成的、废弃的项目,这就是为什么我将向您展示如何处理名为 Ruffle 的维护项目。

如果您要获取最新版本的软件,则还必须获取最新版本的 Rust 及其组件。要安装它(在撰写本文时),命令是:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

当我尝试从包管理器安装时,我遇到了麻烦,上面的命令获取了最新的稳定的 Rust 发行版。

您可能还需要安装 Java(openJDK 对我有用)。

现在 git clone ruffle master 分支使用git clone

cd 进入褶边文件夹:

git clone https://github.com/ruffle-rs/ruffle
cd ruffle/

警告:您显然需要一个 GPU,因此它无法在无头服务器上工作:/

然后运行以下命令:

cargo run --release --package=exporter -- path/to/file.swf

这将安装所需的依赖项,启动导出器,然后以高质量导出幻灯片(就 Flash 当年实现的质量而言......如果您不满意,您也可以使用命令行参数) 。

是的,它基本上需要编译项目的主要组件,但至少最终结果会是好的。

如果该过程不起作用,您将需要解压缩所使用的 SWF:

wget http://www.swftools.org/swftools-0.9.2.tar.gz
tar xvf swftools-0.9.2.tar.gz
cd swftools-0.9.2.tar.gz/
./configure
make

现在cd进入 src 目录,您将在其中找到转换所需的 swfcombine 二进制文件:

swfcombine -d slide1.swf -o slide1dec.swf
rfxswf error: sprite doesn't end(1)
rfxswf error: sprite doesn't end(2)

是的,它会打印出错误,但它似乎有效。

您需要对每张幻灯片执行此操作,您可以使用findxargs类似的方法来自动化它(或者如果支持的话,可以使用通配符)。

然后你可以将它放入 Ruffle 中,如上所示。

根据您的输入(PNG 或原始视频),您可能需要执行以下操作来将音频与视频结合起来:

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

让我知道这是否适合您的用例。

PS如果你想一次性合并mp3:https://superuser.com/questions/202809/join-multiple-mp3-files-lossless


编辑1:

请尝试以下方法将音频添加到图像中:

ffmpeg -loop 1 -i img.png -i slide1.mp3 -shortest slide1withaudio.mp4

相关内容