Closed GoogleCodeExporter closed 9 years ago
I am using PyFFMPEG to open hundred of thousands of video files regularly and
I generally have no problem. The file you send to me is not supported by my
version of FFMPEG, are you sure it is supported by your ?
# I have the same behavior
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyffmpeg
>>>
r=pyffmpeg.FFMpegReader();r.open("/home/tranx/Download/actioncliptrain00001.mp4"
)
0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pyffmpeg.pyx", line 1947, in pyffmpeg.FFMpegReader.open (pyffmpeg.c:11983)
File "pyffmpeg.pyx", line 2047, in pyffmpeg.FFMpegReader.__finalize_open (pyffmpeg.c:12852)
File "pyffmpeg.pyx", line 1406, in pyffmpeg.VideoTrack.init (pyffmpeg.c:7050)
File "pyffmpeg.pyx", line 921, in pyffmpeg.Track.init (pyffmpeg.c:2986)
IOError: Unable to get decoder
>>>
# But it is normal, since FFMPEG actually don't have a codec for your file
format
$ ffplay /home/tranx/Downloads/actioncliptrain00001.mp4
FFplay version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2003-2009 Fabrice
Bellard, et al.
configuration: --extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Mar 4 2010 12:41:55, gcc: 4.4.3
/home/tranx/Downloads/actioncliptrain00001.mp4: could not open codecs
Original comment by bertrand...@gmail.com
on 15 Jul 2010 at 12:06
Ah, well this is interesting. I am able to convert the video using:
ffmpeg -i file.mp4 -vcodec mpeg4 output.avi
This was why I thought pyffmpeg should be able to open it. But when I try
ffplay like you did, I get the same error as you. If you have any ideas about
why that is, let me know, but for now I guess I will turn to the ffmpeg mailing
list.
Original comment by goodfell...@gmail.com
on 15 Jul 2010 at 1:56
Actually, it turns out ffplay works too, I was just forgetting to invoke it
with a full path so the old version was loading the file. Here's what the
latest version of ffplay does with the file:
FFplay version SVN-r24072, Copyright (c) 2003-2010 the FFmpeg developers
built on Jul 7 2010 14:31:46 with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
configuration: --enable-shared
libavutil 50.20. 0 / 50.20. 0
libavcodec 52.79. 1 / 52.79. 1
libavformat 52.73. 0 / 52.73. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.20. 1 / 1.20. 1
libswscale 0.11. 0 / 0.11. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x169d950] max_analyze_duration reached
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
'/data/lisa5/DARPA/Hollywood2/Clips/actioncliptrain00001.avi':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
Duration: 00:00:08.00, start: 0.000000, bitrate: 1402 kb/s
Stream #0.0(eng): Video: [0][0][0][0] / 0x0000, 600 tbr, 600 tbn, 600 tbc
Stream #0.1(eng): Video: mjpeg, yuvj420p, 300x200 [PAR 72:72 DAR 3:2], 1399 kb/s, 24.99 fps, 25 tbr, 600 tbn, 600 tbc
[ffplay_output @ 0x16bc960] auto-inserting filter 'auto-inserted scaler 0'
between the filter 'src' and the filter 'out'
[scale @ 0x1687980] w:300 h:200 fmt:yuvj420p -> w:300 h:200 fmt:yuv420p
flags:0x4
1279551496.26 A-V: 0.000 s:0.0 aq= 0KB vq= 31KB sq= 0B f=0/0
Original comment by goodfell...@gmail.com
on 19 Jul 2010 at 2:58
Hence, if you have two versions of FFPLAY/FFMPEG on your system it may mean
that
your pyffmpeg module is not linked with the "latest" version.
Can you provide me the output of ldd on your latest version FFPLAY and run ldd
on your pyffmpeg.so file.
Original comment by bertrand...@gmail.com
on 19 Jul 2010 at 3:06
ldd on pyffmpeg.so:
linux-vdso.so.1 => (0x00007fff13550000)
libavformat.so.52 => /u/goodfeli/ffmpeg/libavformat/libavformat.so.52 (0x00007fe16d99d000)
libavcodec.so.52 => /u/goodfeli/ffmpeg/libavcodec/libavcodec.so.52 (0x00007fe16cd71000)
libavutil.so.50 => /u/goodfeli/ffmpeg/libavutil/libavutil.so.50 (0x00007fe16cb5d000)
libswscale.so.0 => /u/goodfeli/ffmpeg/libswscale/libswscale.so.0 (0x00007fe16c929000)
libpython2.5.so.1.0 => /usr/lib64/libpython2.5.so.1.0 (0x00007fe16c58b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe16c370000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe16c003000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe16bd7e000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fe16bb6e000)
libz.so.1 => /lib64/libz.so.1 (0x00007fe16b958000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe16b754000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fe16b551000)
/lib64/ld-linux-x86-64.so.2 (0x0000003787400000)
ldd on latest version of ffplay:
linux-vdso.so.1 => (0x00007fff001ff000)
libavdevice.so.52 => /u/goodfeli/ffmpeg/libavdevice/libavdevice.so.52 (0x00007f2a708e0000)
libavfilter.so.1 => /u/goodfeli/ffmpeg/libavfilter/libavfilter.so.1 (0x00007f2a706d2000)
libavformat.so.52 => /u/goodfeli/ffmpeg/libavformat/libavformat.so.52 (0x00007f2a70405000)
libavcodec.so.52 => /u/goodfeli/ffmpeg/libavcodec/libavcodec.so.52 (0x00007f2a6f7d8000)
libswscale.so.0 => /u/goodfeli/ffmpeg/libswscale/libswscale.so.0 (0x00007f2a6f5a5000)
libavutil.so.50 => /u/goodfeli/ffmpeg/libavutil/libavutil.so.50 (0x00007f2a6f391000)
libm.so.6 => /lib64/libm.so.6 (0x0000003788a00000)
libSDL-1.2.so.0 => /usr/lib64/libSDL-1.2.so.0 (0x0000003787c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003789200000)
libc.so.6 => /lib64/libc.so.6 (0x0000003788600000)
libasound.so.2 => /lib64/libasound.so.2 (0x000000379a200000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003b0b400000)
libz.so.1 => /lib64/libz.so.1 (0x0000003789600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003788e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003787400000)
librt.so.1 => /lib64/librt.so.1 (0x000000378b200000)
Original comment by goodfell...@gmail.com
on 19 Jul 2010 at 3:31
The libraries loaded are apparently the same. It may be useful to libavfilter
and libavdevice to the dependencies of the project in case the codec would
require a dependency from one these file, to see if it changes something but it
is very unlikely.
I will try to upgrade my ffmpeg to the latest version, and check if I can read
your file with my ffplay / try to reproduce the error.
Original comment by bertrand...@gmail.com
on 19 Jul 2010 at 3:41
I had the same problem (in fact I wasn't able to open any file [of the two I
tested], but ffmpeg cli tools worked fine). Investigation showed, that
avcodec_find_decoder always returned null. av_register_all got called, so it
should work!?
I finally saw, that pyffmpeg is linked against libavformat *and* explicitly
against libavcodec, which is a bad thing, because in the order of linking
(-lavformat -lavcodec) you suddenly have two different libavcodec in memory and
the initialized one isn't used...
Removing avcodec from libs in setup.py resolved the issue for me.
Original comment by md...@gmx.de
on 27 Jan 2011 at 8:13
Thanks for this very useful and interesting comment. I will check how many
issues it solves...
Original comment by bertrand...@gmail.com
on 1 Feb 2011 at 3:04
Original comment by martin.h...@gmail.com
on 17 Mar 2011 at 11:46
Original issue reported on code.google.com by
goodfell...@gmail.com
on 14 Jul 2010 at 8:35Attachments: