Recherche avancée

Médias (1)

Mot : - Tags -/Rennes

Autres articles (43)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (10158)

  • Not all portions of video play well after concatenation

    24 septembre 2018, par srgbnd

    Node.JS 8.11.4, fluent-ffmpeg 2.1.2

    I need to concatenate random portions of the same length of different videos in one video file. The concatenation proceeds without errors. But when I play the final concatenated file I see some portions playing well with sound, others have video "frozen" but sounds playing.

    What’s the problem ? I want all portions playing well in the final concatenated file.

    Concatenation config :

    trex@cave:/media/trex/safe1/Development/app$ head concat_config.txt
    file /media/trex/safe1/Development/app/videos/test/417912400.mp4
    inpoint 145
    outpoint 155
    file /media/trex/safe1/Development/app/videos/test/440386842.mp4
    inpoint 59
    outpoint 69
    file /media/trex/safe1/Development/app/videos/test/417912400.mp4
    inpoint 144
    outpoint 154
       ...

    In total, I have 16 portions of 2 videos. Duration of a portion is 10 sec. In the future the number of video files and portions will be much bigger.

    trex@cave:/media/trex/safe1/Development/app$ ls -lh videos/test/
    total 344M
    -rw-r--r-- 1 trex trex  90M set 23 12:19 417912400.mp4
    -rw-r--r-- 1 trex trex 254M set 23 12:19 440386842.mp4

    JavaScript code for the concatentaion :

    const fs = require('fs');
    const path = require('path');
    const _ = require('lodash');
    const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
    const ffprobePath = require('@ffprobe-installer/ffprobe').path;
    const ffmpeg = require('fluent-ffmpeg');
    ffmpeg.setFfmpegPath(ffmpegPath);
    ffmpeg.setFfprobePath(ffprobePath);


    function getMetadata(absPathToFile) {
     return new Promise(function (resolve, reject) {
       ffmpeg.ffprobe(absPathToFile, function(err, metadata) {
         if (err) {
           reject('get video meta: ' + err.toString());
         }
         resolve(metadata);
       });
     });
    }

    async function getFormat(files) {
     const pArray = files.map(async f => {
       const meta = await getMetadata(f);
       meta.format.short_filename = meta.format.filename.split('/').pop();
       return meta.format;
     });
     return await Promise.all(pArray);
    }

    function getSliceValues(duration, max = 10) {
     max = duration < max ? duration * 0.5 : max; // sec
     const start = _.random(0, duration * 0.9);
     const end = start + max > duration ? duration : start + max;
     return `inpoint ${Math.floor(start)}\noutpoint ${Math.floor(end)}\n`;
    }

    function addPath(arr, aPath) {
     return arr.map(e => path.join(aPath, e));
    }

    function createConfig(meta) {
     return meta.map(video => `file ${video.filename}\n${getSliceValues(video.duration)}`).join('');
    }

    function duplicateMeta(meta) {
     for (let i = 0; i < 3; i++) {
       meta.push(...meta);
     }
     return _.shuffle(meta);
    }

    const videoFolder = path.join(__dirname, 'videos/test');
    const finalVideo = 'final_video.mp4';
    const configFile = 'concat_config.txt';

    // main
    (async () => {
     let videos = addPath(fs.readdirSync(videoFolder), videoFolder);

     let meta = await getFormat(videos);
     meta = duplicateMeta(meta); // get multiple portions of videos

     fs.writeFileSync(configFile, createConfig(meta));

     const mpeg = ffmpeg();
     mpeg.input(configFile)
       .inputOptions(['-f concat', '-safe 0'])
       .outputOptions('-c copy')
       .save(finalVideo);
    })();

    Video files formats :

    { streams:
      [ { index: 0,
          codec_name: 'h264',
          codec_long_name: 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10',
          profile: 'High',
          codec_type: 'video',
          codec_time_base: '1001/60000',
          codec_tag_string: 'avc1',
          codec_tag: '0x31637661',
          width: 1920,
          height: 1080,
          coded_width: 1920,
          coded_height: 1088,
          has_b_frames: 2,
          sample_aspect_ratio: '1:1',
          display_aspect_ratio: '16:9',
          pix_fmt: 'yuv420p',
          level: 40,
          color_range: 'tv',
          color_space: 'bt709',
          color_transfer: 'bt709',
          color_primaries: 'bt709',
          chroma_location: 'left',
          field_order: 'unknown',
          timecode: 'N/A',
          refs: 1,
          is_avc: 'true',
          nal_length_size: 4,
          id: 'N/A',
          r_frame_rate: '30000/1001',
          avg_frame_rate: '30000/1001',
          time_base: '1/30000',
          start_pts: 0,
          start_time: 0,
          duration_ts: 4936900,
          duration: 164.563333,
          bit_rate: 4323409,
          max_bit_rate: 'N/A',
          bits_per_raw_sample: 8,
          nb_frames: 4932,
          nb_read_frames: 'N/A',
          nb_read_packets: 'N/A',
          tags: [Object],
          disposition: [Object] },
        { index: 1,
          codec_name: 'aac',
          codec_long_name: 'AAC (Advanced Audio Coding)',
          profile: 'LC',
          codec_type: 'audio',
          codec_time_base: '1/48000',
          codec_tag_string: 'mp4a',
          codec_tag: '0x6134706d',
          sample_fmt: 'fltp',
          sample_rate: 48000,
          channels: 2,
          channel_layout: 'stereo',
          bits_per_sample: 0,
          id: 'N/A',
          r_frame_rate: '0/0',
          avg_frame_rate: '0/0',
          time_base: '1/48000',
          start_pts: 0,
          start_time: 0,
          duration_ts: 7899120,
          duration: 164.565,
          bit_rate: 256000,
          max_bit_rate: 263232,
          bits_per_raw_sample: 'N/A',
          nb_frames: 7714,
          nb_read_frames: 'N/A',
          nb_read_packets: 'N/A',
          tags: [Object],
          disposition: [Object] } ],
     format:
      { filename: '/media/trex/safe1/Development/app/videos/test/417912400.mp4',
        nb_streams: 2,
        nb_programs: 0,
        format_name: 'mov,mp4,m4a,3gp,3g2,mj2',
        format_long_name: 'QuickTime / MOV',
        start_time: 0,
        duration: 164.565,
        size: 94298844,
        bit_rate: 4584150,
        probe_score: 100,
        tags:
         { major_brand: 'mp42',
           minor_version: '0',
           compatible_brands: 'mp42mp41isomavc1',
           creation_time: '2015-09-21T19:11:21.000000Z' } },
     chapters: [] }
    { streams:
      [ { index: 0,
          codec_name: 'h264',
          codec_long_name: 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10',
          profile: 'High',
          codec_type: 'video',
          codec_time_base: '1001/48000',
          codec_tag_string: 'avc1',
          codec_tag: '0x31637661',
          width: 2560,
          height: 1440,
          coded_width: 2560,
          coded_height: 1440,
          has_b_frames: 2,
          sample_aspect_ratio: '1:1',
          display_aspect_ratio: '16:9',
          pix_fmt: 'yuv420p',
          level: 51,
          color_range: 'tv',
          color_space: 'bt709',
          color_transfer: 'bt709',
          color_primaries: 'bt709',
          chroma_location: 'left',
          field_order: 'unknown',
          timecode: 'N/A',
          refs: 1,
          is_avc: 'true',
          nal_length_size: 4,
          id: 'N/A',
          r_frame_rate: '24000/1001',
          avg_frame_rate: '24000/1001',
          time_base: '1/24000',
          start_pts: 0,
          start_time: 0,
          duration_ts: 4206200,
          duration: 175.258333,
          bit_rate: 11891834,
          max_bit_rate: 'N/A',
          bits_per_raw_sample: 8,
          nb_frames: 4202,
          nb_read_frames: 'N/A',
          nb_read_packets: 'N/A',
          tags: [Object],
          disposition: [Object] },
        { index: 1,
          codec_name: 'aac',
          codec_long_name: 'AAC (Advanced Audio Coding)',
          profile: 'LC',
          codec_type: 'audio',
          codec_time_base: '1/48000',
          codec_tag_string: 'mp4a',
          codec_tag: '0x6134706d',
          sample_fmt: 'fltp',
          sample_rate: 48000,
          channels: 2,
          channel_layout: 'stereo',
          bits_per_sample: 0,
          id: 'N/A',
          r_frame_rate: '0/0',
          avg_frame_rate: '0/0',
          time_base: '1/48000',
          start_pts: 0,
          start_time: 0,
          duration_ts: 8414160,
          duration: 175.295,
          bit_rate: 256000,
          max_bit_rate: 262152,
          bits_per_raw_sample: 'N/A',
          nb_frames: 8217,
          nb_read_frames: 'N/A',
          nb_read_packets: 'N/A',
          tags: [Object],
          disposition: [Object] } ],
     format:
      { filename: '/media/trex/safe1/Development/app/videos/test/440386842.mp4',
        nb_streams: 2,
        nb_programs: 0,
        format_name: 'mov,mp4,m4a,3gp,3g2,mj2',
        format_long_name: 'QuickTime / MOV',
        start_time: 0,
        duration: 175.295,
        size: 266214940,
        bit_rate: 12149345,
        probe_score: 100,
        tags:
         { major_brand: 'mp42',
           minor_version: '0',
           compatible_brands: 'mp42mp41isomavc1',
           creation_time: '2015-11-15T19:30:49.000000Z' } },
     chapters: [] }
  • Play video using mse (media source extension) in google chrome

    23 août 2019, par liyuqihxc

    I’m working on a project that convert rtsp stream (ffmpeg) and play it on the web page (signalr + mse).

    So far it works pretty much as I expected on the latest version of edge and firefox, but not chrome.

    here’s the code

    public class WebmMediaStreamContext
    {
       private Process _ffProcess;
       private readonly string _cmd;
       private byte[] _initSegment;
       private Task _readMediaStreamTask;
       private CancellationTokenSource _cancellationTokenSource;

       private const string _CmdTemplate = "-i {0} -c:v libvpx -tile-columns 4 -frame-parallel 1 -keyint_min 90 -g 90 -f webm -dash 1 pipe:";

       public static readonly byte[] ClusterStart = { 0x1F, 0x43, 0xB6, 0x75, 0x01, 0x00, 0x00, 0x00 };

       public event EventHandler<clusterreadyeventargs> ClusterReadyEvent;

       public WebmMediaStreamContext(string rtspFeed)
       {
           _cmd = string.Format(_CmdTemplate, rtspFeed);
       }

       public async Task StartConverting()
       {
           if (_ffProcess != null)
               throw new InvalidOperationException();

           _ffProcess = new Process();
           _ffProcess.StartInfo = new ProcessStartInfo
           {
               FileName = "ffmpeg/ffmpeg.exe",
               Arguments = _cmd,
               UseShellExecute = false,
               CreateNoWindow = true,
               RedirectStandardOutput = true
           };
           _ffProcess.Start();

           _initSegment = await ParseInitSegmentAndStartReadMediaStream();
       }

       public byte[] GetInitSegment()
       {
           return _initSegment;
       }

       // Find the first cluster, and everything before it is the InitSegment
       private async Task ParseInitSegmentAndStartReadMediaStream()
       {
           Memory<byte> buffer = new byte[10 * 1024];
           int length = 0;
           while (length != buffer.Length)
           {
               length += await _ffProcess.StandardOutput.BaseStream.ReadAsync(buffer.Slice(length));
               int cluster = buffer.Span.IndexOf(ClusterStart);
               if (cluster >= 0)
               {
                   _cancellationTokenSource = new CancellationTokenSource();
                   _readMediaStreamTask = new Task(() => ReadMediaStreamProc(buffer.Slice(cluster, length - cluster).ToArray(), _cancellationTokenSource.Token), _cancellationTokenSource.Token, TaskCreationOptions.LongRunning);
                   _readMediaStreamTask.Start();
                   return buffer.Slice(0, cluster).ToArray();
               }
           }

           throw new InvalidOperationException();
       }

       private void ReadMoreBytes(Span<byte> buffer)
       {
           int size = buffer.Length;
           while (size > 0)
           {
               int len = _ffProcess.StandardOutput.BaseStream.Read(buffer.Slice(buffer.Length - size));
               size -= len;
           }
       }

       // Parse every single cluster and fire ClusterReadyEvent
       private void ReadMediaStreamProc(byte[] bytesRead, CancellationToken cancel)
       {
           Span<byte> buffer = new byte[5 * 1024 * 1024];
           bytesRead.CopyTo(buffer);
           int bufferEmptyIndex = bytesRead.Length;

           do
           {
               if (bufferEmptyIndex &lt; ClusterStart.Length + 4)
               {
                   ReadMoreBytes(buffer.Slice(bufferEmptyIndex, 1024));
                   bufferEmptyIndex += 1024;
               }

               int clusterDataSize = BitConverter.ToInt32(
                   buffer.Slice(ClusterStart.Length, 4)
                   .ToArray()
                   .Reverse()
                   .ToArray()
               );
               int clusterSize = ClusterStart.Length + 4 + clusterDataSize;
               if (clusterSize > buffer.Length)
               {
                   byte[] newBuffer = new byte[clusterSize];
                   buffer.Slice(0, bufferEmptyIndex).CopyTo(newBuffer);
                   buffer = newBuffer;
               }

               if (bufferEmptyIndex &lt; clusterSize)
               {
                   ReadMoreBytes(buffer.Slice(bufferEmptyIndex, clusterSize - bufferEmptyIndex));
                   bufferEmptyIndex = clusterSize;
               }

               ClusterReadyEvent?.Invoke(this, new ClusterReadyEventArgs(buffer.Slice(0, bufferEmptyIndex).ToArray()));

               bufferEmptyIndex = 0;
           } while (!cancel.IsCancellationRequested);
       }
    }
    </byte></byte></byte></clusterreadyeventargs>

    I use ffmpeg to convert the rtsp stream to vp8 WEBM byte stream and parse it to "Init Segment" (ebml head、info、tracks...) and "Media Segment" (cluster), then send it to browser via signalR

    $(function () {

       var mediaSource = new MediaSource();
       var mimeCodec = 'video/webm; codecs="vp8"';

       var video = document.getElementById('video');

       mediaSource.addEventListener('sourceopen', callback, false);
       function callback(e) {
           var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
           var queue = [];

           sourceBuffer.addEventListener('updateend', function () {
               if (queue.length === 0) {
                   return;
               }

               var base64 = queue[0];
               if (base64.length === 0) {
                   mediaSource.endOfStream();
                   queue.shift();
                   return;
               } else {
                   var buffer = new Uint8Array(atob(base64).split("").map(function (c) {
                       return c.charCodeAt(0);
                   }));
                   sourceBuffer.appendBuffer(buffer);
                   queue.shift();
               }
           }, false);

           var connection = new signalR.HubConnectionBuilder()
               .withUrl("/signalr-video")
               .configureLogging(signalR.LogLevel.Information)
               .build();
           connection.start().then(function () {
               connection.stream("InitVideoReceive")
                   .subscribe({
                       next: function(item) {
                           if (queue.length === 0 &amp;&amp; !!!sourceBuffer.updating) {
                               var buffer = new Uint8Array(atob(item).split("").map(function (c) {
                                   return c.charCodeAt(0);
                               }));
                               sourceBuffer.appendBuffer(buffer);
                               console.log(blockindex++ + " : " + buffer.byteLength);
                           } else {
                               queue.push(item);
                           }
                       },
                       complete: function () {
                           queue.push('');
                       },
                       error: function (err) {
                           console.error(err);
                       }
                   });
           });
       }
       video.src = window.URL.createObjectURL(mediaSource);
    })

    chrome just play the video for 3 5 seconds and then stop for buffering, even though there are plenty of cluster transfered and inserted into SourceBuffer.

    here’s the information in chrome ://media-internals/

    Player Properties :

    render_id: 217
    player_id: 1
    origin_url: http://localhost:52531/
    frame_url: http://localhost:52531/
    frame_title: Home Page
    url: blob:http://localhost:52531/dcb25d89-9830-40a5-ba88-33c13b5c03eb
    info: Selected FFmpegVideoDecoder for video decoding, config: codec: vp8 format: 1 profile: vp8 coded size: [1280,720] visible rect: [0,0,1280,720] natural size: [1280,720] has extra data? false encryption scheme: Unencrypted rotation: 0°
    pipeline_state: kSuspended
    found_video_stream: true
    video_codec_name: vp8
    video_dds: false
    video_decoder: FFmpegVideoDecoder
    duration: unknown
    height: 720
    width: 1280
    video_buffering_state: BUFFERING_HAVE_NOTHING
    for_suspended_start: false
    pipeline_buffering_state: BUFFERING_HAVE_NOTHING
    event: PAUSE

    Log

    Timestamp       Property            Value
    00:00:00 00     origin_url          http://localhost:52531/
    00:00:00 00     frame_url           http://localhost:52531/
    00:00:00 00     frame_title         Home Page
    00:00:00 00     url                 blob:http://localhost:52531/dcb25d89-9830-40a5-ba88-33c13b5c03eb
    00:00:00 00     info                ChunkDemuxer: buffering by DTS
    00:00:00 35     pipeline_state      kStarting
    00:00:15 213    found_video_stream  true
    00:00:15 213    video_codec_name    vp8
    00:00:15 216    video_dds           false
    00:00:15 216    video_decoder       FFmpegVideoDecoder
    00:00:15 216    info                Selected FFmpegVideoDecoder for video decoding, config: codec: vp8 format: 1 profile: vp8 coded size: [1280,720] visible rect: [0,0,1280,720] natural size: [1280,720] has extra data? false encryption scheme: Unencrypted rotation: 0°
    00:00:15 216    pipeline_state      kPlaying
    00:00:15 213    duration            unknown
    00:00:16 661    height              720
    00:00:16 661    width               1280
    00:00:16 665    video_buffering_state       BUFFERING_HAVE_ENOUGH
    00:00:16 665    for_suspended_start         false
    00:00:16 665    pipeline_buffering_state    BUFFERING_HAVE_ENOUGH
    00:00:16 667    pipeline_state      kSuspending
    00:00:16 670    pipeline_state      kSuspended
    00:00:52 759    info                Effective playback rate changed from 0 to 1
    00:00:52 759    event               PLAY
    00:00:52 759    pipeline_state      kResuming
    00:00:52 760    video_dds           false
    00:00:52 760    video_decoder       FFmpegVideoDecoder
    00:00:52 760    info                Selected FFmpegVideoDecoder for video decoding, config: codec: vp8 format: 1 profile: vp8 coded size: [1280,720] visible rect: [0,0,1280,720] natural size: [1280,720] has extra data? false encryption scheme: Unencrypted rotation: 0°
    00:00:52 760    pipeline_state      kPlaying
    00:00:52 793    height              720
    00:00:52 793    width               1280
    00:00:52 798    video_buffering_state       BUFFERING_HAVE_ENOUGH
    00:00:52 798    for_suspended_start         false
    00:00:52 798    pipeline_buffering_state    BUFFERING_HAVE_ENOUGH
    00:00:56 278    video_buffering_state       BUFFERING_HAVE_NOTHING
    00:00:56 295    for_suspended_start         false
    00:00:56 295    pipeline_buffering_state    BUFFERING_HAVE_NOTHING
    00:01:20 717    event               PAUSE
    00:01:33 538    event               PLAY
    00:01:35 94     event               PAUSE
    00:01:55 561    pipeline_state      kSuspending
    00:01:55 563    pipeline_state      kSuspended

    Can someone tell me what’s wrong with my code, or dose chrome require some magic configuration to work ?

    Thanks 

    Please excuse my english :)

  • building ffmpeg with openh264 configure results in h264 decoder DISabled ?

    7 juillet 2018, par hal497

    I’ve got openh264, built from source, installed locally,

    pkg-config --libs --cflags openh264
           -I/usr/local/include -L/usr/local/lib64 -lopenh264

    Building ffmpeg from src

    cd ffmpeg-git
       git checkout origin/release/4.0
       git clean -xfd
       git reset --hard
       git pull
       git log | head
           commit b5106c5aa2ddd00f0c0452432ba8e683a9a06b6f
           Author: Aman Gupta &lt;aman@tmm1.net&gt;
           Date:   Mon Jun 11 00:43:31 2018 -0700

               avformat/mpegts: parse large PMTs with multiple tables

               In 9152c1e4955, the mpegts parser was taught how to parse
               PMT sections which contained multiple tables. That commit
               fixed parsing of PMT packets from some cable providers,
               which included a special SCTE table (0xc0) before the

    with a simple config to ENABLE libopenh264 use

    ./configure --enable-ffmpeg \
    --prefix=/usr/local --libdir=/usr/local/lib64 \
    --enable-shared --disable-static --enable-rpath \
    --enable-libopenh264 --disable-libx264
    make

    checking the build

    ldd ./ffmpeg | egrep "h264|x264"
       (empty)

    there are mixed references to libopenh264 and libx264 (despite my config),

    for l in lib*/*so; do echo $l; ldd $l | egrep "264"; done
       libavcodec/libavcodec.so
               libopenh264.so.4 => /usr/local/lib64/libopenh264.so.4 (0x00007f82dd74d000)
       libavdevice/libavdevice.so
               libx264.so.152 => /usr/lib64/libx264.so.152 (0x00007f0575c6f000)
       libavfilter/libavfilter.so
               libx264.so.152 => /usr/lib64/libx264.so.152 (0x00007f85bae41000)
       libavformat/libavformat.so
               libx264.so.152 => /usr/lib64/libx264.so.152 (0x00007ff105701000)
       libavutil/libavutil.so
       libswresample/libswresample.so
       libswscale/libswscale.so

    and

    ./ffmpeg -decoders | grep h264

    shows h264 as a disabled decoder, (... —enable-libx264 —disable-libopenh264 ...)

    ffmpeg version n4.0.1-5-gb5106c5aa2 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 8 (SUSE Linux)
     configuration: --enable-ffmpeg --prefix=/usr/local --libdir=/usr/local/lib64 --enable-shared --disable-static --enable-optimizations --enable-rpath --disable-doc --enable-nonfree --enable-libopenh264 --disable-libx264
     WARNING: library configuration mismatch
     avutil      configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     avcodec     configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     avformat    configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     avdevice    configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     avfilter    configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     swscale     configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     swresample  configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --extra-cflags='-grecord-gcc-switches -g -fPIC -I/usr/include/gsm' --disable-static --enable-shared --disable-stripping --enable-optimizations --disable-debug --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-devices --disable-htmlpages --disable-doc --enable-gpl --enable-nonfree --enable-version3 --enable-libx264 --disable-libopenh264 --enable-libfdk-aac --enable-libmp3lame --enable-runtime-cpudetect --enable-postproc --enable-bzlib --enable-swresample --disable-avresample --enable-ladspa --enable-muxers --enable-demuxers --enable-encoders --disable-encoder= --enable-decoders --disable-decoder= --enable-protocol=http --disable-libpulse --enable-pthreads --enable-pic --enable-zlib --disable-mipsdsp --disable-mipsdspr2 --disable-openssl --enable-gnutls --disable-cuda --enable-vaapi --enable-vdpau --enable-libcdio --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-inline-asm --enable-x86asm
     libavutil      56. 14.100 / 56. 14.100
     libavcodec     58. 18.100 / 58. 18.100
     libavformat    58. 12.100 / 58. 12.100
     libavdevice    58.  3.100 / 58.  3.100
     libavfilter     7. 16.100 /  7. 16.100
     libswscale      5.  1.100 /  5.  1.100
     libswresample   3.  1.100 /  3.  1.100
    VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    V..... h264_v4l2m2m         V4L2 mem2mem H.264 decoder wrapper (codec h264)

    The question is — why ? And what needs to change so that libopenh264 is consistently & correctly used ?