Giter Club home page Giter Club logo

Comments (18)

jrottenberg avatar jrottenberg commented on May 29, 2024 1

It looks like you were able to compile ffmpeg. You skipped steps that added to the library path, and ended up having library path issue.

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

What do you mean ?

I'm happy to help, but spend as much effort writing your issue as you expect me to answer it. The title should be a one line summary of the issue, so please put more details on what you are trying to do and why that doesn't work.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

@jrottenberg There is a git-repository how to use ffmpeg-lib for a second develop.

leandromoreira/ffmpeg-libav-tutorial#15

It needs build the latest ffmpeg environment first. I want to use docker to build the environment. But when I pull the ffmpeg docker image, it only can run ffmpeg, can not include/call ffmpeg lib for my code compile.

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

Ah I see. Ok the image this project generates is to run ffmpeg not really to have a development environment for ffmpeg compilation, but it passes through that phase.

If you stop the docker build before the second phase, you get very close to a very valid build environment, example :

https://github.com/jrottenberg/ffmpeg/blob/master/docker-images/3.4/Dockerfile#L332

remove the lines below and use that as base image,

docker build -t dockerfile-dev ffmpeg-dev .
docker run -it -v $(pwd):/mnt ffmpeg-dev  bash

you are now on a system with all the libs and packages required to tweak ffmpeg build and develop on the core and ffmepg itself. If you go to /mnt you should find your own code to build and validate.

Let me know if that works.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

I use CentOS7.4 x64;

[lb@localhost pyuv_docker]$ uname -a
Linux localhost.localdomain 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Jan 4 01:06:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[lb@localhost pyuv_docker]$ docker -v
Docker version 1.13.1, build 28e44a9

When I build the Dockerfile, it shows the error as follow:

[lb@localhost 3.4]$ sudo docker build -t ffmpeg_u .
[sudo] password for lb:
Sending build context to Docker daemon 76.8 kB
Step 1/44 : FROM ubuntu:16.04 AS base
Error parsing reference: "ubuntu:16.04 AS base" is not a valid repository/tag: invalid reference format

Someone says the error proberly about the docker version too low.
So which docker version sould I use?

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

yeah 1.13 doesn't support multistage, but that's fine you don't need multistage builds for what you need to do, if you are more familiar with centos, copy :

https://github.com/jrottenberg/ffmpeg/blob/master/docker-images/3.4/centos/Dockerfile to dockerfile-dev , but remove the last 12 lines (everything after L330).

Also you should not use docker with sudo, just add yourself to the docker group.

But yeah beside that :

docker build -t dockerfile-dev ffmpeg-dev .
docker run -it -v $(pwd):/mnt ffmpeg-dev  bash

should work fine.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024
  1. I add my user 'lb' to docker groups

[lb@localhost centos]$ groups lb
lb : lb wheel dockerroot-latest

But still need sudo permission.

[lb@localhost centos]$ dockerd&
[1] 3086
[lb@localhost centos]$ unable to configure the Docker daemon with file /etc/docker/daemon.json: open /etc/docker/daemon.json: permission denied

  1. I try to add user 'dockerroot-latest' to root groups

[lb@localhost pyuv_docker]$ groups dockerroot-latest
dockerroot-latest : dockerroot-latest root

But still need sudo permission.

[lb@localhost pyuv_docker]$ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied

I do not know how to maker docker without sudo.

  1. I change dockerfile as follow:

Line8:
FROM centos:7 AS base
-->
FROM centos:7
Line14:
FROM base AS build
-->
#FROM base AS build

and remove the last 12 lines
save as Dockerfile

[lb@localhost centos]$ docker build --tag=ffmpeg-dev .
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/build?buildargs=%7B%7D&buildbinds=null&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=ffmpeg-dev&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied
[lb@localhost centos]$ sudo docker build --tag=ffmpeg-dev .

running..., long time waiting.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

The build is OK, but when run to 'freetype lib' download, failed.
Because I am in China, the url is blocked.
I have a shadowsocks proxy server, and on my client I config proxy port to 1081, I can visit 'freetype lib'.
Now I have two choices.

  1. Download all blocked tar.gz file, and change the docker file using local source.(I think too much need to do.)
  2. Add proxy to my dockerfile, I tried as follow:

FROM centos:7

RUN yum -y install libgomp &&
yum clean all;

#FROM base AS build
ENV http_proxy 127.0.0.1:1081
ENV https_proxy 127.0.0.1:1081

WORKDIR /tmp/workdir

ARG PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig
ARG LD_LIBRARY_PATH=/opt/ffmpeg/lib
ARG PREFIX=/opt/ffmpeg
...
...
...

failed. Info as follow:

One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

 1. Contact the upstream for the repository and get them to fix the problem.

 2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

 3. Run the command with the repository temporarily disabled
        yum --disablerepo=<repoid> ...

 4. Disable the repository permanently, so yum won't use it by default. Yum
    will then just ignore the repository until you permanently enable it
    again or use --enablerepo for temporary usage:

        yum-config-manager --disable <repoid>
    or
        subscription-manager repos --disable=<repoid>

 5. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

        yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
14: curl#7 - "Failed connect to 127.0.0.1:1081; Connection refused"

I have checked my shadowsocks client and server is running.
So how should I do to fix the error?

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

Thanks for your help.

  1. I update my docker to 17.12, ref:

#official latest version
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce.x86_64

  1. change the dockerfile. first use proxy to download freetype, then install using local source.

COPY ./freetype-${FREETYPE_VERSION}.tar.gz /
RUN
DIR=/tmp/freetype &&
mkdir -p ${DIR} &&
cd ${DIR} &&
mv /freetype-${FREETYPE_VERSION}.tar.gz ./ &&
tar -xvf ./freetype-${FREETYPE_VERSION}.tar.gz &&
cd ./freetype-${FREETYPE_VERSION} &&
./configure --prefix="${PREFIX}" --disable-static --enable-shared &&
make &&
make install &&
cd .. &&
rm -rf ${DIR}

Now I can build it OK.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

I try to run as the follow command, but failed. Is it the right command?

[lb@localhost ffmpeg-libav-tutorial-master]$ sudo docker run --rm --interactive --tty --volume="$(pwd)":/tmp/workdir --workdir=/tmp/workdir --entrypoint='bash' ffmpeg_u:s2 \

sh -c 'make '
/usr/bin/sh: /usr/bin/sh: cannot execute binary file
[lb@localhost ffmpeg-libav-tutorial-master]$ sudo docker iamges
docker: 'iamges' is not a docker command.
See 'docker --help'
[lb@localhost ffmpeg-libav-tutorial-master]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ffmpeg_u s2 b1d7bff9f44a About an hour ago 767MB
ffmpeg_u s1 483eaa5e932a 4 hours ago 517MB
centos 7 ff426288ea90 3 weeks ago 207MB

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

good method for freetype-${FREETYPE_VERSION}.tar.gz , that's the best to do given the circumstances ....

If you removed the second stage from the Dockerfile, you should not need to override entrypoint.

I'm not too sure I can read what is broken, can you paste the command you're trying and then the output with the error.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

Find an another problem, when compile x265 using cmake, the ${PREFIX} variable cannot goto the multilib.sh script.
I test the other variable, it is OK.

echo ${X265_VERSION}

I don't know why multilib.sh set PREFIX to empty?

    DIR=/tmp/x265 && \
    rm -rf ${DIR} && \
    mkdir -p ${DIR} && \
    cd ${DIR} && \
    curl -sL https://download.videolan.org/pub/videolan/x265/x265_${X265_VERSION}.tar.gz  | \
    tar -zx && \
    cd x265_${X265_VERSION}/build/linux && \
    sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\/opt\/ffmpeg/" multilib.sh && \
    sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
    ./multilib.sh && \
    make -C 8bit install 

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

hum PREFIX is defined at build time, if you have already built an image and use it to do extra work you need to define PREFIX for sure.

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

you should be all set, you worked through the main issue. Reopen otherwise.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

I refered the docker script
'https://github.com/jrottenberg/ffmpeg/blob/master/docker-images/3.4/Dockerfile',
and I changed the docker file to a shell file. Download all source files,
compile all dependency source code and ffmpeg 3.4.1 source code.

#!/bin/sh
export           PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig
           LD_LIBRARY_PATH=/opt/ffmpeg/lib
           PREFIX=/opt/ffmpeg
           MAKEFLAGS="-j4"

export         FFMPEG_VERSION=3.4.1     
export         FDKAAC_VERSION=0.1.5    
export         LAME_VERSION=3.99.5     
export         LIBASS_VERSION=0.13.7   
export         OGG_VERSION=1.3.2       
export         OPENCOREAMR_VERSION=0.1.4
export         OPUS_VERSION=1.2        
export         OPENJPEG_VERSION=2.1.2 
export         THEORA_VERSION=1.1.1   
export         VORBIS_VERSION=1.3.5  
export         VPX_VERSION=1.6.1    
export         X264_VERSION=20170226-2245-stable 
export         X265_VERSION=2.3          
export         XVID_VERSION=1.3.4       
export         FREETYPE_VERSION=2.5.5  
export         FRIBIDI_VERSION=0.19.7 
export         FONTCONFIG_VERSION=2.12.4 
export         LIBVIDSTAB_VERSION=1.1.0 
            SRC=/usr/local

            OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692  libogg-1.3.2.tar.gz"
            OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9  opus-1.2.tar.gz"
            VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce  libvorbis-1.3.5.tar.gz"
            THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b  libtheora-1.1.1.tar.gz"
            XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f  xvidcore-1.3.4.tar.gz"
            FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8  freetype-2.5.5.tar.gz"
            LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb  v1.1.0.tar.gz"
            LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7  0.13.7.tar.gz"
            FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8  0.19.7.tar.gz"


        apt-get -y update
        apt-get install -y  --no-install-recommends ca-certificates expat libgomp1
        apt-get autoremove -y
        apt-get clean -y
apt-get install -y --no-install-recommends autoconf 
apt-get install -y --no-install-recommends automake
apt-get install -y --no-install-recommends cmake 
apt-get install -y --no-install-recommends curl 
apt-get install -y --no-install-recommends bzip2 
apt-get install -y --no-install-recommends libexpat1-dev
apt-get install -y --no-install-recommends g++ 
apt-get install -y --no-install-recommends gcc 
apt-get install -y --no-install-recommends git 
apt-get install -y --no-install-recommends gperf 
apt-get install -y --no-install-recommends libtool 
apt-get install -y --no-install-recommends make 
apt-get install -y --no-install-recommends nasm 
apt-get install -y --no-install-recommends perl
apt-get install -y --no-install-recommends pkg-config 
apt-get install -y --no-install-recommends python 
apt-get install -y --no-install-recommends libssl-dev 
apt-get install -y --no-install-recommends yasm 
apt-get install -y --no-install-recommends zlib1g-dev

############LIB env
## opencore-amr https://sourceforge.net/projects/opencore-amr/
####OnLine     
#        DIR=/tmp/opencore-amr && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://downloads.sf.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \
#        tar -zx --strip-components=1 && \
#        ./configure --prefix="${PREFIX}" --enable-shared  && \
#        make && \
#        make install && \
#        rm -rf ${DIR} 
##curl -sL https://downloads.sf.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.4.tar.gz | tar -zx --strip-components=1 

####OffLine     
        DIR=opencore-amr-${OPENCOREAMR_VERSION} && \
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --enable-shared  && \
        make && \
        make install && \
        cd .. 
### x264 http://www.videolan.org/developers/x264.html
#     
#        DIR=/tmp/x264 && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264_VERSION}.tar.bz2 | \
#        tar -jx --strip-components=1 && \
#        ./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \
#        make && \
#        make install && \
#        rm -rf ${DIR}
####OffLine     
        DIR=x264-snapshot-${X264_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.bz2 && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \
        make && \
        make install && \
        cd .. 
#### x265 http://x265.org/
#     
#        DIR=/tmp/x265 && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://download.videolan.org/pub/videolan/x265/x265_${X265_VERSION}.tar.gz  | \
#        tar -zx && \
#        cd x265_${X265_VERSION}/build/linux && \
#        sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\/opt\/ffmpeg/" multilib.sh && \
#        sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
#        ./multilib.sh && \
#        make -C 8bit install 
###        rm -rf ${DIR}
####OffLine     
        DIR=x265_${X265_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR}/build/linux && \
        sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\/opt\/ffmpeg/" multilib.sh && \
        sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
        ./multilib.sh && \
        make -C 8bit install 
        cd ../../../
#### libogg https://www.xiph.org/ogg/
#     
#        DIR=/tmp/ogg && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \
#        echo ${OGG_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f libogg-${OGG_VERSION}.tar.gz && \
#        ./configure --prefix="${PREFIX}" --enable-shared  && \
#        make && \
#        make install
##        rm -rf ${DIR}
####OffLine     
        DIR=libogg-${OGG_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --enable-shared  && \
        make && \
        make install && \
        cd .. 
#### libopus https://www.opus-codec.org/
#     
#        DIR=/tmp/opus && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz && \
#        echo ${OPUS_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f opus-${OPUS_VERSION}.tar.gz && \
#        autoreconf -fiv && \
#        ./configure --prefix="${PREFIX}" --enable-shared && \
#        make && \
#        make install
##        rm -rf ${DIR}
####OffLine     
        DIR=opus-${OPUS_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        autoreconf -fiv && \
        ./configure --prefix="${PREFIX}" --enable-shared && \
        make && \
        make install && \
        cd .. 
#### libvorbis https://xiph.org/vorbis/
#     
#        DIR=/tmp/vorbis && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \
#        echo ${VORBIS_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f libvorbis-${VORBIS_VERSION}.tar.gz && \
#        ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
#        make && \
#        make install
##        rm -rf ${DIR}
####OffLine     
        DIR=libvorbis-${VORBIS_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
        make && \
        make install && \
        cd .. 
#### libtheora http://www.theora.org/
#     
#        DIR=/tmp/theora && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz && \
#        echo ${THEORA_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f libtheora-${THEORA_VERSION}.tar.gz && \
#        ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
#        make && \
#        make install
##        rm -rf ${DIR}
####OffLine     
        DIR=libtheora-${THEORA_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
        make && \
        make install && \
        cd .. 
#### libvpx https://www.webmproject.org/code/
#     
#        DIR=/tmp/vpx && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${VPX_VERSION} | \
#        tar -zx --strip-components=1 && \
#        ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-pic --enable-shared \
#        --disable-debug --disable-examples --disable-docs --disable-install-bins  && \
#        make && \
#        make install
##        rm -rf ${DIR}

#####OffLine     
        DIR=libvpx-1.6.1
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-pic --enable-shared \
        --disable-debug --disable-examples --disable-docs --disable-install-bins  && \
        make && \
        make install && \
        cd .. 
#### libmp3lame http://lame.sourceforge.net/
#     
#        DIR=/tmp/lame && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://downloads.sf.net/project/lame/lame/${LAME_VERSION%.*}/lame-${LAME_VERSION}.tar.gz | \
#        tar -zx --strip-components=1 && \
#        ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic --disable-frontend && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        DIR=lame-3.99.5
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic --disable-frontend && \
        make && \
        make install && \
        cd .. 
#### xvid https://www.xvid.com/
#     
#        DIR=/tmp/xvid && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz && \
#        echo ${XVID_SHA256SUM} | sha256sum --check && \
#        tar -zx -f xvidcore-${XVID_VERSION}.tar.gz && \
#        cd xvidcore/build/generic && \
#        ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --datadir="${DIR}" --enable-shared --enable-shared && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        DIR=xvidcore
        BASE_DIR=`pwd`
        rm -rf ./${DIR}-1.3.4
        tar -xvf ./${DIR}-1.3.4.tar.gz && \
        cd ./${DIR} && \
        cd ./build/generic && \
        ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --datadir="${BASE_DIR}/${DIR}" --enable-shared --enable-shared && \
        make && \
        make install && \
        cd ../../../ 
#### fdk-aac https://github.com/mstorsjo/fdk-aac
#     
#        DIR=/tmp/fdk-aac && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC_VERSION}.tar.gz | \
#        tar -zx --strip-components=1 && \
#        autoreconf -fiv && \
#        ./configure --prefix="${PREFIX}" --enable-shared --datadir="${DIR}" && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        BASE_DIR=`pwd`
        DIR=fdk-aac-0.1.5
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        autoreconf -fiv && \
        ./configure --prefix="${PREFIX}" --enable-shared --datadir="${BASE_DIR}/${DIR}" && \
        make && \
        make install && \
        cd .. 
## openjpeg https://github.com/uclouvain/openjpeg
     
#        DIR=/tmp/openjpeg && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sL https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz | \
#        tar -zx --strip-components=1 && \
#        cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        DIR=openjpeg-2.1.2
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
        make && \
        make install && \
        cd .. 
### freetype https://www.freetype.org/
##RUN  \
##        DIR=/tmp/freetype && \
##        mkdir -p ${DIR} && \
##        cd ${DIR} && \
##        curl -sLO http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
##        echo ${FREETYPE_SHA256SUM} | sha256sum --check && \
##        tar -zx --strip-components=1 -f freetype-${FREETYPE_VERSION}.tar.gz && \
##        ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
##        make && \
##        make install && \
##        rm -rf ${DIR}

###OffLine     
        DIR=freetype-${FREETYPE_VERSION}
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
        make && \
        make install && \
        cd .. 

### libvstab https://github.com/georgmartius/vid.stab
#
#        DIR=/tmp/vid.stab && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\
#        echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f v${LIBVIDSTAB_VERSION}.tar.gz && \
#        cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        DIR=vid.stab
        rm -rf ./${DIR}-1.1.0
        tar -xvf ./${DIR}_v1.1.0.tar.gz && \
        cd ./${DIR}-1.1.0 && \
        cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
        make && \
        make install && \
        cd .. 
### fridibi https://www.fribidi.org/
# + https://github.com/fribidi/fribidi/issues/8
#
#        DIR=/tmp/fribidi && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO https://github.com/fribidi/fribidi/archive/${FRIBIDI_VERSION}.tar.gz && \
#        echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f ${FRIBIDI_VERSION}.tar.gz && \
#        sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib/' Makefile.am && \
#        ./bootstrap --no-config && \
#        ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
#        make && \
#        make install
#        rm -rf ${DIR}

####OffLine     
        DIR=fribidi-0.19.7 && \
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.gz && \
        cd ./${DIR} && \
        sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib/' Makefile.am && \
        ./bootstrap --no-config && \
        ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
        make && \
        make install && \
        cd .. 
### fontconfig https://www.freedesktop.org/wiki/Software/fontconfig/

#        DIR=/tmp/fontconfig && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG_VERSION}.tar.bz2 &&\
#        tar -jx --strip-components=1 -f fontconfig-${FONTCONFIG_VERSION}.tar.bz2 && \
#        ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
#        make && \
#        make install
##        rm -rf ${DIR}

####OffLine     
        DIR=fontconfig-2.12.4 && \
        rm -rf ./${DIR}
        tar -xvf ./${DIR}.tar.bz2 && \
        cd ./${DIR} && \
        ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
        make && \
        make install && \
        cd .. 
## libass https://github.com/libass/libass
#need add PKG_CONFIG_PATH
#
#        DIR=/tmp/libass && \
#        rm -rf ${DIR} && \
#        mkdir -p ${DIR} && \
#        cd ${DIR} && \
#        curl -sLO https://github.com/libass/libass/archive/${LIBASS_VERSION}.tar.gz &&\
#        echo ${LIBASS_SHA256SUM} | sha256sum --check && \
#        tar -zx --strip-components=1 -f ${LIBASS_VERSION}.tar.gz && \
#        ./autogen.sh && \
#        ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
#        make && \
#        make install 
##        rm -rf ${DIR}

####OffLine     
        DIR=libass && \
        rm -rf ./${DIR}-0.13.7
        tar -xvf ./${DIR}_0.13.7.tar.gz && \
        cd ./${DIR}-0.13.7 && \
        ./autogen.sh && \
        ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
        make && \
        make install && \
        cd .. 
### ffmpeg https://ffmpeg.org/

#####OffLine
        DIR=ffmpeg341 && \
        mkdir -p ${DIR} && cd ${DIR} && \
        rm -rf ffmpeg-${FFMPEG_VERSION} && \
        tar -xvf ffmpeg-${FFMPEG_VERSION}.tar.gz && \
        cd ffmpeg-${FFMPEG_VERSION} && \
        ./configure \
        --enable-debug \
        --enable-doc \
        --disable-ffplay \
        --enable-shared \
        --enable-avresample \
        --enable-libopencore-amrnb \
        --enable-libopencore-amrwb \
        --enable-gpl \
        --enable-libass \
        --enable-libfreetype \
        --enable-libvidstab \
        --enable-libmp3lame \
        --enable-libopenjpeg \
        --enable-libopus \
        --enable-libtheora \
        --enable-libvorbis \
        --enable-libvpx \
        --enable-libx265 \
        --enable-libxvid \
        --enable-libx264 \
        --enable-nonfree \
        --enable-openssl \
        --enable-libfdk_aac \
        --enable-postproc \
        --enable-small \
        --enable-version3 \
        --extra-cflags="-I${PREFIX}/include" \
        --extra-ldflags="-L${PREFIX}/lib" \
        --extra-libs=-ldl \
        --prefix="${PREFIX}" && \
        make && \
        make install && \
        make distclean && \
        hash -r && \
        cd tools && \
        make qt-faststart && \
        cp qt-faststart ${PREFIX}/bin
         cd ../../

I think the following steps in dockerfile is not use. So I comment them.

##        ldd ${PREFIX}/bin/ffmpeg | grep opt/ffmpeg | cut -d ' ' -f 3 | xargs -i cp {} /usr/local/lib64/ && \
##        cp ${PREFIX}/bin/* /usr/local/bin/ && \
##        cp -r ${PREFIX}/share/ffmpeg /usr/local/share/ && \
##        LD_LIBRARY_PATH=/usr/local/lib64 ffmpeg -buildconf

I try to run my compiled ffmpeg, it is OK.
#####################

export LD_LIBRARY_PATH=/opt/ffmpeg/lib/
/opt/ffmpeg/bin/ffmpeg -i "/home/luoy/Videos/芳华.2017.TC720P独家高清中字.mp4" -ss 00:00:00 -t 00:00:01 -f image2 -y "./2_%04d.bmp"
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.6) 20160609
configuration: --enable-debug --enable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/luoy/Videos/芳华.2017.TC720P独家高清中字.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2017-12-15T16:28:00.000000Z
encoder : Lite MP4 Tool v2.3
Duration: 02:09:09.24, start: 0.000000, bitrate: 1587 kb/s
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1280x720, 1456 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2017-12-15T16:28:00.000000Z
handler_name : Imported with GPAC 0.4.6-DEV (internal rev. 5)
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
creation_time : 2017-12-15T16:28:45.000000Z
handler_name : GPAC ISO Audio Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> bmp (native))
Press [q] to stop, [?] for help
Output #0, image2, to './2_%04d.bmp':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
encoder : Lavf57.83.100
Stream #0:0(und): Video: bmp, bgr24, 1280x720, q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc (default)
Metadata:
creation_time : 2017-12-15T16:28:00.000000Z
handler_name : Imported with GPAC 0.4.6-DEV (internal rev. 5)
encoder : Lavc57.107.100 bmp
frame= 24 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A dup=1 drop=0 speed= 5.6x
video:64801kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

#####################

Now I write a simple code, save as a 0_hello_world.c file.
#####################

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <errno.h>
#include <stddef.h>
#include "libavutil/error.h"
int main(int argc, const char *argv[])
{
av_register_all();
int response = 0;
char *pchar;
// pchar = av_err2str(response);
return 0;
}

#####################

Use the follow command for make, it's OK.
#####################

gcc -g -Wall -o build/hello_world -lz 0_hello_world.c 
-lavformat -lavcodec -lswscale 
-I/opt/ffmpeg/include -L/opt/ffmpeg/lib

#####################

But when I use the "av_err2str" function(uncomment this line):
'pchar = av_err2str(response);'
compile show the following error:
#####################

gcc -g -Wall -o build/hello_world -lz 0_hello_world.c 
-lavformat -lavcodec -lswscale 
-I/opt/ffmpeg/include -L/opt/ffmpeg/lib
0_hello_world.c: In function ‘main’:
0_hello_world.c:16:9: warning: variable ‘pchar’ set but not used [-Wunused-but-set-variable]
char *pchar;
^
/usr/bin/ld: /tmp/ccgJJ9CV.o: undefined reference to symbol 'av_strerror@@LIBAVUTIL_55'
/opt/ffmpeg/lib/libavutil.so.55: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:10: recipe for target 'hello_world' failed
make: *** [hello_world] Error 1

#####################

As I know "av_register_all" use the "libavformat/avformat.h" header; "av_err2str" use the "libavutil/error.h" header.
Both the two headers I have included, why "av_err2str" is not OK?
I guess this is my environment not OK. How can I find the error?
I have checked my LD_LIBRARY_PATH, it is OK.
#####################

$ echo $LD_LIBRARY_PATH
/opt/ffmpeg/lib:

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

@jrottenberg still not solve my issue, please reopen it.

from ffmpeg.

luoyanghero avatar luoyanghero commented on May 29, 2024

Yes, About the library path issue. Should I open another ticket?

from ffmpeg.

jrottenberg avatar jrottenberg commented on May 29, 2024

no no close it if you're done.

Note : you're doing more than pulling it / using it, not sure how much support I can offer in the future.

from ffmpeg.

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.