27

swf をロスレスの mp4 に変換するバッチ スクリプトを探しています。ffmpegとhandbrakeの両方を使ってみたのですが、どうやらswfが圧縮されていてこの方法では変換できません。

ffmpeg -i input -c:v libx264 -preset ultrafast -qp 0 output.mkv

HandBrakeCLI -i source -o destination

xilisoft のようなツールを使用していることは知っていますが、3000 以上のビデオがあり、これを自動的に実行する必要があります。このプロセスを自動化するのに役立つスクリプト/アルゴリズムはありますか?

4

4 に答える 4

27

ぎざぎざを取得:

git clone git://git.sv.gnu.org/gnash.git

ビルドする前に、たくさんの依存関係が必要になります (すべてを apt-get できるはずです):

libsdl-dev
libboost-dev
libagg-dev

次に、gnash ビデオ ダンパーを構成してビルドします。

cd gnash

./autogen.sh

./configure --enable-renderer=agg \
               --enable-gui=dump \
               --disable-menus \
               --enable-media=ffmpeg \
               --disable-jemalloc

make

その後、swf で dump-gnash をポイントすると、生のビデオとオーディオがレンダリングされます。

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 (ビット)/tmp/out.rawで書き出されます (これは bgra aka rgb32 ビデオです)。@30/tmp/out.wav

これらは、次を使用して、たとえば mp4 に再結合する必要があります。

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

生のビデオであるため、ffmpeg は色空間 (rga32) の次元と入力 fps を知る必要があります。オーディオ (160kbps mp3) を結合し、ビデオを 30fps でレンダリングするように指示します。

ロスレス mp4 を取得するには、追加のフラグが必要です。

于 2014-01-09T14:36:01.653 に答える
11
OS: Ubuntu (Linux)

これがロスレスかどうかは正確にはわかりませんが、少なくとも変換部分が機能しました(ffmpeg)。

依存関係

sudo apt-get install ffmpeg swftools

解凍する

最初にswfcombineを使用して解凍しました:

swfcombine -d file.swf -o file_new.swf

変換

次に、これらのパラメーターではロスレスではない可能性があるffmpegを使用して変換しました

ffmpeg -i file.swf video.mp4
于 2014-10-16T12:27:17.543 に答える