使用ffmpeg将swf文件转换为mp4

时间:2015-10-15 14:58:45

标签: flash command-line ffmpeg command-line-arguments mp4

我需要使用ffmpeg命令(命令行)将swf文件转换为mp4文件。 swf文件中有文本也必须转换。 但是当我使用以下ffmpeg命令转换文件时swf文件中的文本没有转换为mp4 / mp4文件中没有文字可见:

ffmpeg -i file.swf video.mp4

还有其他命令来转换文本吗?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。我的走动就是使用 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

答案 1 :(得分:4)

swf不支持swf中的shapes and sprites。它只能转换public static void main(String arg[]) throws IOException{ String url = "http://localhost/chartsTest/test.html"; WebClient wc = new WebClient(); HtmlPage p = null; try { System.out.println("Attempting to load page: " + url); p = wc.getPage(url); System.out.println("Sucsess!"); } catch (Exception e) { System.err.println("Failed to get page"); } JavaScriptJobManager m = p.getEnclosingWindow().getJobManager(); int c; while ((c = m.getJobCount()) > 0){ System.out.println("Jobs: " + c); try { Thread.sleep(1000); } catch (InterruptedException e) {} } div = p.getHtmlElementById("test"); content = div.asText(); System.out.println(content); wc.close(); } 文件中包含的视频(Sorenson Spark,VP6),音频(pcm,adpcm,mp3)和图像(jpeg)。您必须寻找其他工具。