Recherche avancée

Médias (91)

Autres articles (33)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (5442)

  • DASH package (mpd) I made freezes after raising the onratechange event

    7 mars 2016, par Nick Birke

    I am trying to created an adaptive stream from an mp4 file. I have a decent amount of experience at doing streaming, and have successfully implemented smooth streaming via Silverlight. We want a solution for everything that works in HTML5. I am pursuing DASH. So here are the steps I take...

    1. Resample the mp4 to different sizes using ffmpeg.
    2. Ensure the files are properly fragmented using Bento4s mp4Fragment utility.
    3. Create the DASH mpd file and associated segments using Bento4s mp4dash utility.

    I have done a lot of work to learn each of these utilities and create a process that gets to output that I think will work. To create reliable DASH artifacts. But it seems I am doing something wrong. Here are examples of command lines I run.

    For step one I create three different files... for three different rates and sizes... (these may not be the exact command lines, they are from old notes... but the parameter values are the ones I am using for sure)

    ffmpeg -y -i C:\_SIMULATED_SHARE_C\ff\big_buck_bunny.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 1500k -maxrate 1500k -bufsize 1000k -vf "scale=-1:720" C:\_SIMULATED_SHARE_C\ff\output\outputfile720.mp4

    ffmpeg -y -i C:\_SIMULATED_SHARE_C\ff\big_buck_bunny.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 800k -maxrate 800k -bufsize 500k -vf "scale=-1:540" C:\_SIMULATED_SHARE_C\ff\output\outputfile540.mp4

    ffmpeg -y -i C:\_SIMULATED_SHARE_C\ff\big_buck_bunny.mp4 -c:v libx264 -x264opts keyint=24:min-keyint=24:no-scenecut -b:v 400k -maxrate 400k -bufsize 400k -vf "scale=-1:360" C:\_SIMULATED_SHARE_C\ff\output\outputfile360.mp4

    So that gives you the three files that need to be fragmented. So I fragment them using the mp4fragment utility from Bento4. That command line is simple so I will not offer an example.

    The I use Bento4s mp4dash to create the dash. Something like this...

    "E:\\_INSTALL\\Bento4\\Bento4-SDK-1-4-3-607.x86-microsoft-win32-vs2010\\Bento4-SDK-1-4-3-607.x86-microsoft-win32-vs2010\\bin\\mp4dash.exe --mpd-name=\"\\\\d9fqt52\\_SIMULATED_SHARE_C\\ff\\output\\dash\\something.mpd\" -f -o \"\\\\d9fqt52\\_SIMULATED_SHARE_C\\ff\\output\\dash\" \"\\\\d9fqt52\\_SIMULATED_SHARE_C\\ff\\output\\bunny360f.mp4\" \"\\\\d9fqt52\\_SIMULATED_SHARE_C\\ff\\output\\bunny540f.mp4\" \"\\\\d9fqt52\\_SIMULATED_SHARE_C\\ff\\output\\bunny720f.mp4\" "

    This runs ok. And creates the mpd file, an audio folder with segment files, an a video folder with 3 folders each with the segment files.

    I am able to configure IIS to play the mpd ok. As well as the segement files. The video plays fine... and then it stops. It freezes between 50 and 60 seconds. Right before it freezes I can confirm that the onratechange event of the HTML5 video tag is raised. This is an event that is raised with the rate of play is changed. I do nothing to change this it just happens.

    The actual video in question is about 1hr long. Also I am using the dash.js library as a player.

    If you can identify any components or specifics I should change please let me know !

    UPDATE ON MAR 7, 2016

    As requested here is the MPD content...

    <?xml version="1.0" ?>
    <mpd mediapresentationduration="PT51M51.909S" minbuffertime="PT0.80S" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" xmlns="urn:mpeg:dash:schema:mpd:2011">
     
     <period>
       
       <adaptationset lang="en" mimetype="audio/mp4" segmentalignment="true" startwithsap="1">
         <segmenttemplate duration="801" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/seg-$Number$.m4f" startnumber="1" timescale="1000"></segmenttemplate>
         <representation audiosamplingrate="48000" bandwidth="132491" codecs="mp4a.40.2">
           <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
         </representation>
       </adaptationset>
       
       <adaptationset maxheight="720" maxwidth="1280" mimetype="video/mp4" minheight="540" minwidth="640" segmentalignment="true" startwithsap="1">
         <segmenttemplate duration="801" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/seg-$Number$.m4f" startnumber="1" timescale="1000"></segmenttemplate>
         <representation bandwidth="785536" codecs="avc1.64001F" framerate="30000/1001" height="540" scantype="progressive" width="960"></representation>
         <representation bandwidth="403537" codecs="avc1.64001E" framerate="30000/1001" height="360" scantype="progressive" width="640"></representation>
         <representation bandwidth="1496514" codecs="avc1.64001F" framerate="30000/1001" height="720" scantype="progressive" width="1280"></representation>
       </adaptationset>
     </period>
    </mpd>

    UPDATE ON MAR 7, 2016

    Here is the console output for two different videos that just stop for some unknown reason between 50 and 60s

    ///ABS VIDEO

    58393][rulesController] [RULES]: playbackTimeRule [Fragment:download,82,MediaSegment,0video] Default
    dash.all.js:11 [58395][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,82,MediaSegment,0,video] Default
    dash.all.js:11 [58401][indexHandler][audio] Getting the request for time: 82.082
    dash.all.js:11 [58403][indexHandler][audio] Index for time 82.082 is 81
    dash.all.js:11 [58405][indexHandler][audio] SegmentTemplate: 81.08099999999999 / 1361.235
    dash.all.js:11 [58406][indexHandler][audio] SegmentTemplate: 82.082 / 1361.235
    dash.all.js:11 [58407][rulesController] [RULES]: playbackTimeRule [Fragment:download,82,MediaSegment,0audio] Default
    dash.all.js:11 [58417][fragmentLoader] loaded video:MediaSegment:82.082 (200, 18ms, 2ms)
    dash.all.js:11 [58419][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,82,MediaSegment,0,audio] Default
    dash.all.js:11 [58435][fragmentLoader] loaded audio:MediaSegment:82.082 (200, 14ms, 0ms)
    dash.all.js:11 [59390][indexHandler][video] Getting the request for time: 83.083
    dash.all.js:11 [59392][indexHandler][video] Index for time 83.083 is 82
    dash.all.js:11 [59393][indexHandler][video] SegmentTemplate: 82.082 / 1361.235
    dash.all.js:11 [59394][indexHandler][video] SegmentTemplate: 83.08299999999998 / 1361.235
    dash.all.js:11 [59395][rulesController] [RULES]: playbackTimeRule [Fragment:download,83,MediaSegment,0video] Default
    dash.all.js:11 [59396][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,83,MediaSegment,0,video] Default
    dash.all.js:11 [59401][indexHandler][audio] Getting the request for time: 83.083
    dash.all.js:11 [59403][indexHandler][audio] Index for time 83.083 is 82
    dash.all.js:11 [59404][indexHandler][audio] SegmentTemplate: 82.082 / 1361.235
    dash.all.js:11 [59406][indexHandler][audio] SegmentTemplate: 83.08299999999998 / 1361.235
    dash.all.js:11 [59408][rulesController] [RULES]: playbackTimeRule [Fragment:download,83,MediaSegment,0audio] Default
    dash.all.js:11 [59416][fragmentLoader] loaded video:MediaSegment:83.08299999999998 (200, 17ms, 1ms)
    dash.all.js:11 [59418][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,83,MediaSegment,0,audio] Default
    dash.all.js:11 [59437][fragmentLoader] loaded audio:MediaSegment:83.08299999999998 (200, 14ms, 1ms)
    dash.all.js:11 [59902][scheduleController][video] Stalling Buffer
    dash.all.js:11 [59903][bufferController][video] Waiting for more buffer before starting playback.
    dash.all.js:11 [59906][scheduleController][audio] Stalling Buffer
    dash.all.js:11 [59907][bufferController][audio] Waiting for more buffer before starting playback.
    dash.all.js:11 [63684][playbackController] <video> ratechange:  0




    ///HOG VIDEO

    [58250][rulesController] [RULES]: playbackTimeRule [Fragment:download,105,MediaSegment,0audio] Default
    dash.all.js:11 [58266][fragmentLoader] loaded video:MediaSegment:84.105 (200, 28ms, 1ms)
    dash.all.js:11 [58269][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,105,MediaSegment,0,audio] Default
    dash.all.js:11 [58287][fragmentLoader] loaded audio:MediaSegment:84.105 (200, 14ms, 1ms)
    dash.all.js:11 [58982][indexHandler][video] Getting the request for time: 84.906
    dash.all.js:11 [58983][indexHandler][video] Index for time 84.906 is 105
    dash.all.js:11 [58984][indexHandler][video] SegmentTemplate: 84.105 / 3111.909
    dash.all.js:11 [58984][indexHandler][video] SegmentTemplate: 84.906 / 3111.909
    dash.all.js:11 [58985][rulesController] [RULES]: playbackTimeRule [Fragment:download,106,MediaSegment,0video] Default
    dash.all.js:11 [58986][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,106,MediaSegment,0,video] Default
    dash.all.js:11 [58989][indexHandler][audio] Getting the request for time: 84.906
    dash.all.js:11 [58990][indexHandler][audio] Index for time 84.906 is 105
    dash.all.js:11 [58991][indexHandler][audio] SegmentTemplate: 84.105 / 3111.909
    dash.all.js:11 [58992][indexHandler][audio] SegmentTemplate: 84.906 / 3111.909
    dash.all.js:11 [58993][rulesController] [RULES]: playbackTimeRule [Fragment:download,106,MediaSegment,0audio] Default
    dash.all.js:11 [59002][fragmentLoader] loaded video:MediaSegment:84.906 (200, 14ms, 1ms)
    dash.all.js:11 [59003][rulesController] [RULES]: sameTimeRequestRule [Fragment:download,106,MediaSegment,0,audio] Default
    dash.all.js:11 [59014][fragmentLoader] loaded audio:MediaSegment:84.906 (200, 8ms, 1ms)
    dash.all.js:11 [59735][scheduleController][video] Stalling Buffer
    dash.all.js:11 [59736][bufferController][video] Waiting for more buffer before starting playback.
    dash.all.js:11 [59738][scheduleController][audio] Stalling Buffer
    dash.all.js:11 [59739][bufferController][audio] Waiting for more buffer before starting playback.
    dash.all.js:11 [61695][playbackController] <video> ratechange:  0
    </video></video>
  • Change keyframe interval losslessly to produce mpeg-dash content

    25 mars 2023, par Eeel

    I have a case where i have a mkv file encoded to a 2.5 GB file with x264/CRF settings, in this file group of pictures are not of equal duration (i.e 2,4 or 6 seconds ...).

    &#xA;

    Now i want to create a mpeg-dash version of the file by extracting the video track to mp4 and set the keyframe interval to 2sec losslessly preserving size (minus other audio and subtitle tracks)

    &#xA;

    What i already have that work :

    &#xA;

    Fix keyframe to 2s with x264 :

    &#xA;

    -codec:v libx264 -force_key_frames &#x27;expr:gte(t,n_forced*2)&#x27; -movflags faststart&#xA;

    &#xA;

    But it require also encoding settings that change the quality :

    &#xA;

    -b:v 3500k -maxrate 6000k -bufsize 3500k&#xA;

    &#xA;

    In this case i don't need to change the quality from CRF encoding, just change keyframe interval and set faststart flag.

    &#xA;

    note :&#xA;I have detailed bitrate informations about the file obtained by parsing output of ffprobe : average, min and max bitrate in kb/s.&#xA;Please avoid solution using -crf 0, mpeg-dash files are later crypted using MP4Box that crash with CRF encoded files.

    &#xA;

    How can i do this using ffmpeg ?

    &#xA;

    Edit :

    &#xA;

    Sorry my question is not clear, i'm fine with re-encode, i want to preserve quality as much as possible.

    &#xA;

    Using a little more than source mean bitrate for the -b:v parameter the resulting file size is almost same as source, metric test results are not as good i expect :

    &#xA;

    PSNR 41.03 (expected 44&#x2B;)&#xA;VMAF 76.32 (expected 92&#x2B;)&#xA;

    &#xA;

    Is my bitrate approch good ? Is there anything i can try to improve metric results ?

    &#xA;

  • fate/vpx : make webm dash manifest tests depend on the WEBM_DASH_MANIFEST demuxer

    29 août 2014, par Michael Niedermayer
    fate/vpx : make webm dash manifest tests depend on the WEBM_DASH_MANIFEST demuxer
    

    Found-by : James Almer <jamrial@gmail.com>
    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] tests/fate/vpx.mak