
Recherche avancée
Médias (3)
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
-
Creativecommons informational flyer
16 mai 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (68)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (8326)
-
How to take frames in real-time in a RTSP streaming ?
30 juin 2018, par guijobI’m trying to grab frames with no delays using
javacv
and I’m kind of confusing how to do it and howjavacv
and other stuff properly work under the hoods.In my example, I have a RTSP streaming running with following configurations :
Codec: H.264
Frame Size: 1280x720
Maximum Frame Rate: 60 fpsIn order to make it happen, I’ve made a thread like following :
public class TakeFrameFromStreamingThread implements Runnable {
private CircularFifoQueue queue;
private Camera camera;
private FFmpegFrameGrabber grabber = null;
public TakeFrameFromStreamingThread(CircularFifoQueue queue, Camera camera) {
try {
this.queue = queue;
this.camera = camera;
this.initGrabber(camera);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
try {
while (true) {
if (grabber == null) {
initGrabber(camera); // connect
}
Frame frame = null;
frame = grabber.grabImage();
if (frame != null) {
this.queue.add(frame);
} else { // when frame == null then connection has been lost
initGrabber(camera); // reconnect
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void initGrabber(Camera camera) throws Exception {
grabber = new FFmpegFrameGrabber(camera.getURL()); // rtsp url
grabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
grabber.setOption("rtsp_transport", "tcp");
grabber.setFrameRate(60);
grabber.setImageWidth(camera.getResolution().getWidth());
grabber.setImageHeight(camera.getResolution().getHeight());
grabber.start();
}
}And it seems to work. Anytime I need a frame I
pool
thisqueue
from my main thread.I’ve ended up with this solution solving another issue. I was getting stuck why does calling
grabImage()
every time I need a frame has returned just next frame instead of a real-time frame from streaming.By this solution, I’m guessing there is a buffer which
javacv
(orffmpeg
idk) fills with frames and thengrabImage()
just get a frame from this buffer. So it’s my first question :1) Is that right ? Does
ffmpeg
relies on a buffer to store frames and thengrab()
just get it from there ?Well, if that is a truth, then this buffer must be filled at some rate and, of course, if this rate is greater than my
grabImage()
calls rate, eventually I’ll lose my real-time feature and soon I’ll be even losing frames once buffer gets completely filled.In this scenario, my
grabImage()
takes about 50 ms, which gives me 20 fps rate getting frames from this buffer. Hence, I need to make sureffmpeg
is receiving frames at most 20 fps. So here’s my second question :2) How to know and change
ffmpeg
buffer rate ? I’m guessing it’s getting filled at a same rate of streaming (60 fps) or from propertygrabber.setFrameRate()
. At all, I’m not sure if I should use grabber setters with same values from source streaming. -
avcodec/ccaption_dec : Make real-time latency configurable
19 juin 2021, par Pavel Koshevoyavcodec/ccaption_dec : Make real-time latency configurable
Un-hardcode the 200ms minimum latency between emitting subtitle events
so that those that wish to receive a subtitle event for every screen
change could do so.The problem with delaying realtime output by any amount is that it is
unknown when the next byte pair that would trigger output will happen.
It may be within 200ms, or it may be several seconds later — that's
not realtime at all. -
Revision cde6b50cb1 : Merge "Use fast HEX search in real time mode"
20 février 2014, par Yunqing WangChanged Paths :
Modify /vp9/encoder/vp9_onyx_if.c
Modify /vp9/encoder/vp9_onyx_int.h
Modify /vp9/encoder/vp9_rdopt.c
Merge "Use fast HEX search in real time mode"