
Recherche avancée
Médias (91)
-
Les Miserables
9 décembre 2019, par
Mis à jour : Décembre 2019
Langue : français
Type : Textuel
-
VideoHandle
8 novembre 2019, par
Mis à jour : Novembre 2019
Langue : français
Type : Video
-
Somos millones 1
21 juillet 2014, par
Mis à jour : Juin 2015
Langue : français
Type : Video
-
Un test - mauritanie
3 avril 2014, par
Mis à jour : Avril 2014
Langue : français
Type : Textuel
-
Pourquoi Obama lit il mes mails ?
4 février 2014, par
Mis à jour : Février 2014
Langue : français
-
IMG 0222
6 octobre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Image
Autres articles (37)
-
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 (...) -
Participer à sa documentation
10 avril 2011La documentation est un des travaux les plus importants et les plus contraignants lors de la réalisation d’un outil technique.
Tout apport extérieur à ce sujet est primordial : la critique de l’existant ; la participation à la rédaction d’articles orientés : utilisateur (administrateur de MediaSPIP ou simplement producteur de contenu) ; développeur ; la création de screencasts d’explication ; la traduction de la documentation dans une nouvelle langue ;
Pour ce faire, vous pouvez vous inscrire sur (...) -
Encodage et transformation en formats lisibles sur Internet
10 avril 2011MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)
Sur d’autres sites (5454)
-
Xuggler decode H264 packets
18 novembre 2015, par Roy BeanI’m making a test with xuggler, and I’m observing a behavior that I don’t understand.
So I have a H264 frame, stored in a file and I want to decode it.
Bassically I need of the IVideoPicture to then get a buffred image.for the same same packet I need of 10 tries until it retrieved that the IVideoPicture is complete.
this is what ffmpeg does when reads the frame :
Input #0, h264, from 'sample1.jpg':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Baseline), yuv420p, 352x288, 25 tbr, 1200k tbn, 50 tbcCan someone of xuggler or ffmpeg knowledge explain what is happen ?
My code bellow :
IContainer container = IContainer.make();
RandomAccessFile aFile = new RandomAccessFile("c://sample1Frame/sample1.jpg","r");
IContainerFormat format = IContainerFormat.make();
format.setInputFormat("h264");
container.open(aFile, IContainer.Type.READ, null);
int numStreams = container.getNumStreams();
IStreamCoder videoCoder = null;
for(int i = 0; i < numStreams; i++)
{
IStream stream = container.getStream(i);
// Get the pre-configured decoder that can decode this stream;
IStreamCoder coder = stream.getStreamCoder();
if(coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO)
{
System.out.println("coder");
}
videoCoder = coder;
}
// The timebase here is used as the camera frame rate
videoCoder.setTimeBase(IRational.make(25,1));
// we need to tell the driver what video with and height to use
videoCoder.setWidth(352);
videoCoder.setHeight(288);
if(videoCoder.open(null , null) < 0){
System.err.println("Could not open video decoder for input container");
return;
}
// videoCoder.setFlag(IStreamCoder.Flags.FLAG_QSCALE,true);
// videoCoder.setFlag(IStreamCoder.Flags.FLAG2_FAST,true);
IPacket packet = IPacket.make();
// long firstTimestampInStream = Global.NO_PTS;
// long systemClockStartTime = 0;
int complete = 1;
while(container.readNextPacket(packet) >= 0){
int trys= 1;
System.out.println("PCK = ");
while(true)
{
trys++;
System.out.println("trys = " + trys);
System.out.println("packet " + packet.getSize());
IVideoPicture picture = IVideoPicture.make(videoCoder.getPixelType(), videoCoder.getWidth(), videoCoder.getHeight());
//TODO
int offset = 0;
while(offset < packet.getSize())
{
/*
* Now, we decode the video, checking for any errors.
*
*/
System.out.println("packet getTimeBase " + packet.getTimeBase());
System.out.println("vc getTimeBase " + videoCoder.getTimeBase());
System.out.println("vc getCodecID " + videoCoder.getCodecID().toString());
int bytOffset = videoCoder.decodeVideo(picture, packet, offset);
Logger.getLogger(VideoSamsung.class.getName()).log(Level.SEVERE,"bytOffset = " + bytOffset);
if(bytOffset < 0){
// videoCoder.close();
// // picture.setComplete(true, com.xuggle.xuggler.IPixelFormat.Type.YUV420P, 352, 288, packet.getPts());
// System.err.println("picture.isComplete()"+picture.isComplete());
// BufferedImage sdf = Utils.videoPictureToImage(picture);
// File outputfile = new File("c://sdf/image.jpg");
// ImageIO.write(sdf, "jpg", outputfile);
Logger.getLogger(VideoSamsung.class.getName()).log(Level.SEVERE,"BUMMMMMM!!!!!!!!!!!!!!!!!!!");
break;
}else{
//System.out.println(DatatypeConverter.printBase64Binary(videoCoder.getExtraData().getByteArray(0, videoCoder.getExtraData().getSize())));
}
offset += bytOffset;
System.err.println("picture.isComplete()"+picture.isComplete());
/*
* Some decoders will consume data in a packet, but will not be able to construct
* a full video picture yet. Therefore you should always check if you
* got a complete picture from the decoder
*/
}//end while(offset < packet.getSize())
if (picture.isComplete())
{
System.out.println("isComplete");
IVideoPicture newPic = picture;
BufferedImage sdf = Utils.videoPictureToImage(picture);
File outputfile = new File("c://sdf/image_"+complete+".jpg");
ImageIO.write(sdf, "jpg", outputfile);
complete++;
System.out.println("trys = " + trys);
break;
// System.exit(0);
}else{
System.out.println("Picture is not Complete");
}
if(trys > 20){
System.out.println("FAIL!!!!!!!!!! trys = " + trys);
break;
}
}
}
/*
* Technically since we're exiting anyway, these will be cleaned up by
* the garbage collector... but because we're nice people and want
* to be invited places for Christmas, we're going to show how to clean up.
*/
if (videoCoder != null)
{
videoCoder.close();
videoCoder = null;
}
if (container !=null)
{
container.close();
container = null;
}the console output :
PCK =
trys = 2
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
Picture is not Complete
trys = 3
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
picture.isComplete()false
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
Picture is not Complete
picture.isComplete()false
trys = 4
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 5
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 6
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 7
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 8
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 9
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()false
Picture is not Complete
trys = 10
packet 1748
packet getTimeBase 1/1200000
vc getTimeBase 25/1
vc getCodecID CODEC_ID_H264
Nov 18, 2015 5:39:11 PM filepath main
SEVERE: bytOffset = 1748
picture.isComplete()true
isComplete
trys = 10 -
Evolution #3962 (Nouveau) : Générer des JPEG progressifs
18 juin 2017, par Michel BystranowskiLe format JPEG propose un encodage « progressif » qui permet aux navigateurs d’afficher une version peu détaillée de l’image avant la réception complète, ce qui améliore l’expérience utilisateur sur des mauvaises connections. En cherchant un peu je ne trouve pas de contre-indications. Les vieux IE ne supportent pas ce format, mais affichent quand même les images après réception complète, donc pas de changement par rapport aux JPEG « classiques ».
La librairie GD permet de générer ce genre de JPEG très facilement, il suffit d’appeler la fonction
imageinterlace
(https://secure.php.net/manual/en/function.imageinterlace.php) avant de générer le JPEG.Du coup il me semble qu’on pourrait utiliser ça dans SPIP, en ajoutant simplement un petit
imageinterlace($img, 1);
dans la fonction_image_imagejpg
qui se trouve dansecrire/inc/filtres_images_mini.php
. -
Anomalie #2580 : les icones de l’espace privé sont pas belles et trop petites
24 mars 2012, par cedric -le boussole vraiment atroce est remplacée par r19145 on peut dire que le ticket est plus bloquant, l’ideal étant evidemment d’avoir une proposition complete d’icone ?