AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 772790
Accepted
xralf
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 1 个回答
  • 106 Views

1 个回答

  • Voted
  1. Best Answer
    Sir Muffington
    2024-03-23T19:30:02+08:002024-03-23T19:30:02+08:00

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

    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)
    

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

    您需要对每张幻灯片进行操作,您可以使用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
    
    • 3

相关问题

  • 使用 ffmpeg 从 FLAC 到 ALAC 的无损音频转换

  • 来自 PNG 帧的 H.264/MPEG-4:如何以及如何调整压缩

  • ffmpeg 命令在脚本内静默失败,但在直接运行时有效

  • 将 MKV 内的音频转换为 AC3 或 DTS,保留 6.1 声道

  • ffmpeg:普通文件名的“找不到协议”

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve