
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (43)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains 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, parPré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 2013Puis-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 srgbndNode.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.mp4JavaScript 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 liyuqihxcI’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 < 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 < 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 && !!!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: PAUSELog
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 kSuspendedCan 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 hal497I’ve got openh264, built from source, installed locally,
pkg-config --libs --cflags openh264
-I/usr/local/include -L/usr/local/lib64 -lopenh264Building 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 <aman@tmm1.net>
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 thewith 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
makechecking 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.soand
./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 ?