
Recherche avancée
Médias (17)
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Chuck D with Fine Arts Militia - No Meaning No
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (60)
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
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 -
HTML5 audio and video support
13 avril 2011, parMediaSPIP 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 (...)
Sur d’autres sites (7191)
-
Anomalie #3209 : Permettre de supprimer les fusions (group by) explicitement
29 juin 2016, par RastaPopoulos ♥Bon, 2 ans que je l’utilise régulièrement de temps à autre, je l’ai ajouté à Bonux pour le moment, du coup :
http://zone.spip.org/trac/spip-zone/changeset/98598 -
H264 streamed video stutter and freeze with MediaCodec, Android 4.1.2
5 mars 2015, par WajihI have been trying my heart out to remove the stutter from an android RTSP client.
Here is my setup- FFMPEG server streams a live video on Win7. The video is 1200x900 in size. The video streamed is in H264 format.
- I receive the video packets on android (4.1.2) clinet under JNI which pushes the packet to java - Device is a Samsung Tab4
- Packets are decoded using MediaCodec. Once call from JNI to push the packets into MediaCodec, another thread in Java tries to de-queue the data and display them to a SurfaceView (its a GLSurfaceView)
Despite my efforts of using queue to buffer the packets, changing wait times to 0,-1, 1000000, i am unable to get a clean streamed video. I understand that there is some packet loss (1% to 10%), but I am getting a broken video, with stutter (some call it even jitter). Green patches, pink screens, gray slices. You name it, it is there, the problem seems to be exaggerated when there is a fast movement in the video.
At the moment I am not sure where the problem lies, I tried a windows version of the client (with ffmpeg decoding) and it works smoothly despite the packet loss.What am I doing wrong ? Any guidance is appreciated.
Below is the client end code for Android and the server end FFMPEG settings I read from a config file.// Function called from JNI
public int decodeVideo(byte[] data, int size, long presentationTimeUs, boolean rtpMarker, int flag)
{
if(vdecoder == null)
return -1;
if(currVInbufIdx == -1) {
vdecoderInbufIdx = vdecoder.dequeueInputBuffer(1000000); //1000000/*1s*/
if(vdecoderInbufIdx < 0) {
Log.d("log","decodeVideo@1: frame dropped");
vdecoderRet = -1;
return vdecoderRet;
}
currVInbufIdx = vdecoderInbufIdx;
currVPts = presentationTimeUs;
currVFlag = flag;
inputVBuffers[currVInbufIdx].clear();
}
vdecoderPos = inputVBuffers[currVInbufIdx].position();
vdecoderRemaining = inputVBuffers[currVInbufIdx].remaining();
if(flag==currVFlag && vdecoderRemaining >= size && currVPts == presentationTimeUs
&& rtpMarker == false
/*&&(pos < vbufferLevel || vbufferLevel<=0)*/)
{
/* Queue without decoding */
inputVBuffers[currVInbufIdx].put(data, 0,size);
}
else
{
if(flag==currVFlag && vdecoderRemaining >= size && currVPts == presentationTimeUs
&& rtpMarker)
{
inputVBuffers[currVInbufIdx].put(data, 0, size);
queued = true;
}
Log.d("log", "decodeVideo: submit,"
+ " pts=" + Long.toString(currVPts)
+ " position="+inputVBuffers[currVInbufIdx].position()
+ " capacity="+inputVBuffers[currVInbufIdx].capacity()
+ " VBIndex="+currVInbufIdx
);
vdecoder.queueInputBuffer(currVInbufIdx, 0, inputVBuffers[currVInbufIdx].position(), currVPts, currVFlag);
//
vdecoderInbufIdx = vdecoder.dequeueInputBuffer(1000000);//1000000/*1s*/
if(vdecoderInbufIdx >= 0)
{
currVInbufIdx = vdecoderInbufIdx;
currVPts = presentationTimeUs;
currVFlag = flag;
inputVBuffers[currVInbufIdx].clear();
//if(queued == false)
{
inputVBuffers[vdecoderInbufIdx].put(data, 0, size);
}
}
else
{
currVInbufIdx = -1;
currVPts = -1;
vdecoderRet = -1;
Log.d("log","decodeVideo@2: frame dropped");
}
}
return vdecoderRet;
}And here we have the thread that calls for a render
// Function at android. Called by a separate thread.
private void videoRendererThreadProc() {
if(bufinfo == null)
bufinfo = new MediaCodec.BufferInfo();
videoRendered = false;
Log.d("log", "videoRenderer started.");
while(!Thread.interrupted() && !quitVideoRenderer)
{
Log.d("log", "videoRendererThreadProc");
outbufIdx = vdecoder.dequeueOutputBuffer(bufinfo,1000000);//500000
switch (outbufIdx)
{
case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
Log.d("log", "decodeVideo: output buffers changed.");
// outputBuffers = vdecoder.getOutputBuffers();
break;
case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
Log.d("log", "decodeVideo: format changed - " + vdecoder.getOutputFormat());
break;
case MediaCodec.INFO_TRY_AGAIN_LATER:
// Log.d("log", "decodeVideo: try again later.");
break;
default:
// decoded or rendered
videoRendered = true;
vdecoder.releaseOutputBuffer(outbufIdx, true);
//Log.d("log", "decodeVideo: Rendering...!!!.");
}
}
// flush decoder
//vdecoder.queueInputBuffer(0, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
outbufIdx = vdecoder.dequeueOutputBuffer(bufinfo, 1000000);//10000
if(outbufIdx >= 0)
{
vdecoder.releaseOutputBuffer(outbufIdx, true);
}
bufinfo = null;
videoRendered = false;
//
Log.d("log", "videoRenderer terminated.");
}And the ffmpeg setting at server at as follows.
[slices] = 4 # --slices
[threads] = 4 # --threads
[profile] = high # --profile main|baseline
[preset] = faster # --preset faster|ultrafast
[tune] = zerolatency # --tune -
Evolution #3818 (Fermé) : Redirection sur le formulaire d’inscription
16 août 2016, par phe nixHello,
Il serait agréable d’avoir une option "redirect" (ou "redirect_validation" ?) sur le formulaire d’inscription. Cette redirection ce ferai au moment ou l’utilisateur valide son inscription.
C’est assez systématique, lorsqu’une personne s’inscrit sur le site, on a envie de la rediriger quelque part : une page de bienvenue, son panier/commande en cours, etc.