Recherche avancée

Médias (91)

Autres articles (55)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • MediaSPIP Init et Diogène : types de publications de MediaSPIP

    11 novembre 2010, par

    À l’installation d’un site MediaSPIP, le plugin MediaSPIP Init réalise certaines opérations dont la principale consiste à créer quatre rubriques principales dans le site et de créer cinq templates de formulaire pour Diogène.
    Ces quatre rubriques principales (aussi appelées secteurs) sont : Medias ; Sites ; Editos ; Actualités ;
    Pour chacune de ces rubriques est créé un template de formulaire spécifique éponyme. Pour la rubrique "Medias" un second template "catégorie" est créé permettant d’ajouter (...)

Sur d’autres sites (4281)

  • Revision 101056 : Pour le moment il n’existe pas de saisie input qui permette d’envoyer ...

    11 décembre 2016, par maieul@… — Log

    Pour le moment il n’existe pas de saisie input qui permette d’envoyer un
    tableau.
    Par conséquent le .yaml ne permet pas de remplir le tableau d’option de
    vérification selon un schéma
    ’dimension_max’=&gt ;array(
    ’hauteur’=&gt ;une_hauteur,
    ’largeur’=&gt ;une_largeur
    )
    En conséquence, on modifier légèrement la saisie vérifier pour permettre
    de passer "à plat" les réglages de vérification de dimension sous la
    forme
    ’hauteur_max’=&gt ;une_hauteur,
    ’largeur_max’=&gt ;une_largeur

  • Shaka Player : ignore empty AdaptationSet

    24 juin 2019, par Mitya

    I’m trying to play DASH stream in Shaka Player.
    Sometimes the stream doesn’t have an audio source and its manifest file contains an empty AdaptationSet entry.
    In this case Shaka Player returns the manifest parsing error :

    | DASH_EMPTY_ADAPTATION_SET | 4003 | number |  The DASH Manifest contained an AdaptationSet with no Representations. |

    Is it possible to ignore this error somehow and play the video without audio source ?

    Example of manifest file :

    <?xml version="1.0" encoding="utf-8"?>
    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minimumupdateperiod="PT4S" suggestedpresentationdelay="PT4S" availabilitystarttime="2019-06-24T13:38:04Z" publishtime="2019-06-24T13:38:34Z" timeshiftbufferdepth="PT14.9S" minbuffertime="PT9.9S">
       <programinformation>
           
       </programinformation>
       <period start="PT0.0S">
           <adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true">
               <representation mimetype="video/mp4" codecs="avc1.640028" bandwidth="2000000" width="1920" height="1080" framerate="20/1">
                   <segmenttemplate timescale="10240" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="5">
                       <segmenttimeline>
                           <s t="201697" d="51190" r="2"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
           <adaptationset contenttype="audio" segmentalignment="true" bitstreamswitching="true">
           </adaptationset>
       </period>
    </mpd>
  • ffmpeg dash Segment offset

    18 mars 2019, par inkubux

    I’m trying to integrate live-transcoding like "plex" or "emby" with my application.

    I am able to serve dash content over to shaka-player or dash.js but only in ’live-mode’. But I want to enable seeking through the player.

    I looked at plex and to enable this they create their own mpd file with duration so the player will have a full seekbar.

    However when seeking the player will ask for a segment number eg : 449. I need to stop ffmpeg and restart with an offset (-ss &lt;<segment>>)</segment>, but ffmpeg will just restart a transcode session from segment 0 with an initial segment.

    What I want is to tell ffmpeg to start at a seekpoint but only output from segment number and now-on.

    When playing with hls and mpegts, I can tell ffmpeg to output at a certain segment : with the option -segment_start_number but this is not available for dash. And plex use their own transcoder based of ffmpeg with the option -skip_to_segment

    I tried to ’hack’ around by keeping a manual offset on my web-server, even if I serve the "supposed" right segment after the seek point dash.js and shaka-player can’t recover the stream.. VLC on the other habd is able to (probably more tolerent) to errors in segments.

    Is the supposed right segment after a seek in dash (contains the initial segment) or only the segment.

    Is ffmpeg able to start segmenting dash as a supposed segment (for seek and resume)

    The same technique works in hls with forced key frames and a custom m3u8 (with all the "predicted" segments) but calculating the right segment length and the right bandwidth is much harder and hackish and dash is more tolerant to variation.

    I would really like to be able to seek through my live transcoding video.

    For reference here is a custom mpd file I serve to enable "seeking" :

    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" suggestedpresentationdelay="PT1S" mediapresentationduration="PT49M2.920S" maxsegmentduration="PT2S" minbuffertime="PT10S">
       <period start="PT0S" duration="PT49M2.920S">
           <adaptationset segmentalignment="true">
               <segmenttemplate timescale="1" duration="1" initialization="$RepresentationID$/initial.mp4" media="$RepresentationID$/$Number$.m4s" startnumber="1">
               </segmenttemplate>
               <representation mimetype="video/mp4" codecs="avc1.640029" bandwidth="3766000" width="1920" height="1080">
               </representation>
           </adaptationset>
           <adaptationset segmentalignment="true">
               <segmenttemplate timescale="1" duration="1" initialization="$RepresentationID$/initial.mp4" media="$RepresentationID$/$Number$.m4s" startnumber="1">
               </segmenttemplate>
               <representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="188000" audiosamplingrate="48000">
                   <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="6"></audiochannelconfiguration>
               </representation>
           </adaptationset>
       </period>
    </mpd>

    And here is the ffmpeg command to pull it off :

    ffmpeg -ss 0 -i movie.mkv -y -acodec aac -vcodec libx264 -f dash -min_seg_duration 1000000 -individual_header_trailer 0 -pix_fmt yuv420p -vf scale=trunc(min(max(iw\,ih*dar)\,1920)/2)*2:trunc(ow/dar/2)*2 -bsf:v h264_mp4toannexb -profile:v high -level 4.1 -map_chapters -1 -map_metadata -1 -preset veryfast -movflags frag_keyframe+empty_moov -use_template 1 -use_timeline 0 -remove_at_exit 1 -crf 23 -bufsize 7532k -maxrate 3766k -start_at_zero -threads 0 -force_key_frames expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+1)) -init_seg_name $RepresentationID$/0_initial.mp4 -media_seg_name $RepresentationID$/0_$Number$.m4s /transcoding_temp/Z1GVWEc/index.mpd

    The media_seg_name is where I prepend the custom seek_point let’s say I want to seek to segment 1233 the template would be :

    -media_seg_name $RepresentationID$/1233_$Number$.m4s

    and the segments would be 1233_1 1233_2 1233_* So I can serve the right segment after seek. but the player does not recover and still downloading subsequent segments. I guess since a new initial segment is generated and I somehow miss headers for continuous playback after seek but I’m probably wrong.

    Thanks for your help