Recherche avancée

Médias (91)

Autres articles (34)

  • Installation en mode ferme

    4 février 2011, par

    Le mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
    C’est la méthode que nous utilisons sur cette même plateforme.
    L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
    Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Configuration spécifique d’Apache

    4 février 2011, par

    Modules spécifiques
    Pour la configuration d’Apache, il est conseillé d’activer certains modules non spécifiques à MediaSPIP, mais permettant d’améliorer les performances : mod_deflate et mod_headers pour compresser automatiquement via Apache les pages. Cf ce tutoriel ; mode_expires pour gérer correctement l’expiration des hits. Cf ce tutoriel ;
    Il est également conseillé d’ajouter la prise en charge par apache du mime-type pour les fichiers WebM comme indiqué dans ce tutoriel.
    Création d’un (...)

Sur d’autres sites (8844)

  • ffmpeg - how to make a preview with short bursts of scenes

    13 avril 2018, par Thomas

    Given a list of timestamps, how can I make a movie where I will extract x seconds at each of the timestamps ?

    for example, if my list is [3, 8, 11], I would like to make a movie made of [3-4][8-9][11-12]

    I know how to extract the frames at the timestamps, but not how to extract a chunk of the movie from a list.

  • FFmpeg av_interleaved_write_frame to buffer

    2 juin 2022, par phantasm

    Hi I am using FFmpeg Autogen C#. Everything works when I use mkv output as a file and h264 rtsp stream as input. Codec is libx264

    


      ffmpeg.avio_open(&container->pb, filename, 2),
  fmpeg.avformat_write_header(container, null)
  ffmpeg.av_read_frame(inputContainer, &pkt)
  ffmpeg.av_interleaved_write_frame(container, &pkt).


    


    Mkv file output is working perfect.
But when I am trying to open AVIOContext to the buffer

    


    ffmpeg.avio_alloc_context(avio_ctx_buffer, 32768, 1, &bd, null, write, seek)


    


    Seek Function

    


    unsafe long seek(void* opaque, long offset, int whence)
    {
        buffer_data* bd = (buffer_data*)opaque;
        switch (whence)
        {
            case 0:
                bd->ptr = bd->buf + offset;
                return (long)bd->ptr;
            case 1:
                bd->ptr += offset;
                break;
            case 2:
                bd->ptr = (bd->buf + bd->size) + offset;
                return (long)bd->ptr;
            case 65536:
                return bd->size;
            default:
                return -1;
        }
        return 1;
    }


    


    Write Function

    


     unsafe int write(void* opaque, byte* buf, int buf_size)
        {

            buffer_data* bd = (buffer_data*)opaque;
            while ((ulong)buf_size > bd->room)
            {
                long offset = bd->ptr - bd->buf;
                bd->buf = (byte*)ffmpeg.av_realloc_f(bd->buf, 2, (ulong)bd->size);
                if (bd->buf == null)
                    return ffmpeg.AVERROR(ffmpeg.ENOMEM);
                bd->size *= 2;
                bd->ptr = bd->buf + offset;
                bd->room = (ulong)(bd->size - offset);
            } 
            memcpy((IntPtr)bd->ptr, (IntPtr)buf, (UIntPtr)buf_size); 
            bd->ptr += buf_size;
            bd->room -= (ulong)buf_size;
            byte[] b = new byte[buf_size];
            Marshal.Copy((IntPtr)buf, b, 0, buf_size);
            using (var fs = new FileStream(@"D:\file1.mkv", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
            {
                using (BinaryWriter writer = new BinaryWriter(fs))
                {
                    writer.Write(b);
                }

            }
            return buf_size;
        }


    


    Buffer Data

    


    public unsafe struct buffer_data
        {
            public byte* buf;
            public long size;
            public byte* ptr;
            public ulong room; ///< size left in the buffer
        };


    


    Result I am getting is 1 second mkv video(its size increases but vlc player is unable to play it).Also notice that writing to file is just for testing I am trying to keep mkv data in buffer.Thank you !!!. If smth missing please comment I will add

    


  • Anomalie #4777 (Nouveau) : Les labels et chaines de langue avec ou sans deux points.

    8 mai 2021

    Des labels avec ou sans deux points...

    Les chaines de langues des labels, historiques de SPIP, ont parfois des deux points, parfois pas.

    Donc dès fois 'truc' => 'Truc', dès fois 'truc' => 'Truc :'
    C’est embêtant quand on veut quelque chose d’homogène.

    On se propose ici de réfléchir à une transition vers des chaines "sans deux points".

    uniformiser_label

    J’ai déjà introduit (dans SPIP 4.0-alpha) une fonction / filtre dans inc/utils.php et utilisée dans le plugin ’statistiques’ : uniformiser_label.
    Ce filtre, dans un squelette avec un idiome tel que <:module:chaine|uniformiser_label:> enlève les espaces divers et : qui pourraient être présents.

    uniformiser_label_inline ?

    Il faudrait trouver un autre filtre pour faire l’inverse : mettre systématiquement les deux points. Notamment pour des couples ou énumérations sur la même ligne "label : texte".
    Trouver un nom du filtre pour ça n’est pas évident ; par contre on pense avoir trouvé à peu près la méthode

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">uniformiser_label_inline</span>(<span class="predefined-type">string</span> <span class="local-variable">$label</span>) : <span class="predefined-type">string</span> {
    2.     <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
    3.     <span class="keyword">return</span> _T(<span class="string"><span class="delimiter">'</span><span class="content">uniformiser_label_inline</span><span class="delimiter">'</span></span>, [<span class="string"><span class="delimiter">'</span><span class="content">label</span><span class="delimiter">'</span></span> => <span class="local-variable">$label</span>]);
    4. }
    5. <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
    6. [
    7.     <span class="comment">// ...</span>
    8.     <span class="string"><span class="delimiter">'</span><span class="content">uniformiser_label_inline</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">@label@ :</span><span class="delimiter">'</span></span>
    9. ]
    10. </span>

    Télécharger

    ou… uniformiser_label_enumeration

    Une autre solution pour la même chose, est de proposer de s’occuper directement des textes de couples "nom : texte" ou "nom : texte, texte, texte."
    Mais c’est peut être plus difficile pour gérer les traductions

    Exemple

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">uniformiser_label_enumeration</span>(<span class="predefined-type">string</span> <span class="local-variable">$label</span>, ...<span class="local-variable">$enums</span> = []) : <span class="predefined-type">string</span> {
    2.     <span class="local-variable">$label</span> = uniformiser_label(<span class="local-variable">$label</span>);
    3.     <span class="comment">// la première entrée peut être un déjà un tableau ?</span>
    4.     <span class="keyword">if</span> (<span class="local-variable">$enums</span> <span class="keyword">and</span> <span class="predefined">is_array</span>(<span class="local-variable">$enums</span>[<span class="integer">0</span>])) {
    5.         <span class="local-variable">$enums</span>[<span class="integer">0</span>] = <span class="predefined">implode</span>(<span class="string"><span class="delimiter">'</span><span class="content">, </span><span class="delimiter">'</span></span>, <span class="local-variable">$enums</span>[<span class="integer">0</span>]);
    6.     }
    7.     <span class="local-variable">$enums</span> = <span class="predefined">implode</span>(<span class="string"><span class="delimiter">'</span><span class="content">, </span><span class="delimiter">'</span></span>, <span class="local-variable">$enums</span>);
    8.     <span class="keyword">return</span> <span class="predefined">trim</span>(_T(<span class="string"><span class="delimiter">'</span><span class="content">label_enumeration</span><span class="delimiter">'</span></span>, [<span class="string"><span class="delimiter">'</span><span class="content">label</span><span class="delimiter">'</span></span> => <span class="local-variable">$label</span>, <span class="string"><span class="delimiter">'</span><span class="content">enums</span><span class="delimiter">'</span></span> => <span class="local-variable">$enums</span>]));
    9. }
    10. <span class="comment">// avec la chaine de langue (pareil nom à trouver)</span>
    11. [
    12.     <span class="comment">// ...</span>
    13.     <span class="string"><span class="delimiter">'</span><span class="content">label_enumeration</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">@label@ : @enums@.</span><span class="delimiter">'</span></span>
    14. ]
    15. </span>

    Télécharger

    Ça veut dire ici que toutes les langues ont "virgule" en séparateur…

    Quelques notes sur les deux points

    Je suppose qu’ulitiser le terme "deux_points" dans les chaines de langue ne marche pas car ce n’est pas très sémantique. Mais pas facile de trouver un super terme.

    https://www.noslangues-ourlanguages.gc.ca/fr/cles-de-la-redaction/deux-points

    « On utilise le deux-points pour annoncer ce qui s’en vient dans le texte, que ce soit un exemple, une énumération, une explication, une citation, un discours direct, une analyse ou un récit. Le deux-points sert aussi à annoncer un jugement, une synthèse, une conclusion, une cause, une conséquence, etc. »