Recherche avancée

Médias (91)

Autres articles (55)

  • Participer à sa traduction

    10 avril 2011

    Vous 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 (...)

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

  • L’agrémenter visuellement

    10 avril 2011

    MediaSPIP est basé sur un système de thèmes et de squelettes. Les squelettes définissent le placement des informations dans la page, définissant un usage spécifique de la plateforme, et les thèmes l’habillage graphique général.
    Chacun peut proposer un nouveau thème graphique ou un squelette et le mettre à disposition de la communauté.

Sur d’autres sites (10241)

  • Unable to get nginx-vod-module plugin to work

    31 octobre 2020, par AAP

    My first time trying hands on nginx-vod-module or any video streaming for that matter.
I just want to play static mp4 videos which I place on the server but via hls instead of direct mp4 access. No actual live streaming

    


    Q1. Am I right in understanding that a mp4 video which I place locally on my server, will automatically get broken down into segments for HLS ?

    


    My nginx installation is here : /opt/kaltura/nginx
The mp4 file is placed at /opt/kaltura/nginx/test/vid.mp4

    


    In ../nginx/conf/server.conf, I have this :

    


    location /hls/ {
            alias test/;
            vod hls;
            vod_bootstrap_segment_durations 2000;
            vod_bootstrap_segment_durations 2000;
            vod_bootstrap_segment_durations 2000;
            vod_bootstrap_segment_durations 4000;

            include /opt/kaltura/nginx/conf/cors.conf;
        }
location / {
            root   html;
        }


    


    Now, I am able to access the m3u8 file :
curl http://104.167xxxxx/hls/vid.mp4/index.m3u8

    


    But when I try to open this file via VLC, I see these errors in errors.log :

    


    *2020/10/31 15:00:08 [error] 12749#0: *60 mp4_parser_validate_stsc_atom: zero entries, client: 49.207 ..., server: ubuntu, request: "GET /hls/vid.mp4/seg-1-v1.ts HTTP/1.1", host: "104.167. ..."
2020/10/31 15:00:08 [error] 12752#0: *61 mp4_parser_validate_stsc_atom: zero entries, client: 49.207 ..., server: ubuntu, request: "GET /hls/vid.mp4/seg-2-v1.ts HTTP/1.1", host: "104.167. ..."
2020/10/31 15:00:09 [error] 12749#0: *62 mp4_parser_validate_stsc_atom: zero entries, client: 49.207 ..., server: ubuntu, request: "GET /hls/vid.mp4/seg-3-v1.ts HTTP/1.1", host: "104.167. ..."
2020/10/31 15:00:10 [error] 12751#0: *63 mp4_parser_validate_stsc_atom: zero entries, client: 49.207 ..., server: ubuntu, request: "GET /hls/vid.mp4/seg-4-v1.ts HTTP/1.1", host: "104.167. ..."*


    


    Q2 : Is https must for this to work ?
Q3 : I dont see any /hls/vid.mp4 folder created anywhere on the server. Do I have to manually run ffmpeg separately to create the hls segments ?

    


    What wrong am I doing ?

    


  • Anomalie #4830 : extraire_date extravagant

    6 juillet 2021

    Pourquoi pas. Je te propose (ou quelqu’un) de faire une PR pour ça.
    Il faudrait ajouter en même temps des tests unitaires parce que bon.
    Ci dessous un code valide qui fait la demande.

    Ce qui me gène tout de même c’est le [^0-9]* dans la regex (déjà présente dans l’ancienne fonction) qui du coup peut chercher une date coupée dans un grand texte…
    Tel que : "En 2012 à l’orée du bois se trouvait 10 chevaux et 4 biches.", qui sort la date "2012-10-04" (ou 2012-10-01 avant cette proposition).
    Donc l’usage est possiblement assez limité de cette fonction si laissée telle quelle.

    1. <span class="CodeRay">
    2. <span class="comment">/**
    3.  * Extrait une date d'un texte et renvoie le résultat au format de date SQL
    4.  *
    5.  * L'année et le mois doivent être numériques.
    6.  * Le séparateur entre l'année et le mois peut être un `-`, un `:` ou un texte
    7.  * quelconque ne contenant pas de chiffres.
    8.  *
    9.  * Si un numéro de jour valide n'est pas indiqué, le résultat est alors le 1er du mois.
    10.  *
    11.  * @link https://www.spip.net/5516
    12.  * @param string $texte
    13.  *    Texte contenant une date tel que `2008-04`
    14.  * @return string
    15.  *    Date au format SQL tel que `2008-04-01`
    16.  **/</span>
    17. <span class="keyword">function</span> <span class="function">extraire_date</span>(<span class="local-variable">$texte</span>) {
    18.     <span class="comment">// format = 2001-08-12 ou 2001-08</span>
    19.     <span class="local-variable">$has_date</span> = <span class="predefined">preg_match</span>(
    20.         <span class="string"><span class="delimiter">"</span><span class="content">,
    21.        # une annee
    22.        (?P<annee>[1-2][0-9]</annee></span><span class="content">{</span><span class="content">3})
    23.        # des caracteres sans numeros
    24.        [^0-9]*
    25.        # un mois
    26.        (?P<mois>1[0-2]|0?[1-9])
    27.        (?:
    28.            # des caracteres sans numeros
    29.            [^0-9]*
    30.            # un jour
    31.            (?P<jour>3[0-1]|[1-2][0-9]|0?[1-9])
    32.        )?
    33.        ,x</jour></mois></span><span class="delimiter">"</span></span>,
    34.         <span class="local-variable">$texte</span>,
    35.         <span class="local-variable">$regs</span>
    36.     );
    37.     <span class="keyword">if</span> (<span class="local-variable">$has_date</span>) {
    38.         <span class="local-variable">$date</span> = [
    39.             <span class="local-variable">$regs</span>[<span class="string"><span class="delimiter">"</span><span class="content">annee</span><span class="delimiter">"</span></span>],
    40.             <span class="predefined">sprintf</span>(<span class="string"><span class="delimiter">"</span><span class="content">%02d</span><span class="delimiter">"</span></span>, <span class="local-variable">$regs</span>[<span class="string"><span class="delimiter">"</span><span class="content">mois</span><span class="delimiter">"</span></span>]),
    41.             <span class="predefined">sprintf</span>(<span class="string"><span class="delimiter">"</span><span class="content">%02d</span><span class="delimiter">"</span></span>, <span class="local-variable">$regs</span>[<span class="string"><span class="delimiter">"</span><span class="content">jour</span><span class="delimiter">"</span></span>] ?? <span class="string"><span class="delimiter">"</span><span class="content">01</span><span class="delimiter">"</span></span>)
    42.         ];
    43.         <span class="keyword">return</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">$date</span>);
    44.     }
    45. }
    46. </span>

    Télécharger


    #SQUELETTE

    #SET{liste,#LISTE{
       "Une date 2020 01",
       "Une date 2020 12 autre",
       "Une date 2020 autre 12 autre",
       "Une date 2021 12 01",
       "Une date 2021 12 00",
       "Une date 2021 12 31",
       "Une date 2021 12 32",
       "Une date 2021 autre 12 date 21",
       "En 2012 à l’orée du bois se trouvait 10 chevaux et 4 biches."
    }}

    <dl>

    <dt>#VALEUR</dt>
    <dd>[(#VALEUR|extraire_date)]</dd>

    </dl>

    Sortie :

    1. Une date 2020 01
    2.     2020-01-01
    3. Une date 2020 12 autre
    4.     2020-12-01
    5. Une date 2020 autre 12 autre
    6.     2020-12-01
    7. Une date 2021 12 01
    8.     2021-12-01
    9. Une date 2021 12 00
    10.     2021-12-01
    11. Une date 2021 12 31
    12.     2021-12-31
    13. Une date 2021 12 32
    14.     2021-12-03
    15. Une date 2021 autre 12 date 21
    16.     2021-12-21
    17. En 2012 à l’orée du bois se trouvait 10 chevaux et 4 biches.
    18.     2012-10-04

    Télécharger

  • UDP Receiver needs to start before udp sender

    11 janvier 2020, par user27443

    I’m trying to send video from a raspberry pi 0w with camera running Raspian Buster to a machine running Ubuntu 18.04. I’m using ffmpeg to encode to h264 using hardware on the raspi end, and then sending the data with gst-launch-1.0 over UDP. The issue is that if I start the raspi stream, and then start the receiver, the receiver never connects. If I start the receiver and then start the raspi stream, then they connect perfectly.

    Raspi encode and send command :

    ffmpeg -f video4linux2 -framerate 30 -video_size 1280x720 -i /dev/video0 -c:v h264_omx -b:v 2000k -f avi pipe:1 | gst-launch-1.0 --gst-debug=3 fdsrc ! udpsink host=192.168.1.142 port=8090

    Receive and decode and display command :

    gst-launch-1.0 udpsrc port=8090 ! queue ! h264parse ! avdec_h264 ! xvimagesink sync=false

    I’ve looked at the udpsink and udpsrc properties and tried messing around with buffer-size, blocksize, and sync with no luck. I’ve also tried using ffmpeg from python to see if the issue was on the receiver side, with the exact same problem.

    import cv2

    cap = cv2.VideoCapture('udp://127.0.0.1:8090',cv2.CAP_FFMPEG)
    if not cap.isOpened():
       print('VideoCapture not opened')
       exit(-1)

    while True:
       ret, frame = cap.read()

       if not ret:
           print('frame empty')
           break

       cv2.imshow('image', frame)

       if cv2.waitKey(1)&amp;0XFF == ord('q'):
           break

    cap.release()
    cv2.destroyAllWindows()

    In the end, I might just write a small protocol that toggles the sender if no packets are getting through, but I was hoping that UDP would handle the connection better.

    This question seemed simliar : UDP : Client started before Server but didn’t resolve my issue since I don’t have any blocking ability with gstreamer/ffmpeg.