Giter Site home page Giter Site logo

cannot import about pyffmpeg HOT 17 CLOSED

ssurui avatar ssurui commented on July 28, 2024
cannot import

from pyffmpeg.

Comments (17)

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
A) 
Which version are you using (b) ? ("stable" or "newversion_beta")

B)
I tried on one of my laptop running ubuntu 9.04, 
I did not have any problem compiling nor importing.

The source code does not contain any reference to the "av_reduce" function.
Thus, it seems more like your problem is due to a linking of incompatible 
versions of different libraries.

Please verify your are using latest FFMPEG, with latest SWSCALE.
Reinstall and retry.


If you still have problems 
For confirmation, that there is no hidden reference in macros or anything 
similar,
can you do so :

I am assuming you are using default ake "stable" :

cd stable
python setup.py build_ext 
nm build/*/pyffmpeg.o
ldd build/*/pyffmpeg.so

and please send me the output for reference 


Original comment by [email protected] on 10 Jan 2010 at 4:47

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024

Original comment by [email protected] on 10 Jan 2010 at 4:47

  • Added labels: Priority-Low
  • Removed labels: Priority-Medium

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
I'm using newversion_beta.

It seemed to compile and install fine, but I'm not using the apt packages for my
ubuntu distro. Ffmpeg and the libraries were manually compiled from the latest 
svn.

Original comment by [email protected] on 10 Jan 2010 at 5:28

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Please send me the outputs of "nm" and "ldd" on your system.



cd newversion_beta
python setup.py build_ext 
echo "NM OUTPUT:"
nm build/*/*.o | grep av_reduce
echo "LDD OUTPUT :"
ldd build/*/pyffmpeg.so



It should help a lot to understand what's going on.
But again it seems like linking of incompatible 
versions of libraries.

I know some part of the fraction related API has been deprecated in FFMPEG,
av_reduce is probably such function, and thus is not in your latest svn release.
The question is which file is actually asking for "av_reduce".

It may be caused by : (1) another library (then ldd will help us to know), (2) 
by
some inline function, in an include file, then nm will help us to know.


Original comment by [email protected] on 10 Jan 2010 at 6:58

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
for: ldd build/*/pyffmpeg.so

linux-gate.so.1 =>  (0xffffe000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7524000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb73c1000)
/lib/ld-linux.so.2 (0xb7fc0000)

for:  nm build/*/*.o | grep av_reduce

there is no output. Doesn't matter if i run build or build_ext

Original comment by [email protected] on 10 Jan 2010 at 6:47

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
right now my ffmpeg is compiled with shared libraries off, should they be on?

Original comment by [email protected] on 10 Jan 2010 at 6:48

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
The shared libraries are not required as long as your pyffmpeg managed to be 
build
correctly.
However, the resulting pyffmpeg may be a bit large, and I believe I would prefer
shared libraries,
but this kind of choices depends mainly on your needs.

The fact you don't have any reference in the ".o" files to "av_reduce" proves 
that is
not the 
compiled code of pyffmpeg that is requesting for "av_reduce", it is an external
library that
is bundled to "pyffmpeg.so" during its linking

The most likely hypothesis is that you have multiple versions of FFMPEG, on 
your system
and that we are using half of the library of one version and half libraries of 
the
other version :

Check where are the possible files by using locate :

locate libavformat. libavcodec. libswscale. libavutil.

If you have only one library for each of them, try applying nm on the static 
library
file 

nm libavcodec.a | grep av_reduce                                     #< for 
instance
nm libavutil.a | grep av_reduce                                      #< for 
instance
nm libavformat.a | grep av_reduce                                      #< for 
instance
nm libswscale.a | grep av_reduce                                     #< for 
instance



However, in order to see them in the LDD, it is required.
For info, here is the LDD output on my home computer :
        linux-gate.so.1 =>  (0xb7f8f000)
        libavformat.so.1d => /usr/lib/libavformat.so.1d (0xb7e9b000)
        libavcodec.so.1d => /usr/lib/libavcodec.so.1d (0xb79c0000)
        libswscale.so.1d => /usr/lib/libswscale.so.1d (0xb797f000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7967000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7818000)
        libavutil.so.1d => /usr/lib/libavutil.so.1d (0xb780e000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb77e9000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb77d4000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0xb77ce000)
        libdc1394_control.so.13 => /usr/lib/libdc1394_control.so.13 (0xb77bf000)
        liba52-0.7.4.so => /usr/lib/liba52-0.7.4.so (0xb77b4000)
        libgsm.so.1 => /usr/lib/libgsm.so.1 (0xb77a7000)
        libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0xb7712000)
        libtheora.so.0 => /usr/lib/libtheora.so.0 (0xb76ca000)
        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xb76a2000)
        libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0xb75a9000)
        libxvidcore.so.4 => /usr/lib/libxvidcore.so.4 (0xb7491000)
        libx264.so.57 => /usr/lib/libx264.so.57 (0xb7406000)
        libfaac.so.0 => /usr/lib/libfaac.so.0 (0xb73f5000)
        /lib/ld-linux.so.2 (0xb7f90000)
        libraw1394.so.8 => /usr/lib/libraw1394.so.8 (0xb73ee000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb7307000)
        libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb7305000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb72ed000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb72e9000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb72e5000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb72e0000)


Original comment by [email protected] on 10 Jan 2010 at 7:18

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Note also that an other hypothesis is that you may have an old version of 
pyffmpeg on
your system, 
that would imported before the new module.

locate pyffmpeg.so

You may check which file is imported by running python -v


Original comment by [email protected] on 10 Jan 2010 at 7:23

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
I checked for multiple versions of pyffmpeg.so and ffmpeg and there's only one 
copy
of both. When I do a python -v, python is doing a dlopen on the only copy of
pyffmpeg.so. 

I also did nm on 
pyffmpeg.so(/usr/local/lib/python2.6/dist-packages/pyffmpeg.so) that
is being called by python and it gave me 1 reference to av_reduce. 

I did a nm on the 4 libraries:

nm libavcodec.a | grep av_reduce
 returned 4 references

nm libavutil.a | grep av_reduce
 returned 1 reference

nm libavformat.a | grep av_reduce
 returned 11 references




Original comment by [email protected] on 10 Jan 2010 at 7:37

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Ok this is very weird but the problem went away by itself. I have no idea how 
or why
but now it imports fine. I did a rebuild/reinstall which is the only thing i can
think off that I did today, but the thing is I installed pyffmpeg multiple times
yesterday.

Original comment by [email protected] on 10 Jan 2010 at 7:40

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Ok i found out something.

I have the svn copy in /tmp/pyffmpeg

If i run python, and "import pyffmpeg" from the current directory of 
"/tmp/pyffmpeg"
the av_reduce error shows up.

If i do it anywhere else like /, /tmp, ~ the av_reduce error goes away.


Original comment by [email protected] on 10 Jan 2010 at 7:55

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Well, happy to know, we have an explanation.

--- 

If you have a directory "pyffmpeg" containing an "__init__.py"
a file pyffmpeg.py or "pyffmpeg.so" in your current directories,
these one will become more prioritary than your file.

---

Regarding the reference to av_reduce in your ffmpeg files, 
this proves that the av_reduce functions seems to be actually still implemented 
and used.

Original comment by [email protected] on 11 Jan 2010 at 1:43

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024

Original comment by [email protected] on 11 Jan 2010 at 1:45

  • Changed state: Invalid
  • Added labels: Priority-Medium
  • Removed labels: Priority-Low

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024

Original comment by [email protected] on 11 Jan 2010 at 3:18

  • Changed state: New

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
I would like to have the output the details of your nm commands on your ffmpeg
libraries :
i.e. what where the "references" in :

# nm libavcodec.a | grep av_reduce
#   returned 4 references
#                                    
# nm libavutil.a | grep av_reduce
#   returned 1 reference
#
# nm libavformat.a | grep av_reduce
#   returned 11 references



Original comment by [email protected] on 11 Jan 2010 at 5:55

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Well those are the number of av_reduce references.

Do you want me to post the entire nm output?

Original comment by [email protected] on 11 Jan 2010 at 3:05

from pyffmpeg.

GoogleCodeExporter avatar GoogleCodeExporter commented on July 28, 2024
Ok thanks :
I have checked your issue the "avutil" lib was missing in the setup.py



I wanted do check have something like this :
[tranx@xxxx lib]$ nm libavcodec.a | grep av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
[tranx@xxxx lib]$ nm libavutil.a | grep av_reduce
00000000000000e0 T av_reduce
[tranx@xxxx lib]$  nm libavformat.a | grep av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce
                 U av_reduce

The only thing that was important to me was
[tranx@xxxx lib]$ nm libavutil.a | grep av_reduce
00000000000000e0 T av_reduce


Which proves that you have effectively a function "av_reduce" implemented 
somewhere
in your computer in the libavutil library.

I was thinking that the avutil library was inside of the setup.py 
while it was not. This explains why you had this problem. 
In the dynamic library version, the other library where including the necessary
libraries for us.

This error means that you may need to include other static libraries.
If so please let me know so that we can update the setup.py of the project 
accordingly.
"                 U av_reduce" lines
then it means you have no "av_reduce" implementation on your system and then
something is wrong with your FFMPEG compilation.

Original comment by [email protected] on 12 Jan 2010 at 7:44

  • Changed state: Fixed

from pyffmpeg.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.