Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ffmpeg pipe:0: could not find codec parameters

Tags:

When i run this command i get an error. If i run without the pipe, it works.

With Pipe

cat mymovie.m4v | ffmpeg -i pipe:0 -an -analyzeduration 1000000 -f image2 -vf 
"select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr 'public/files/thumb%04d.png'

Without Pipe (Works)

ffmpeg -i mymovie.m4v -an -analyzeduration 2147483647 -probesize 2147483647 -f image2 -vf 
"select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr 'public/files/thumb%04d.png'

Output

ffmpeg version 2.2 Copyright (c) 2000-2014 the FFmpeg developers
built on Apr 10 2014 17:50:46 with Apple LLVM version 5.1 (clang-503.0.38) 
(based on LLVM 3.4svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2 
--enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree 
--enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang 
--host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame 
--enable-libxvid --enable-libfreetype --enable-libtheora --enable-libvorbis 
--enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libvo-aacenc --enable-libass --enable-ffplay --enable-libspeex 
--enable-libschroedinger --enable-libfdk-aac --enable-libopus --enable-frei0r 
--enable-libopenjpeg --extra-cflags='-

I/usr/local/Cellar/openjpeg/1.5.1_1/include/openjpeg-1.5 '
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libavresample   1.  2.  0 /  1.  2.  0
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd87b80f000] stream 0, offset 0x2c: partial file
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd87b80f000] Could not find codec parameters for stream 0
(Video: h264 (avc1 / 0x31637661), 1280x720, 3310 kb/s): unspecified pixel format

Consider increasing the value for the 'analyzeduration' and 'probesize' options pipe:0: could not find codec parameters

I have tried setting (link)

-analyzeduration100 -probesize 10000000 
-analyzeduration 2147483647 -probesize 2147483647

Still didn't work.

like image 860
dre Avatar asked Apr 11 '14 02:04

dre


1 Answers

MP4 container is not the best choice for piping. The muxer that made the MP4 file may place certain info at the end of the file. This info is required for proper demuxing, but is not immediately available if using a pipe. However, you have a few options:

Don't use a pipe

I don't know why you need to use a pipe in the first place. Just use the file as a normal input:

ffmpeg -i input.mp4 ...

Don't use MP4

If you must use a pipe then consider using some other container such as .mkv or .ts for your input.

Re-mux your MP4 then pipe

If you must use MP4 then one method is to re-arrange the moov atom so it is at the beginning of the file:

ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4
like image 112
llogan Avatar answered Sep 20 '22 06:09

llogan