Stack Exchange
FFmpeg convert single image into video Android
I am trying to convert a single image into a video using FFmpeg. I have tried following the files:
"ffmpeg  -analyzeduration 2147483647 -probesize 2147483647 -i " + packat.get(i).path +"-r 25 -t 1000 -y op.mp4"

"ffmpeg -loop 1 -r 23.976 -i input.jpg -t 00:00:02 -vcodec qtrle -an output.mov"

"ffmpeg -i c:\rawvideo\mask.bmp -loop 1 -r 29.97 -s 720x480
        -aspect 4:3 -t 00:04:05 -vcodec mjpeg -vb 11261600 -an
        c:\rawvideo\fullmask.avi"

But all of them give me this annoying error:
 Can not process SOS before SOF, skipping marker parser used 0 bytes (0 bits) decode frame unused 0 bytes decoding for stream 0 failed 
Could not find codec parameters for stream 0 (Video: mjpeg): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options /storage/sdcard0/cblVE/temp/0.jpg: could not find codec parameters 
exit_program: 1 

Please help. I have searched for a solution from a week, but I have found nothing.

Add flag(Video Option and audio option flag) i.e change vcodec option mpeg4 and extra flag require -r
check this link:(
https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images)

not working, same error

i will give answer after sometimes.ok...

ok i will wait for it

ffmpeg -y -i /sdcard/img.png -loop 1 -vcodec libx264 -s 320*480 -b 1024k -t 2 -an /sdcard/test.mp4

@dipali same crash :(

@dipali but working on some images

--EDIT--

your using "-f mp4"  So, in your ffmpeg config/buid , did you ask for that ?
verfiy with "ffmpeg -formats"  and check that your build actually supports mp4.
look at your log and go to the source code for "libavcodec/mux.c" 
search line# 124 in the source func=avformat_alloc_output_context2
this is where your log error is coming from according to your pastebin #210
according to the method's line 146 and to your pastebin - you dont have a value
for 'filename' .... 
in your pastebin #209- 210 , thats a very odd filename for your output?
especially since your CLI args routine shows that an output filename was accepted by ffmpeg.c.

below was run on linux but will work on android depending on your android build of ffmpeg...
ffmpeg -y -loop 1 -t 3.03 -i ~/Pictures/yaya_speech_choose2.png   -r 1  -vcodec libx264 -b:v 200k -bt 350k   -f mp4 ~/Videos/dummy.mp4


ffmpeg version N-35901-g27a3415 Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct  7 2012 12:06:43 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab --enable-libx264 --enable-nonfree --enable-version3
  libavutil      51. 73.102 / 51. 73.102
  libavcodec     54. 64.100 / 54. 64.100
  libavformat    54. 29.105 / 54. 29.105
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 19.102 /  3. 19.102
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Input #0, image2, from '/home/rob/Pictures/yaya_speech_choose2.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 1080x1920, 25 fps, 25 tbr, 25 tbn, 25 tbc
-t is not an input option, keeping it for the next output; consider fixing your command line.
[libx264 @ 0x1e32500] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x1e32500] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264 @ 0x1e32500] 264 - core 128 r10 198a7ea - 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=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=1 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/home/rob/Videos/dummy.mp4':
  Metadata:
    encoder         : Lavf54.29.105
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 1080x1920, q=-1--1, 200 kb/s, 16384 tbn, 1 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame=    4 fps=1.8 q=32766.0 Lsize=     236kB time=00:00:02.00 bitrate= 968.3kbits/s dup=0 drop=59    
video:236kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.350287%
[libx264 @ 0x1e32500] frame I:1     Avg QP: 9.29  size:239979
[libx264 @ 0x1e32500] frame P:1     Avg QP: 9.85  size:   128
[libx264 @ 0x1e32500] frame B:2     Avg QP: 9.92  size:   192
[libx264 @ 0x1e32500] consecutive B-frames: 25.0%  0.0% 75.0%  0.0%
[libx264 @ 0x1e32500] mb I  I16..4: 36.2% 49.0% 14.7%
[libx264 @ 0x1e32500] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.1%  0.0%  0.0%  0.0%  0.0%    skip:99.8%
[libx264 @ 0x1e32500] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.3%  0.1%  0.1%  direct: 0.3%  skip:99.2%  L0:68.9% L1:31.1% BI: 0.0%
[libx264 @ 0x1e32500] final ratefactor: 24.49
[libx264 @ 0x1e32500] 8x8 transform intra:49.0% inter:92.3%
[libx264 @ 0x1e32500] coded y,u,v intra: 37.6% 27.9% 30.0% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x1e32500] i16 v,h,dc,p: 84% 10%  3%  3%
[libx264 @ 0x1e32500] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9% 67%  5%  2%  3%  2%  4%  4%  3%
[libx264 @ 0x1e32500] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 44% 10%  4%  6%  3%  8%  3%  6%
[libx264 @ 0x1e32500] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x1e32500] kb/s:480.98


look at the log. does your app have write permission at that path?
'/storage/sdcard0/cblVE/temp/a0.mp4' .

see --EDIT in my answer

BTW... i would be very suspicious of your ffmpeg build for android based on that error. Your pastebin shows it accepting the CLI args for the output file... Yet , in the mux.c class, its got null as a filename for your output file. Its as if your CLI args got lost somewhere between ffmpeg.c and mux.c. If that were to be true then you are working with a bad link or with a bad build.

It supports mp4, as i was able to cut mp4 videos using this build. And about bad output name, is "a0.mp4" a bad name for mp4? See I posted 3 commands above in the question. I was able to create videos from some images, but it crashed on some images. So, I think the name is not the issue. What do you say?

Use "-y" see if issue with out file is affected or not

Is there any other solution please?

Take look at github. 'Guardianproject' and 'halfninja' are 2 dependable ways to get to gat a working armv7a binary for ffmpeg built.

Maybe you must compile a fresh ffmpeg build and use it. Can you tell me which videokit you are using?

http://androidwarzone.blogspot.in/2011/12/ffmpeg4android.html  I am using this library.

the library may be broken, try using halfninja or build your own library.

The library may be broken. Try using HalfNinja(https://github.com/halfninja/android-ffmpeg-x264) or build your own kit from ffmpeg.

There must be some problem with your ffmpeg build. Please build a new one.
