xralf Asked: 2024-03-21 03:58:10 +0800 CST2024-03-21 03:58:10 +0800 CST 2024-03-21 03:58:10 +0800 CST 将 swf 文件转换为 mp4 772 我偶然发现了这个不错的网站。有swf和mp3文件。我想将它们转换为mp4其他内容,以便可以查看。 我尝试过gnash但ffmpeg没有成功。 我上线了Lubuntu 22.04 ffmpeg 1 个回答 Voted Best Answer Sir Muffington 2024-03-23T19:30:02+08:002024-03-23T19:30:02+08:00 首先,我将提到一些您不应该采取的路径以及为什么现在(只要您运行的是现代发行版): Swivel 可以将 swf 转换为图像/视频,但它依赖于 Adobe AIR,而 Adobe 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) 是的,它会打印出错误,但它似乎有效。 您需要对每张幻灯片进行操作,您可以使用find或xargs类似的方法来自动化它(或者如果支持,也可以使用通配符)。 然后你可以将它放入 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
首先,我将提到一些您不应该采取的路径以及为什么现在(只要您运行的是现代发行版):
Swivel 可以将 swf 转换为图像/视频,但它依赖于 Adobe AIR,而 Adobe AIR 在 Linux 上不可用。
Gnash 有一个 dump-gnash 命令,该命令可能有效,您可以尝试使用它导出原始 rgb32 30fps 视频,但它在我的系统上不起作用。无论如何,我会给你命令:
根据此:https://stackoverflow.com/questions/20194270/convert-compressed-swf-to-mp4,您也可能会成功使用 Gnash。
但 Gnash 是一个未完成的、废弃的项目,这就是为什么我将向您展示如何处理名为 Ruffle 的维护项目。
如果您要获取最新版本的软件,则还必须获取最新版本的 Rust 及其组件。要安装它(在撰写本文时),命令是:
当我尝试从包管理器安装时,我遇到了麻烦,上面的命令获取了最新的稳定的 Rust 发行版。
您可能还需要安装 Java(openJDK 对我有用)。
现在 git clone ruffle master 分支使用
git clone
cd 进入褶边文件夹:
警告:您显然需要一个 GPU,因此它无法在无头服务器上工作:/
然后运行以下命令:
这将安装所需的依赖项,启动导出器,然后以高质量导出幻灯片(就 Flash 当年实现的质量而言......如果您不满意,您也可以使用命令行参数) 。
是的,它基本上需要编译项目的主要组件,但至少最终结果会是好的。
如果该过程不起作用,您将需要解压缩所使用的 SWF:
现在
cd
进入 src 目录,您将在其中找到转换所需的 swfcombine 二进制文件:是的,它会打印出错误,但它似乎有效。
您需要对每张幻灯片进行操作,您可以使用
find
或xargs
类似的方法来自动化它(或者如果支持,也可以使用通配符)。然后你可以将它放入 Ruffle 中,如上所示。
根据您的输入(PNG 或原始视频),您可能需要执行以下操作来将音频与视频结合起来:
让我知道这是否适合您的用例。
PS如果你想一次性合并mp3:https://superuser.com/questions/202809/join-multiple-mp3-files-lossless
编辑1:
请尝试以下方法将音频添加到图像中: