Recherche avancée

Médias (3)

Mot : - Tags -/pdf

Autres articles (70)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (5191)

  • How do I remux/transcode a progressive file in ffmpeg ?

    3 décembre 2014, par Levi Roberts

    Here’s what I’m trying to do.

    My primary objective is to remux or transcode a currently downloading media file for AppleTV and iOS compatible streaming.

    I am doing this by looking at the media file and only transcoding when necessary, otherwise it will only alter the container the video/audio lives in. This will reduce overhead for files that are already compatible. The specific compatible output I am looking for is AppleTV3 and iOS.

    I have a file that is progressive, meaning that it is downloading using another download manager or another app without the help of nodejs. This file may or may not have the moov information available in the beginning of the file. It just so happens, that I believe my test file does.

    I have some code that is partially working and it would make sense to be able to get this code fully working. That said, I’m not dismissing alternative ways to do this.

    My primary problem (I think) has to do with the moov header location or that it’s being set incorrectly. I’m hoping the fix is as simple as correcting my poor ffmpeg knowledge with command line parameters.

    I am piping the file to and from ffmpeg via GrowingFile and fs.createWriteStream respectively.

    My code for doing so is :

    var fs = require('fs');
    var child = require('child_process');

    var GrowingFile = require('growing-file');
    var input_file = GrowingFile.open('./tmp/input.mp4');
    var output_file = fs.createWriteStream('./tmp/output.m4v');

    // I've tried various args and ffmpeg params here without success.
    var args = ['-re', '-i', 'pipe:0', '-g', '52', '-ab', '64k', '-vcodec', 'libx264', '-vb', '448k', '-f', 'mp4', '-movflags', 'frag_keyframe+faststart', 'pipe:1'];
    var trans_proc = child.spawn('ffmpeg', args, null);

    input_file.pipe(trans_proc.stdin);
    trans_proc.stdout.pipe(output_file);

    I am also temporarily trying to make these files work as intended via ffmpeg command line alone, without success. That command is :

    ffmpeg -i original.mp4 -vcodec copy -r 24 output.m4v

    Snippet of original.mp4 via mediainfo :

    General
    Format                                   : MPEG-4
    Format profile                           : Base Media / Version 2
    Codec ID                                 : mp42
    File size                                : 9.87 MiB
    Duration                                 : 43mn 14s
    Overall bit rate mode                    : Variable
    Overall bit rate                         : 31.9 Kbp

    Video
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : High@L2.1
    Codec ID                                 : avc1
    Duration                                 : 43mn 14s
    Width                                    : 480 pixels
    Height                                   : 268 pixels
    Color space                              : YUV
    Scan type                                : Progressive
    Stream size                              : 67.5 MiB

    Audio
    Format                                   : AAC
    Format/Info                              : Advanced Audio Codec
    Format profile                           : LC
    Codec ID                                 : 40
    Duration                                 : 43mn 14s
    Bit rate mode                            : Variable
    Bit rate                                 : 96.0 Kbps

    What’s happening is that output.m4v has an incorrect duration of only the part of the file that’s already downloaded. The video reaches the end or a refresh happens to make the duration longer. This process repeats until the original file is done downloading. What I want is to be able to emulate/clone the duration of the input file to the output file .

  • Get video pixel data from Exoplayer in Android

    25 février 2018, par Oliver Metz

    Is it possible to grab the pixel data (e.g. as RGB byte array) from a running video within the ExoPlayer ? Ideally as the real video resolution and not the size as the shown View. I’d want to forward that data to OpenCV for ImageProcessing purposes.

    Alternatively I’m looking for a robust (ffmpeg based) Android framework to input videos into OpenCV where the input might be IP-Cameras, local files, online files and online streams.

    Any help is appreciated.

  • using ffmpeg for development, libavutil/error environment not OK

    26 février 2018, par luoyanghero

    I want to build a latest ffmpeg development library. 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 and ffmpeg 3.4.1 source.
    The following is my changed shell script.

    #!/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 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
    #include
    #include
    #include
    #include
    #include
    #include
    #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: