
Recherche avancée
Médias (1)
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
Autres articles (98)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
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 (5936)
-
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 #4753 : Styles du privé : listes d’objets (suite des boîtes et des formulaires)
4 mai 2021Un point étape.
Cette fois-ci j’aimerais bien un historique pas trop cassé, donc discussion avant de balancer du code.
Maintenant les captures ne sont plus des maquettes, mais du vrai code.Emballage extérieur¶
Donc pour la partie « emballage extérieur », les boîtes, formulaires et listes sont unifiés et réutilisent les mêmes variables CSS.
Elles ont toutes une variante .mini pour tout ressérer. Cette variante est automatiquement appliquée en certains endroits (dans les colonnes, etc.).Intérieur¶
Pour l’intérieur, j’ai donc appliqué ces quelques règles :
- Padding un peu plus grand
- Plus de largeur fixe, à l’exception de quelques colonnes précises (id, statut, picto)
- Même taille de texte dans toutes les colonnes, à l’exception des
<small></small>
éventuels
Dans les colonnes latérales (.lat), toutes les colonnes du tableau sont masquées à l’exception des .principale et de quelques autres choisies à la main (id, statut).
J’ai testé avec toutes les listes de la dist, il faudra bien continuer à tester avec d’autres cas de figure.
Listes, formulaires et +¶
Le sujet des listes objets-lies et objets-associer m’a amené à déborder un peu du sujet initial. Mais tout est un peu lié, un sujet en amène un autre.
Donc ces 2 listes sont utilisées dans le formulaire editer_liens, j’en ai profité pour essayer de le remettre d’aplomb.
Là j’ai vu qu’avec l’apparence par défaut (bordure grise + fond blanc), quand plusieurs formulaires de liens se suivaient, on avait du mal à voir où finissait l’un et où commençait l’autre (pas de capture, croyez moi sur parole :).
En mettant un fond gris, on les distingue beaucoup mieux.
Et j’ai bien insisté quand ils sont "dépliés", pour distinguer les 2 zones.Mais ça a également un autre avantage : en scannant la fiche objet dans son ensemble, on voit mieux où commence le « vrai » contenu de l’objet, par rapport aux bidules de configuration (date, liens, etc.).
D’abord les formulaires et autres sur fond gris, puis ensuite le texte de l’objet.Donc je pense qu’on pourrait généraliser ça : au lieu de dire « les formulaires editer_liens sont sur fond gris », on pourrait étendre à « tous les formulaires ajoutés par afficher_milieu sont sur fond gris ». Ça reste une règle graphique assez légère, normalement ça ne devrait pas poser de problème avec les formulaires à cet endroit.
Le problème c’est qu’actuellement il n’y a aucun moyen de cibler en CSS ce qui est ajouté par affiche_milieu, il faut encapsuler tout ça dans un div.afficher_milieu (ce que j’ai fait pour tester le principe).Et donc, la fiche objet dans son ensemble pour illustrer :
Ah, et un test pour le formulaire de traductions :
-
Unable to 'make' android ndk project - build fails : [build-openh264-x86] Error 2
18 décembre 2015, par NoobNinjaI’ve attempted these two fixes I’ve found while researching the issue :
android update project --23 --/Users/ajswann/Downloads/android-sdk-macosx
make OS=android NDKROOT=/Users/ajswann/Downloads/android-sdk-macosx TARGET=android-19 ARCH=x86 clean...however neither seems to resolve the issue.
Any input/suggestions are appreciated.
P.S.
I’m running OSX - could this be an issue with attempting to run an x86 architecture on a 64 bit machine ?
Error Message :
chris-mini-mac:linphone-android ajswann$ sudo make
ls: /opt/local/etc/openssl/certs: No such file or directory
/Users/ajswann/Downloads/android-sdk-macosx/tools/android update project --path . --target android-23
Updated project.properties
Updated local.properties
build.xml: Found version-tag: custom. File will not be updated.
Updated file ./proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
/Users/ajswann/Downloads/android-sdk-macosx/tools/android update test-project --path tests -m .
Resolved location of main project to: /groupchat/linphone-android/tests
Updated project.properties
Updated local.properties
Updated file tests/proguard-project.txt
Updated ant.properties
/Users/ajswann/Downloads/android-sdk-macosx/tools/android update project --path liblinphone_tester --target android-23
Updated project.properties
Updated local.properties
Updated file liblinphone_tester/proguard-project.txt
ant -e -S clean
Buildfile: /groupchat/linphone-android/build.xml
No sub-builds to iterate on
mkdir -p /groupchat/linphone-android/submodules/externals/openh264/include/wels
rsync -rvLpgoc --exclude ".git" /groupchat/linphone-android/submodules/externals/openh264/codec/api/svc/* /groupchat/linphone-android/submodules/externals/openh264/include/wels/.
building file list ... done
sent 156 bytes received 20 bytes 352.00 bytes/sec
total size is 56216 speedup is 319.41
mkdir -p /groupchat/linphone-android/submodules/externals/build/openh264
mkdir -p /groupchat/linphone-android/submodules/externals/build/openh264/arm
cd /groupchat/linphone-android/submodules/externals/build/openh264/arm \
&& rsync -rvLpgoc --exclude ".git" /groupchat/linphone-android/submodules/externals/openh264/* .
building file list ... done
sent 18841 bytes received 20 bytes 37722.00 bytes/sec
total size is 48272799 speedup is 2559.40
cd /groupchat/linphone-android/submodules/externals/build/openh264/arm && \
make libraries -j4 OS=android ARCH=arm NDKROOT=/Users/ajswann/Downloads/android-ndk-r10e TARGET=android-19
cd ./ && sh ./codec/common/generate_version.sh
Keeping existing codec/common/inc/version_gen.h
mkdir -p /groupchat/linphone-android/submodules/externals/build/openh264
mkdir -p /groupchat/linphone-android/submodules/externals/build/openh264/x86
cd /groupchat/linphone-android/submodules/externals/build/openh264/x86 \
&& rsync -rvLpgoc --exclude ".git" /groupchat/linphone-android/submodules/externals/openh264/* .
building file list ... done
sent 18841 bytes received 20 bytes 12574.00 bytes/sec
total size is 48272799 speedup is 2559.40
cd /groupchat/linphone-android/submodules/externals/build/openh264/x86 && \
make libraries -j4 OS=android ARCH=x86 NDKROOT=/Users/ajswann/Downloads/android-ndk-r10e TARGET=android-19
cd ./ && sh ./codec/common/generate_version.sh
nasm -DX86_32 -f elf -I./codec/common/x86/ -o codec/decoder/core/x86/dct.o codec/decoder/core/x86/dct.asm
codec/decoder/core/x86/dct.asm:1: error: label or instruction expected at start of line
codec/decoder/core/x86/dct.asm:144: error: label or instruction expected at start of line
codec/decoder/core/x86/dct.asm:234: error: symbol `IdctResAddPred_mmx' redefined
codec/decoder/core/x86/dct.asm:262: error: symbol `WelsBlockZero16x16_sse2' redefined
codec/decoder/core/x86/dct.asm:276: error: symbol `WelsBlockZero8x8_sse2' redefined
codec/decoder/core/x86/dct.asm:287: error: label or instruction expected at start of line
make[1]: *** [codec/decoder/core/x86/dct.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Keeping existing codec/common/inc/version_gen.h
make[1]: *** wait: No child processes. Stop.
make: *** [build-openh264-x86] Error 2Source Repository (I simply clone it, add the platform-tools and tools folder from my android-sdk and run ’make’ and I get this error) :