2016-10-30 5 views
1

Im urlからスクリーンショットを撮るには、setIntreval関数を使ってphantomjsを使って(今は25)、出力をffmpegにパイプする(フレームレート-r 24を使う)。 コードはこちらです。 ffmpeg.jsffmpegとphantomjsを使ってURLからムービーを作る

var page = require('webpage').create(); 
page.viewportSize = { width: 1024, height: 768 }; 

page.open('http://ewoken.github.io/Leaflet.MovingMarker/', function() { 
    setInterval(function() { 
    page.render('/dev/stdout', { format: "png" }); 
    }, 25); 
}); 

次に、これを使用してスクリプトを実行します。コマンドではImがページで10秒の映像を取得しますが、そのすべてが完全に速い最初のスピードアップなど

phantomjs ffmpeg.js | ffmpeg -y -c:v png -f image2pipe -r 24 -t 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4 

は、最後のフレームでフリーズします。

私の助けを借りて、私のページをそのまま記録することができますか?映画の中に3000のディレイアニメーションがあるように、それは滑らかでリアルタイムで映画のように現実のように見えるはずです。

ありがとうございます。これで長時間頑張ってください。

乾杯、すべての

+2

PhantomJSを維持するだろうことはできませんこのサイズのPNGスクリーンショットをリアルタイムで作成します(あなたが非常に高速なコンピュータを持っていない限り)。可能であれば、より低い解像度を使用して、フレームレートを低くし、jpgで保存することを検討してください。 – Vaviloff

答えて

1

まず、あなたはそれをコンパイルする必要があり、--enable-x11grabオプションを使用してffmpegのを持っている必要があります。

# example: 
https://gist.github.com/holms/7009218 
https://soledadpenades.com/2010/04/26/unknown-input-or-output-format-x11grab-ubuntu/ 

設定:

--prefix=/usr --enable-shared --enable-nonfree --enable-gpl --enable-libx264 --enable-version3 --enable-postproc --enable-pthreads --enable-libmp3lame --enable-libtheora --enable-libxvid --enable-x11grab --enable-libvorbis 

我々はSlimerJSを使用する必要があり、それは同様のヘッドレスブラウザではないですが、スクリプト可能:slimerjsについては

cd /root; \ 
wget http://download.slimerjs.org/releases/0.10.1/slimerjs-0.10.1.zip && unzip slimerjs-0.10.1.zip && \ 
wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/49.0.2/linux-x86_64/en-US/firefox-49.0.2.tar.bz2 && \ 
tar -vxjf firefox-49.0.2.tar.bz2 && \ 
ln -sf /root/firefox/firefox /usr/local/bin/ -v && \ 
ln -sf /root/slimerjs-0.10.1/slimerjs /usr/local/bin/ -v 

、我々は次のようsnap.jsをインストールする必要がありますスクリプト:
rm -f snap.js; nano snap.js; chmod +x snap.js; clear

var page = require('webpage').create(); 
page.viewportSize = {width: 1024,height: 768}; 
page.open('http://ewoken.github.io/Leaflet.MovingMarker/', function() { 
page.evaluate(function() {window.focus();}); 
// page.render('github.png'); 
// phantom.exit(); 
}); 

今、私たちはx virtual frame bufferをインストールする必要があるとFirefoxのためのいくつかのライブラリ:

aptitude update; aptitude install Xvfb libgtk-3-0 libasound2 libdbus-glib-1-2 -y 

は、今、私たちは新しい仮想ディスプレイ1を追加する必要があります。1:

pkill [X,x]vfb; pkill nw; Xvfb :1 -screen 1 1440x900x24 >/dev/null 2>&1 & 

(出力に多少の誤差があるでしょう場合、それは普通のことです)追加のライブラリが必要でないことを確認するために、任意のオプションなしでfirefoxを実行してみ:

killall firefox; export DISPLAY=:1.1; firefox 

その後、我々はできます
https://drive.google.com/open?id=0B_tqnSHhFPBndDJ0Y1c5THBKWkk

:私はこのビデオを持っている

killall firefox; rm -f ouput2.mp4; \ 
sleep 5; export DISPLAY=:1.1; export SLIMERJSLAUNCHER=/root/firefox/firefox; \ 
slimerjs snap.js & \ 
sleep 3; \ 
ffmpeg -f x11grab -framerate 60 -video_size 1024x768 -i :1.1 -vcodec libx264 -preset veryfast -b:v 10000k ouput2.mp4 

:スクリプトを使用します


注:以下で

https://download-installer.cdn.mozilla.net/pub/firefox/releases/49.0.2/linux-x86_64/en-US/firefox-49.0.2.tar.bz2 

:あなたは32ビットLinuxを使用している場合は、リンクを交換する必要が

https://download-installer.cdn.mozilla.net/pub/firefox/releases/49.0.2/linux-i686/en-US/firefox-49.0.2.tar.bz2 
+1

私はXサーバなしでXen DomUに取り組んだ。 OS Debian 8 Jessie、64ビット。 –

+1

[ffmpeg](https://drive.google.com/open?id=0B_tqnSHhFPBnOEtuR0txSWVwX1E)| [x264](https://drive.google.com/open?id=0B_tqnSHhFPBneWRRVVJqV2dIOTg) –

関連する問題