
Recherche avancée
Autres articles (55)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
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 ;
-
Submit bugs and patches
13 avril 2011Unfortunately a software is never perfect.
If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
You may also (...)
Sur d’autres sites (11074)
-
Revision 60f9ebc3f1 : Enable variable block size test in non-RD mode decision This is an initial atte
19 mars 2014, par Jingning HanChanged Paths :
Modify /vp9/encoder/vp9_encodeframe.c
Modify /vp9/encoder/vp9_onyx_if.c
Modify /vp9/encoder/vp9_onyx_int.h
Modify /vp9/encoder/vp9_pickmode.c
Enable variable block size test in non-RD mode decisionThis is an initial attempt to allow variable block size partition
in non-RD coding flow. It tests 8x8, 16x16 and 32x32 block size per
64x64 block, all using non-RD mode decision and the associated rate
distortion costs from modeling, then selects the best block size to
encode the entire 64x64 block. Such operations are triggered every
other 3 frames. The blocks of intermediate frames will reuse the
collocated block's partition type.It improves the compression performance by 13.2%. Note that the gains
are not evenly distributed. For many hard clips, the compression
performance is improved by 20% to 28%. Local speed test shows that
it will also increase runtime by 50%, as compared to speed -7. It is
now enabled in speed -6 setting.Change-Id : Ib4fb8659d21621c9075b3c369ddaa9ecb0a4b204
-
WinAPI multithreading access violation when writing in local variable
26 février 2016, par JustPingoI’m making a multithreaded program using Visual C++, Win32 API (using
_beginthread
) that also uses FFmpeg (it is claimed to be thread-safe, and I’m using it only with one single thread anyway).Here is the part of my thread’s code that causes problems (everything is inside of the thread function) :
Arena* arena = NULL;
switch (task) {
case TaskOne:
arena = (Arena*) malloc(sizeof(Arena));
for (uint i = 0; i < FIGHTSPERROUND; i++) {
generateArena(arena, ARENAWALLSAMOUNT, ARENAWIDTH, ARENAHEIGHT, ARENAMAXENTITIES, 255);
spawnPlayer(arena, playerOne, 3, 1, 0, 0, ARENAPLAYERLIFE);
spawnPlayer(arena, playerTwo, 2, 2, ARENAWIDTH-1, ARENAHEIGHT-1, ARENAPLAYERLIFE);
do {
tickArena(arena);
} while ((result = getResult(arena)) == 0);
switch (result) {
case 1: teamOneScore++; break;
case 2: teamTwoScore++; break;
default: break;
}
freeArena(arena);
clearMemory(playerOne);
clearMemory(playerTwo);
clearBrain(playerOne);
clearBrain(playerTwo);
}
threadTeamOneScore[threadID] = teamOneScore;
threadTeamTwoScore[threadID] = teamTwoScore;
break;
default: break;
}Here is how I generate my arena :
void generateArena(Arena* arena, uint wallsAmount, uint xSize, uint ySize, uint maxEntities, uint maxTurns) {
CasesTypes** map;
map = (CasesTypes**) malloc(xSize * sizeof(CasesTypes*));
memset(map, 0, xSize * sizeof(CasesTypes*));
for (uint i = 0; i < xSize; i++) {
map[i] = (CasesTypes*)malloc(ySize * sizeof(CasesTypes));
memset(map[i], 0, ySize * sizeof(CasesTypes));
}
arena->map = map;
arena->entities = (Entity*) malloc(maxEntities * sizeof(Entity));
memset(arena->entities, 0, maxEntities * sizeof(Entity));
arena->width = xSize;
arena->height = ySize;
arena->maxEntities = maxEntities;
arena->maxTurns = maxTurns;
arena->currentTurn = 0;
arena->entitiesAmount = 0;
for (uint i = 0; i < wallsAmount; i++)
arena->map[random2(1, xSize-1)][random2(1, ySize-1)] = Wall;
}This works as expected 4 times in 5.
But sometimes, for some reason,arena = (Arena*) malloc(sizeof(Arena));
throws an access violation exception.For example, Visual Studio 2015’s debugger once said :
Exception thrown at 0x77DBE389 (ntdll.dll) in MyProgram.exe: 0xC0000005: Access violation writing location 0x007C160F.
When I used the debugger to find what
((void*) 0x007C160F)
was, it always happened to be something similar to :avformat-57.dll!0x007c160f (load symbols for additional information)
avformat is a part of FFmpeg. The address was different every times, but it always had something to do with FFmpeg.
I can’t figure out what is causing the problem.
If that can help, sometimes the arena also happens to get corrupted (some of its fields get extremely big while generating them withgenerateArena
although it is never changed and only set once to an integer, this leads to a crash later).Thank you in advance !
-
how to get time bitrate, q and speed from ffmpeg using ffprobe ?
24 décembre 2016, par user2631534i im using node js that creates and start ffmpeg for restream using pipe function that works but i im unable to get from stdout.pipe ffmpeg informations about started stream : bitrate, speed, time and q.
this is what i get when i start ffmpeg using : ./ffmpeg -i http://serverip :/stream1.ts
frame= 710 fps = 65 q=1.0 Lsize = 4974kB time=00:00:28.33 bitrate = 1437.9kbits/s speed = 2.61x
and i would like to read into string this parameters so that i can write in mysql database and later show in datatables info...how to get frame, fps, q, time, bitrate and speed value into javascript variable so that i can use it later ?
i im starting ffmpeg using this :
function listener(id, stream_url) {
/* LISTENER - ffmpeg */
streams[id].on('close', function() {
/* START - stream */
stream(id, stream_url);
});
}
function stream(id, stream_url) {
/* START - ffmpeg */
streams[id] = child_process.spawn(process.env.PWD + "/node_modules/ffmpeg-static/bin/linux/x64/ffmpeg", [
"-re", /* STREAM - realtime */
"-y", /* OVERWRITE - output file */
"-hide_banner", /* BANNER - hide */
"-loglevel", "quiet", /* LOG - hide */
"-i", stream_url, /* STREAM - source */
"-vcodec", "copy",
"-reset_timestamps", "1",
"-movflags", "frag_keyframe+empty_moov",
"-f", "mpegts",
"-"
], { detached: false });
/* LISTENER - ffmpeg */
listener(id, stream_url);
}
/* LOOP - throught all streams */
for (var i in rows) {
/* CHECK - ffmpeg */
if (!streams[rows[i].id]) {
/* START - stream */
stream(rows[i].id, rows[i].stream);
};
};And showing stream using :
streamRoutes.get('/stream2', function(req, res) {
/* STREAM - header */
res.writeHead(200, {
'Content-Type': 'video/H264'
});
/* PIPE - stream to client */
streams[2].stdout.pipe(res);
ffprobe(streams[2].stdout, { path: ffprobeStatic.path }, function (err, info) {
console.log(info);
});}) ;
i try using ffprobe input stream as stdout from ffmpeg that is read from memory but i get undefined in console.log....
UPDATED QUESTION :
i save file using this code to HDD and then read frpm fluent-ffmpeg-extended metadata and i im getting correct JSON data (duration, bitrate, resolution, time etc...) but i would like not to save stream to HDD to get informations...i would like to get from memory stream and get this informations...but fluent-ffmpeg-extended accept only local input file on HDD not stream (http link), how can i enter stream link into fluent-ffmpeg to get this infomations from memory (stdout.pipe) ?
var inputfile = "http://myserverip/stream/ -vcodec copy -f mpegts 1.ts";
var exec = require('child_process').exec;
exec("/root/mediaxtream-codes/node_modules/ffmpeg-static/bin/linux/x64/ffmpeg" + ' -i ' + inputfile, function(err, stdout, stderr) {
console.log(stdout);
});
function check() {
var Metalib = require('fluent-ffmpeg-extended').Metadata;
var metaObject = new Metalib("1.ts", function(metadata, err) {
console.log(require('util').inspect(metadata, false, null));
});
setTimeout(check, 1000);
};
setTimeout(check, 1000);And form console.log in terminal i get correct informations every seconds :
{ ffmpegversion: '3.1',
title: '',
artist: '',
album: '',
track: '',
date: '',
durationraw: '00:02:02.08',
durationsec: 122,
synched: false,
major_brand: undefined,
video:
{ container: 'mpegts',
bitrate: 2058,
codec: 'h264',
resolution: { w: 1280, h: 720 },
resolutionSquare: { w: 1280, h: 720 },
rotate: 0,
fps: 25,
stream: 0,
aspectString: '16:9',
aspect: 1.7777777777777777,
pixelString: '1:1',
pixel: 1 },
audio: { codec: 'mp2', bitrate: 384, sample_rate: 48000, stream: 0 } }