ffmpeg - 如何列出此 WASM 模块中的符号?

标签 ffmpeg webassembly rust-wasm

我正在寻找使用 good-ol' FFmpeg 做一些浏览器内视频工作和锈。调用者与 ffmpeg 命令行交互的简单示例比比皆是。更复杂的例子更难找到。就我而言,我希望提取、处理和旋转离散帧。
Clipchamp对 WASM 和 FFmpeg 的使用令人印象深刻,但是下载的 WASM 文件 ( there's only one ) 不会向 wasm-nm 显示自己也不是 wasm-decompile ,都提示相同的操作码:

  • wasm-nm : Unknown opcode 253
  • wasm-decompile : unexpected opcode: 0xfd 0x0

  • 有没有人分享我如何(1)内省(introspection)正在使用的 WASM 模块或(2)更一般地建议我如何(最有可能使用 WASM 和 Rust)处理视频文件?

    最佳答案

    WASM 模块使用 SIMD 指令(以 0xfd 为前缀,也称为 vector instructions ),其中 were merged into the spec just last month .最新版本wasm-decompile因此默认情况下还没有启用这些,但是 will in the next release .同时,您可以使用 --enable-simd 手动启用它们。命令行选项。此调用适用于我的最新版本:

    ./wasm-decompile --enable-simd ffmpeg_wasm_simd_c8f3841de02a8803b5e2618ed47cb70f.wasm
    
    我还查看了 wasm-nm ,因为这对您的用例来说会更方便。可惜四年没更新了。它只是 parity-wasm 周围的薄包装但是,因此我尝试将其更新到最新版本,包括对 SIMD 和其他尚未标准化的指令集的支持。这编译得很好,但不幸的是仍然提示未知的操作码。在解决了这个问题后,由于意外的 EOF 而出错。所以我担心这个库有更多需要解决的基本问题。

    关于ffmpeg - 如何列出此 WASM 模块中的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70454530/

    相关文章:

    c++ - 将调用 C++ 的 Rust 编译为 WASM

    bash - bash 脚本中意外标记 `do' 附近出现语法错误

    video - 无法使用任何工具旋转/转码视频

    batch-file - 将多种格式的多个文件转换为mkv

    rust - 如何在 Cargo.toml 中启用 --gc-targets?

    rust - NEAR跨合约调用异常如何处理?

    java - 使用 C 语言通过 FFmpeg 保存部分视频

    javascript - WebAssembly 链接错误 : function import requires a callable

    webassembly - 将 webassembly 编译为 native 可执行文件

    rust - 在近协议(protocol)合约的函数中返回多个值