打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
using ffmpeg image2pipe with phantomjs to render video from webpage screenshots
I am trying to use phantomjs with ffmpeg to complie videos from screenshots of a webpage as described here: https://groups.google.com/forum/#!msg/phantomjs/wluVGGjhL90/oGBXqh7QP44J
I have the following test.js file:
var page = require('webpage').create();page.clipRect = { top: 0, left: 0, width: 900, height: 800};page.viewportSize = { width: 900, height: 800};var url = 'http://dl.dropbox.com/u/621993/voronoi/voronoi.html';var frames = 100;page.open(url, function(){ setInterval(function(){ page.render('/dev/stdout'); if( frames == 0 ){ phantom.exit(); } frames--; }, 100);});Then I run this command, taken from the link above:
$ phantomjs test.js |ffmpeg -c:v png -f image2pipe -r 10 -sameq -i - -y test.mp4Including -sameq causes an error in ffmpeg, so I took it out and ran:
$ phantomjs test.js |ffmpeg -c:v png -f image2pipe -r 10 -i - -y test.mp4I get the following output from ffmpeg:
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 22 2013 09:14:18 with llvm-gcc 4.2.1 (LLVM build 2336.11.00) configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --arch=x86_64 --enable-runtime-cpudetect libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100Input #0, image2pipe, from 'pipe:': Duration: N/A, bitrate: N/A Stream #0:0: Video: png, rgba, 900x800 [SAR 2835:2835 DAR 9:8], 10 fps, 10 tbr, 10 tbn, 10 tbcNo pixel format specified, yuv444p for H.264 encoding chosen.Use -pix_fmt yuv420p for compatibility with outdated media players.[libx264 @ 0x7f8973803800] using SAR=1/1[libx264 @ 0x7f8973803800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX[libx264 @ 0x7f8973803800] profile High 4:4:4 Predictive, level 3.1, 4:4:4 8-bit[libx264 @ 0x7f8973803800] 264 - core 133 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00Output #0, mp4, to 'test.mp4': Metadata: encoder : Lavf55.12.100 Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv444p, 900x800 [SAR 1:1 DAR 9:8], q=-1--1, 10240 tbn, 10 tbcStream mapping: Stream #0:0 -> #0:0 (png -> libx264)pipe:: Input/output error0 size= 65kB time=00:00:04.10 bitrate= 130.5kbits/s frame= 93 fps= 15 q=-1.0 Lsize= 71kB time=00:00:09.10 bitrate= 63.8kbits/s video:69kB audio:0kB subtitle:0 global headers:0kB muxing overhead 2.696543%[libx264 @ 0x7f8973803800] frame I:1 Avg QP:15.17 size: 50212[libx264 @ 0x7f8973803800] frame P:24 Avg QP: 8.91 size: 575[libx264 @ 0x7f8973803800] frame B:68 Avg QP: 9.69 size: 87[libx264 @ 0x7f8973803800] consecutive B-frames: 2.2% 0.0% 3.2% 94.6%[libx264 @ 0x7f8973803800] mb I I16..4: 64.2% 19.6% 16.1%[libx264 @ 0x7f8973803800] mb P I16..4: 2.8% 0.2% 0.1% P16..4: 0.5% 0.0% 0.0% 0.0% 0.0% skip:96.3%[libx264 @ 0x7f8973803800] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 3.1% 0.0% 0.0% direct: 0.0% skip:96.9% L0:76.4% L1:23.6% BI: 0.0%[libx264 @ 0x7f8973803800] 8x8 transform intra:13.9% inter:54.0%[libx264 @ 0x7f8973803800] coded y,u,v intra: 7.4% 4.8% 5.2% inter: 0.1% 0.1% 0.1%[libx264 @ 0x7f8973803800] i16 v,h,dc,p: 68% 31% 2% 0%[libx264 @ 0x7f8973803800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 48% 20% 32% 0% 0% 0% 0% 0% 0%[libx264 @ 0x7f8973803800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 31% 20% 3% 3% 3% 5% 3% 4%[libx264 @ 0x7f8973803800] Weighted P-Frames: Y:0.0% UV:0.0%[libx264 @ 0x7f8973803800] ref P L0: 91.9% 0.0% 7.4% 0.7%[libx264 @ 0x7f8973803800] ref B L0: 20.5% 79.5%[libx264 @ 0x7f8973803800] ref B L1: 99.9% 0.1%[libx264 @ 0x7f8973803800] kb/s:60.16The output test.mp4 file is a blank 10 second video - just a black screen. From what i can tell, I am getting a pipe:: Input/output error from ffmpeg.
I am pretty new to ffmpeg and I have tried changing some parameters and video codecs in the ffmpeg call, but have not found a solution yet. Can anyone advise?
I got this to work by adding -pix_fmt yuv420p to the command:
$ phantomjs test.js | ffmpeg -y -c:v png -f image2pipe -r 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart test.mp4Otherwise the output will use a chroma subsampling type (yuv444p in this case) that is not compatible with "dumb" players like QuickTime which require yuv420p – YUV color space with 4:2:0 chroma subsampling.
Adding -movflags +faststart as an input option will allow the video to begin playing by the viewer before it is completely downloaded. Useful if the video will be viewed in a browser.
Default encoding settings for libx264 will be used in this example resulting in H.264 video. See theFFmpeg and x264 Encoding Guide for more information on controlling quality and encoding speed.
Do not use -sameq: it does not mean "same quality" and has been removed from non-ancient ffmpeg (also you were using it as an input option). With libx264 use -crf instead as shown in the FFmpeg and x264 Encoding Guide. By default ffmpeg will try to avoid or minimize chroma subsampling, but "dumb" players like QuickTime can typical only decode YUV planar color space with 4:2:0 chroma subsampling. – LordNeckbeard Nov 3 '13 at 23:57
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ffmpeg 编码H265和H264对比
nginx + ffmpeg 搭建m3u8服务器
ffmpeg + x264 编码H264 (arm Linux) 转载
ffmpeg与x264编码指南
StreamingGuide – FFmpeg
将视频从隔行扫描转为逐行扫描
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服