
Recherche avancée
Médias (3)
-
Exemple de boutons d’action pour une collection collaborative
27 février 2013, par
Mis à jour : Mars 2013
Langue : français
Type : Image
-
Exemple de boutons d’action pour une collection personnelle
27 février 2013, par
Mis à jour : Février 2013
Langue : English
Type : Image
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
Autres articles (90)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
ANNEXE : Les plugins utilisés spécifiquement pour la ferme
5 mars 2010, parLe site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)
Sur d’autres sites (10026)
-
Revision 101059 : saisies_verifier() : dans le cas d’une vérification de type fichiers il ...
11 décembre 2016, par maieul@… — Logsaisies_verifier() : dans le cas d’une vérification de type fichiers
il faut également stocker quelque part le détail des erreurs par fichier
en revanche il n’y pas besoin de normaliser les saisies de type fichiers -
Return only video type (extension) by ffmpeg
3 juillet 2018, par soroushI’m developing an converter service and I use FFMPEG to convert videos.
I want to check input files, which kind of really is video.
I used following command and get file type. But if the file has been manipulated It can not understand :
curl -s -o /dev/null -w "%{content_type}" ${url}
I really want to just get video type by ffmpeg.
can anyone help me ?
-
Do we have to return full buffers each time our AVIO `read_packet()` callback from FFMPEG is called ?
8 janvier 2023, par Alexis WilkeI allocate an AVIO context with my own
read_packet()
implementation. Only my implementation is such that I may return with acount
smaller than the required inputbuf_size
. Is that allowed ? Or do we have to fill the buffer as much as possible each time outread_packet()
function gets called ?

// initialization
 [...snip...]
 m_avio_context.reset(avio_alloc_context(
 avio_buffer
 , avio_buffer_size
 , 0 // write flag
 , this // opaque
 , &FFMPEGDecoder::decoder_read_static
 , nullptr // write func.
 , nullptr)); // seek func.
 [...snip...]

// implementation of static function
int FFMPEGDecoder::decoder_read_static(void * opaque, std::uint8_t * buf, int size)
{
 return reinterpret_cast<ffmpegdecoder>(opaque)->decoder_read(buf, size);
}

// the actual read_packet()
int FFMPEGDecoder::decoder_read(std::uint8_t * buf, int size)
{
 // in flushing mode, we won't receive any more packets
 //
 if(m_flushing)
 {
 return 0;
 }

 // m_packet is my own packet implementation (an std::vector<>)
 //
 while(m_packet == nullptr
 || static_cast(m_read_pos) >= m_packet->size())
 {
 if(!m_incoming_packets.pop_front(m_packet, -1))
 {
 return 0;
 }
 if(m_packet->is_flush())
 {
 m_flushing = true;
 return 0;
 }
 m_read_pos = 0;
 }

 // the number of bytes to copy size `size` or less if there are
 // less bytes available in my m_packet
 //
 int const copy(std::min(static_cast(size), m_packet->size() - m_read_pos));

 memcpy(buf, m_packet->data().data() + m_read_pos, copy);

 m_read_pos += copy;

 return copy;
}
</ffmpegdecoder>


I'm not looking for a way to fill the buffer, I'm going to implement it that way now. I'm looking for confirmation (or not) that the FFMPEG libraries are not capable of accepting less than
size
bytes inbuf
when ourread_packet()
gets called.

Do you know ?