使用ffmpeg将swf文件转换为mp4

7

我需要使用ffmpeg命令行将swf文件转换为mp4文件。同时,需要转换swf文件中的文本内容。但是,当我使用以下ffmpeg命令进行转换时,swf文件中的文本内容未能被转换到mp4文件中,mp4文件中没有看到文本内容:

ffmpeg -i file.swf video.mp4

有没有其他命令可以转换文本?

经过数小时的搜索,我找到了这个应用程序,它可以将.swf转换为mp4和html5,并且声音和所有内容都同步,还支持批量转换其他格式:iDealshare_VideoGo_6.0.6.5638 - Lod
2个回答

8

我曾经遇到过同样的问题。我的解决方法是使用gnash的原始输出。

以下bash脚本概述了单个步骤。

#!/bin/bash

SWFFILE=$1
MP4FILE=${SWFFILE%.*}.mp4
TMPFILE=/tmp/$(cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w 32 | head -n 1).bin
TMPMP4=/tmp/$(cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w 32 | head -n 1).mp4

# create raw-dump
GNASHCMD="dump-gnash -1 -r 1 -D $TMPFILE $SWFFILE"
OUTPUT="$(exec $GNASHCMD)"

# extract parameters
WIDTH="$(echo $OUTPUT | grep -o 'WIDTH=[^, }]*' | sed 's/^.*=//')"
HEIGHT="$(echo $OUTPUT | grep -o 'HEIGHT=[^, }]*' | sed 's/^.*=//')"
FPS="$(echo $OUTPUT | grep -o 'FPS_ACTUAL=[^, }]*' | sed 's/^.*=//')"

# create raw, uncompressed mp4 file
mplayer $TMPFILE -vo yuv4mpeg:file=$TMPMP4 -demuxer rawvideo -rawvideo fps=$FPS:w=$WIDTH:h=$HEIGHT:format=bgra

# create compressed mp4 (ffmpeg should work as well)
avconv -i $TMPMP4 $MP4FILE

# clean up
rm -rf $TMPFILE
rm -rf $TMPMP4

如何在您的示例中将声音包含到结果MP4中? - Aleksey Kontsevich

6

ffmeg 不支持 swf 文件中的 形状和精灵。它只能转换 swf 文件中包含的视频(Sorenson Spark,VP6)、音频(pcm,adpcm,mp3)和图像(jpeg)。您需要寻找另一种工具。


谢谢您的回复!您知道还有哪些其他工具可以进行转换吗? - Hussnain
很遗憾,我不知道任何第三方工具。如果我没记错的话,Adobe Flash有将动画导出为视频的选项。 - aergistal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接