Mahesh
Mahesh

Reputation: 1593

FFMPEG - Images to Video

ffmpeg -f image2 -r 15 -i images/img%03d.jpg -vcodec libx264 video.mp4

I run this code with exec in php.

I am not getting the output. The video.mp4 is blank.

However if i modify this commade to something like this,

ffmpeg -f image2 -i i.jpg -vcodec libx264 -t 15 video.mp4

The video is running for 15 seconds.

I tried -r 1/15. It is not working too. Where do i do the mistake?

<?php
$command = "/usr/bin/ffmpeg -f image2 -r 15 -i images/img%03d.jpg -vcodec libx264 video.mp4";
exec($command);
?>

images folder has img001.jpg img002.jpg ... img005.jpg

Array
(
[0] => ffmpeg version N-48645-gf3c9d8d Copyright (c) 2000-2013 the FFmpeg developers
[1] =>   built on Jan  9 2013 04:08:32 with gcc 4.7 (Debian 4.7.2-5)
[2] =>   configuration: --extra-cflags=-I../static/include --extra-ldflags='-L../static/lib -static' --enable-gpl --enable-version3 --enable-static --disable-shared --disable-debug --enable-runtime-cpudetect --disable-x11grab --enable-libmp3lame --enable-libx264 --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --disable-ffserver
[3] =>   libavutil      52. 13.100 / 52. 13.100
[4] =>   libavcodec     54. 86.100 / 54. 86.100
[5] =>   libavformat    54. 59.106 / 54. 59.106
[6] =>   libavdevice    54.  3.102 / 54.  3.102
[7] =>   libavfilter     3. 32.100 /  3. 32.100
[8] =>   libswscale      2.  1.103 /  2.  1.103
[9] =>   libswresample   0. 17.102 /  0. 17.102
[10] =>   libpostproc    52.  2.100 / 52.  2.100
[11] => Input #0, image2, from 'images/img%03d.jpg':
[12] =>   Duration: 00:00:45.00, start: 0.000000, bitrate: N/A
[13] =>     Stream #0:0: Video: mjpeg, yuvj420p, 200x300 [SAR 1:1 DAR 2:3], 0.07 fps, 0.33 tbr, 0.07 tbn, 0.07 tbc
[14] => [libx264 @ 0x3283080] using SAR=1/1
[15] => [libx264 @ 0x3283080] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[16] => [libx264 @ 0x3283080] profile High, level 1.2
[17] => [libx264 @ 0x3283080] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - 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=-2 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=1 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.00
[18] => Output #0, mp4, to 'videos/video.mp4':
[19] =>   Metadata:
[20] =>     encoder         : Lavf54.59.106
[21] =>     Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuvj420p, 200x300 [SAR 1:1 DAR 2:3], q=-1--1, 16384 tbn, 0.07 tbc
[22] => Stream mapping:
[23] =>   Stream #0:0 -> #0:0 (mjpeg -> libx264)
[24] => Press [q] to stop, [?] for help
[25] => Input stream #0:0 frame changed from size:200x300 fmt:yuvj420p to size:200x300 fmt:yuvj444p
[26] => frame=    3 fps=0.0 q=-1.0 Lsize=      43kB time=00:00:15.00 bitrate=  23.2kbits/s
[27] => video:42kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.912722%
[28] => [libx264 @ 0x3283080] frame I:1     Avg QP:18.97  size: 13250
[29] => [libx264 @ 0x3283080] frame P:2     Avg QP:18.68  size: 14368
[30] => [libx264 @ 0x3283080] mb I  I16..4:  0.8% 81.4% 17.8%
[31] => [libx264 @ 0x3283080] mb P  I16..4:  0.0% 84.8% 15.2%  P16..4:  0.0%  0.0%  0.0%  0.0%  0.0%    skip: 0.0%
[32] => [libx264 @ 0x3283080] 8x8 transform intra:83.7%
[33] => [libx264 @ 0x3283080] coded y,uvDC,uvAC intra: 96.4% 99.2% 97.6%
[34] => [libx264 @ 0x3283080] i16 v,h,dc,p:  0%  0% 100%  0%
[35] => [libx264 @ 0x3283080] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 18% 13%  5%  8% 11%  8% 10%  7%
[36] => [libx264 @ 0x3283080] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 14%  9%  7%  9% 13%  8%  7%  7%
[37] => [libx264 @ 0x3283080] i8c dc,h,v,p: 45% 17% 26% 12%
[38] => [libx264 @ 0x3283080] Weighted P-Frames: Y:0.0% UV:0.0%
[39] => [libx264 @ 0x3283080] kb/s:7.46

)

Upvotes: 0

Views: 1142

Answers (2)

Arfan Mirza
Arfan Mirza

Reputation: 686

Forcing the frame rate for both input (before -i) and output (before the output file name) only reliably works when you use raw input files, such as h.264 bitstreams, where you explicitly need to tell FFmpeg what frame rate you expect.

The actual option you should use for image2 is -framerate:

ffmpeg -framerate 25 -i thum-%04d.jpg -r 25 -c:v libx264 out1.mp4

Upvotes: 0

Robert Rowntree
Robert Rowntree

Reputation: 6289

try using

-loop 1

and

-r 1/4

and see what u get then

Upvotes: 1

Related Questions