dukebw / lintel

A Python module to decode video frames directly, using the FFmpeg C API.
Apache License 2.0
261 stars 38 forks source link

Compiler error on install #33

Open josealb opened 5 years ago

josealb commented 5 years ago

I have installed lintel successfully on my local MacOS computer, but I'm having trouble deploying it on an Ubuntu instance. I get the following compiler error when installing:

/source# pip3 install --editable lintel --user
Obtaining file:///source/lintel
Requirement already satisfied (use --upgrade to upgrade): Click in /root/.local/lib/python3.5/site-packages (from Lintel===1.0)
Requirement already satisfied (use --upgrade to upgrade): numpy in /root/.local/lib/python3.5/site-packages (from Lintel===1.0)
Installing collected packages: Lintel
  Running setup.py develop for Lintel
    Complete output from command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/source/lintel/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --user --prefix=:
    running develop
    running egg_info
    writing Lintel.egg-info/PKG-INFO
    writing dependency_links to Lintel.egg-info/dependency_links.txt
    writing entry points to Lintel.egg-info/entry_points.txt
    writing top-level names to Lintel.egg-info/top_level.txt
    writing requirements to Lintel.egg-info/requires.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'Lintel.egg-info/SOURCES.txt'
    writing manifest file 'Lintel.egg-info/SOURCES.txt'
    running build_ext
    building '_lintel' extension
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DMAJOR_VERSION=1 -DMINOR_VERSION=0 -UNDEBUG -I/usr/include/ffmpeg -Ilintel -I/usr/include/python3.5m -c lintel/py_ext/lintelmodule.c -o build/temp.linux-x86_64-3.5/lintel/py_ext/lintelmodule.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DMAJOR_VERSION=1 -DMINOR_VERSION=0 -UNDEBUG -I/usr/include/ffmpeg -Ilintel -I/usr/include/python3.5m -c lintel/core/video_decode.c -o build/temp.linux-x86_64-3.5/lintel/core/video_decode.o
    lintel/core/video_decode.c: In function 'receive_frame':
    lintel/core/video_decode.c:42:18: warning: implicit declaration of function 'avcodec_receive_frame' [-Wimplicit-function-declaration]
             status = avcodec_receive_frame(vid_ctx->codec_context,
                      ^
    lintel/core/video_decode.c:55:34: warning: implicit declaration of function 'avcodec_send_packet' [-Wimplicit-function-declaration]
                             status = avcodec_send_packet(vid_ctx->codec_context,
                                      ^
    lintel/core/video_decode.c: In function 'find_video_stream_index':
    lintel/core/video_decode.c:365:33: error: 'AVStream {aka struct AVStream}' has no member named 'codecpar'
                     if (video_stream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
                                     ^
    lintel/core/video_decode.c: In function 'open_video_codec_ctx':
    lintel/core/video_decode.c:415:56: error: 'AVStream {aka struct AVStream}' has no member named 'codecpar'
             video_codec = avcodec_find_decoder(video_stream->codecpar->codec_id);
                                                            ^
    lintel/core/video_decode.c:423:18: warning: implicit declaration of function 'avcodec_parameters_to_context' [-Wimplicit-function-declaration]
             status = avcodec_parameters_to_context(codec_context,
                      ^
    lintel/core/video_decode.c:424:60: error: 'AVStream {aka struct AVStream}' has no member named 'codecpar'
                                                    video_stream->codecpar);
                                                                ^
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
Command "/usr/bin/python3 -c "import setuptools, tokenize;__file__='/source/lintel/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --user --prefix=" failed with error code 1 in /source/lintel/
You are using pip version 8.1.1, however version 19.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

I had an older version of ffmpeg installed and thought that could be the problem, but I updated it to ffmpeg version 4.1.3 and it's still happening

josealb commented 5 years ago

The solution seems to be installing ffmpeg version 3 and then lintel. It does not work with ffmpeg 4