gpt4 book ai didi

javascript - 将 Flash 视频输出捕获到 mp4 文件的脚本方式?

转载 作者:行者123 更新时间:2023-11-30 10:22:49 25 4
gpt4 key购买 nike

我有大量的 flash 电影需要转换成 mp4 文件,使它们与 ios 兼容。每部电影都有一个基本的 html 文件(都称为 index.html),它将打开 swf,设置适当的参数使其运行。

每个视频都有相同的格式:电影本身是 800 像素宽 x 600 像素高。底部 60 像素被带有播放按钮、洗涤器等的控制栏占据。我不想捕捉这个(因为 mp4 播放器将添加自己的控件):我只想捕捉顶部 540px。每个 Flash 视频都有一个它读入的 xml 文件,我可以从中抓取 Flash 电影的持续时间,这样我就可以将电影的持续时间传递给录制的任何内容。

我在 linux 中,我想编写一个执行以下操作的脚本:

  • 读取下一个 index.html 文件的位置
  • 在 chrome(或者某种 headless 浏览器)中打开它
  • 运行 *something* 执行以下操作:
    • 按下视频上的“播放”按钮,为了论证起见,我们假设它始终位于坐标“30,570”
    • 开始录制 X 秒的视频和音频,其中 X 从我的脚本传递过来。
    • X 秒后,停止录制,并将输出作为 mp4 文件保存到我的文件系统上的指定位置。

举个例子,对于第一个视频,我有这些参数,我可以传递给要执行此操作的任何工具:

{url: "localhost:3000/my_video_input/1/index.html", duration: 250, output_file:"/home/max/my_video_output/1/video.mp4"}

任何人都可以指点我一个工具,或者一个 javascript 库来做这个吗?也许解决方案涉及在将 html 文件加载到浏览器之前将 javascript 写入 html 文件。如果是这样,那是可行的,但我更喜欢更简单的东西:)

提前致谢 - 最大

编辑 - 更多信息。 Flash 应用程序是 as2,而不是 as3,以防相关。

最佳答案

咬牙切齿:

git 克隆 git://git.sv.gnu.org/gnash.git

在构建它之前你需要一堆依赖项(应该能够 apt-get 全部):

库库libboostlibagg

然后配置并构建 gnash(开源 flash 播放器)视频转储器:

咬牙切齿

./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

这将以 30fps(@30 位)和 /tmp/out.wav 写出 /tmp/out.raw(即 bgra 又名 rgb32 视频) (音轨)。

这些需要重新组合成例如mp4 使用:

ffmpeg -i /tmp/out.wav \
-f rawvideo \
-pix_fmt rgb32 \
-s:v 800x550 \
-r 30 \
-i /tmp/out \
-c:v libx264 \
-r 30 \
-b 160k \
/tmp/out.mp4

因为它是原始视频,ffmpeg 需要知道色彩空间 (rgb32)、尺寸和输入 fps。我们告诉它合并音频 (160kbps mp3),以 30fps 渲染视频。

关于javascript - 将 Flash 视频输出捕获到 mp4 文件的脚本方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20883226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com