Recherche avancée

Médias (1)

Mot : - Tags -/école

Autres articles (92)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Amélioration de la version de base

    13 septembre 2013

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

Sur d’autres sites (10009)

  • ffmpeg-mp4box-mpeg dash plays only few segments

    30 octobre 2015, par Idris

    Need help in debugging the segment dash files

    The input was an MP4 with these details. This was recorded from a video camera, the output from the camera was mkv and we converted into MP4 after editing the audio via adobe

    • Size : 7.51 GB Frame rate : 25 frames/ second
    • Data rate : 25326kbps
    • Total bitrate : 25525kbps

    Converted this to another mp4 with this command

    ffmpeg -i "input.mp4" -s 1280x720 -c:v libx264 -b:v 750k -bf 2 -g 75 -sc_threshold 0 -an video_1280x720_750k.mp4

    ffmpeg -i "input.mp4"  -c:a aac -strict experimental -b:a 96k -ar 32000 -vn audio_96k.mp4

    The output video has

    • fps : 25
    • Data rate : 761kbps
    • bitrate : 761kbps

    Then, created the segmented dash through MP4Box

    MP4Box -dash 10000 -frag 10000 -rap -segment-name video_0_1280000\segment_ video_1280x720_750k.mp4

    MP4Box -dash 3000 -frag 10000 -rap -segment-name audio_0_96000\segment_ audio_96k.mp4

    The MPD generated was validated online and its perfect

    UPDATE ! Included the MPD file

    <?xml version="1.0"?>

    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" minbuffertime="PT1.500S" type="static" mediapresentationduration="PT0H2M0.000S" maxsegmentduration="PT0H0M10.000S" profiles="urn:mpeg:dash:profile:full:2011">
    <programinformation moreinformationurl="http://gpac.sourceforge.net">
     
    </programinformation>

    <period duration="PT0H2M0.000S">
      <adaptationset segmentalignment="true" lang="eng">
        <representation mimetype="audio/mp4" codecs="mp4a.40.2" audiosamplingrate="32000" startwithsap="1" bandwidth="98434">
          <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
          <segmentlist timescale="32000" duration="319999">
            <initialization sourceurl="audio_0_96000/segment_init.mp4"></initialization>
            <segmenturl media="audio_0_96000/segment_1.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_2.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_3.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_4.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_5.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_6.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_7.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_8.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_9.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_10.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_11.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_12.m4s"></segmenturl>
            <segmenturl media="audio_0_96000/segment_13.m4s"></segmenturl>
          </segmentlist>
        </representation>
      </adaptationset>
     <adaptationset segmentalignment="true" maxwidth="1280" maxheight="720" maxframerate="25" par="16:9" lang="eng">
      <representation mimetype="video/mp4" codecs="avc3.64001f" width="1280" height="720" framerate="25" sar="1:1" startwithsap="1" bandwidth="764668">
       <segmentlist timescale="12800" duration="125866">
        <initialization sourceurl="video_0_1280000/segment_init.mp4"></initialization>
        <segmenturl media="video_0_1280000/segment_1.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_2.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_3.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_4.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_5.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_6.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_7.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_8.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_9.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_10.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_11.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_12.m4s"></segmenturl>
        <segmenturl media="video_0_1280000/segment_13.m4s"></segmenturl>
       </segmentlist>
      </representation>
     </adaptationset>

    </period>
    </mpd>

    Played the video through dashjs.. I believe it just plays the initial segment and errors out as MEDIA_ERR_DECODE..MEDIA_ERR_SRC_NOT_SUPPORTED.. or some message which says start not found..

    Through chrome debugging I see that atleast 4 segments are correctly loading.. I am not sure whats going on..

    Any help in debugging the issue is really appreciated. I really can’t understand if this is a problem with the file or ffmpeg or mp4box or chrome.

    Output from chrome debugging tool

    [dash.js 1.5.1] new MediaPlayer instance has been created
    dash.all.js:11 Playback initiated!
    dash.all.js:11 Parsing complete: ( xml2json: 5ms, objectiron: 10ms, total: 0.015s)
    dash.all.js:11 Manifest has been refreshed at Mon Oct 26 2015 10:19:22 GMT-0400 (Eastern Daylight Time)[1445869162092]  
    dash.all.js:11 SegmentTimeline detected using calculated Live Edge Time
    dash.all.js:11 MediaSource is open!
    dash.all.js:11 [object Event]
    dash.all.js:11 Duration successfully set to: 120
    dash.all.js:11 Added 0 inline events
    dash.all.js:11 video codec: video/mp4;codecs="avc3.64001f"
    dash.all.js:11 [video] stop
    dash.all.js:11 audio codec: audio/mp4;codecs="mp4a.40.2"
    dash.all.js:11 [audio] stop
    dash.all.js:11 No text data.
    dash.all.js:11 No fragmentedText data.
    dash.all.js:11 No muxed data.
    dash.all.js:11 [video] start
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 [video] SegmentList: 0 / 120
    dash.all.js:11 [audio] start
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 [audio] SegmentList: 0 / 120
    dash.all.js:11 [video] Getting the request for time: 9.83328125
    dash.all.js:11 [video] Index for time 9.83328125 is 0
    dash.all.js:11 [video] SegmentList: 0 / 120
    dash.all.js:11 [video] SegmentList: 9.83328125 / 120
    dash.all.js:11 [audio] Getting the request for time: 9.99996875
    dash.all.js:11 [audio] Index for time 9.99996875 is 0
    dash.all.js:11 [audio] SegmentList: 0 / 120
    dash.all.js:11 [audio] SegmentList: 9.99996875 / 120
    dash.all.js:11 loaded audio:Media Segment:0 (200, 20ms, 6ms)
    dash.all.js:11 loaded video:Media Segment:0 (200, 153ms, 43ms)
    dash.all.js:11 loaded video:Initialization Segment:NaN (200, 0ms, 32ms)
    dash.all.js:11 [video] Initialization finished loading
    dash.all.js:11 loaded audio:Initialization Segment:NaN (200, 0ms, 34ms)
    dash.all.js:11 [audio] Initialization finished loading
    dash.all.js:11 [video] Getting the request for time: 19.6665625
    dash.all.js:11 [video] Index for time 19.6665625 is 1
    dash.all.js:11 [video] SegmentList: 9.83328125 / 120
    dash.all.js:11 [video] SegmentList: 19.6665625 / 120
    dash.all.js:11 [audio] Getting the request for time: 19.9999375
    dash.all.js:11 [audio] Index for time 19.9999375 is 1
    dash.all.js:11 [audio] SegmentList: 9.99996875 / 120
    dash.all.js:11 [audio] SegmentList: 19.9999375 / 120
    dash.all.js:11 [video] Stalling Buffer
    dash.all.js:11 [video] Waiting for more buffer before starting playback.
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 [audio] Stalling Buffer
    dash.all.js:11 [audio] Waiting for more buffer before starting playback.
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 <video> loadedmetadata
    dash.all.js:11 Starting playback at offset: 0
    dash.all.js:11 [video] Getting the request for time: 29.499843750000004
    dash.all.js:11 [video] Index for time 29.499843750000004 is 2
    dash.all.js:11 [video] SegmentList: 19.6665625 / 120
    dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120
    dash.all.js:11 [video] Got enough buffer to start.
    dash.all.js:11 [video] seek: 0
    dash.all.js:11 [audio] Getting the request for time: 29.999906250000002
    dash.all.js:11 [audio] Index for time 29.999906250000002 is 2
    dash.all.js:11 [audio] SegmentList: 19.9999375 / 120
    dash.all.js:11 [audio] SegmentList: 29.999906250000002 / 120
    dash.all.js:11 [audio] Got enough buffer to start.
    dash.all.js:11 [audio] seek: 0
    dash.all.js:11 loaded audio:Media Segment:9.99996875 (200, 67ms, 24ms)
    dash.all.js:11 loaded video:Media Segment:9.83328125 (200, 71ms, 31ms)
    dash.all.js:11 [audio] Buffered Range: 0.032 - 9.984
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 Start Event Controller
    dash.all.js:11 [audio] Buffered Range: 0.032 - 19.999968
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 <video> play
    dash.all.js:11 [video] start
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 [video] SegmentList: 0 / 120
    dash.all.js:11 [video] SegmentList: 9.83328125 / 120
    dash.all.js:11 [video] SegmentList: 19.6665625 / 120
    dash.all.js:11 [audio] start
    dash.all.js:11 <video> playing
    dash.all.js:11 [video] Buffered Range: 0 - 9
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 Do seek: 0.032
    dash.all.js:11 <video> seek
    dash.all.js:11 [video] Getting the request for time: 29.499843750000004
    dash.all.js:11 [video] Index for time 29.499843750000004 is 2
    dash.all.js:11 [video] SegmentList: 19.6665625 / 120
    dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120
    dash.all.js:11 [video] seek: 0.032
    dash.all.js:11 [audio] seek: 0.032
    dash.all.js:11 [video] Getting the request for time: 9
    dash.all.js:11 [video] Index for time 9 is 0
    dash.all.js:11 [video] SegmentList: 0 / 120
    dash.all.js:11 [video] SegmentList: 9.83328125 / 120
    dash.all.js:11 [video] SegmentList: 19.6665625 / 120
    dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120
    dash.all.js:11 [video] Buffered Range: 0 - 18
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 loaded video:Media Segment:19.6665625 (200, 42ms, 33ms)
    dash.all.js:11 <video> seeked
    dash.all.js:11 Start Event Controller
    dash.all.js:11 <video> playing
    dash.all.js:11 [video] Buffered Range: 0 - 28
    dash.all.js:11 [video] Getting the request for time: 0
    dash.all.js:11 [video] Index for time 0 is 0
    dash.all.js:11 [audio] Getting the request for time: 19.999968
    dash.all.js:11 [audio] Index for time 19.999968 is 1
    dash.all.js:11 [audio] SegmentList: 9.99996875 / 120
    dash.all.js:11 [audio] SegmentList: 19.9999375 / 120
    dash.all.js:11 [audio] Getting the request for time: 29.999906250000002
    dash.all.js:11 [audio] Index for time 29.999906250000002 is 2
    dash.all.js:11 [audio] SegmentList: 19.9999375 / 120
    dash.all.js:11 [audio] SegmentList: 29.999906250000002 / 120
    dash.all.js:11 loaded audio:Media Segment:19.9999375 (200, 102ms, 2ms)
    dash.all.js:11 [audio] Buffered Range: 0.032 - 29.983968
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 loaded audio:Media Segment:29.999906250000002 (200, 26ms, 2ms)
    dash.all.js:11 [audio] Buffered Range: 0.032 - 39.999968
    dash.all.js:11 [audio] Getting the request for time: 0
    dash.all.js:11 [audio] Index for time 0 is 0
    dash.all.js:11 loaded video:Media Segment:29.499843750000004 (200, 47ms, 7ms)
    dash.all.js:11 Video Element Error: MEDIA_ERR_DECODE
    dash.all.js:11 [video] stop
    dash.all.js:11 [audio] stop
    dash.all.js:11 Video Element Error: MEDIA_ERR_SRC_NOT_SUPPORTED
    dash.all.js:11 <video> play
    </video></video></video></video></video></video></video>
  • How to play ffmpeg dash ?

    30 janvier 2024, par Roshan Ojha

    I have following code to create chunk of video.

    &#xA;

    permission_classes=[AllowAny]&#xA;video_serializer = serializers.video_serializer&#xA;&#xA;def process_video(self, video_path, video_id):&#xA;    # Set the path where the processed videos will be saved&#xA;    output_dir = os.path.join(settings.MEDIA_ROOT, &#x27;processed_videos&#x27;)&#xA;&#xA;     # Create the output directory if it doesn&#x27;t exist&#xA;    os.makedirs(output_dir, exist_ok=True)&#xA;&#xA;    # Add your ffmpeg_streaming code here to process the video&#xA;    full_video_path =  os.path.join(settings.MEDIA_ROOT, str(video_path))&#xA;    print(video_path)&#xA;    video = ffmpeg_streaming.input(full_video_path)&#xA;    print(video)&#xA;&#xA;      # Add your ffmpeg_streaming code here to process the video&#xA;    _144p  = Representation(Size(256, 144), Bitrate(95 * 1024, 64 * 1024))&#xA;    _240p  = Representation(Size(426, 240), Bitrate(150 * 1024, 94 * 1024))&#xA;    _360p  = Representation(Size(640, 360), Bitrate(276 * 1024, 128 * 1024))&#xA;    _480p  = Representation(Size(854, 480), Bitrate(750 * 1024, 192 * 1024))&#xA;    _720p  = Representation(Size(1280, 720), Bitrate(2048 * 1024, 320 * 1024))&#xA;&#xA;    dash = video.dash(Formats.h264())&#xA;    dash.representations(_144p, _240p, _360p, _480p, _720p)&#xA;    dash.output(os.path.join(output_dir, f&#x27;dash-stream-{video_id}.mpd&#x27;))&#xA;&#xA;&#xA;def post(self,request):&#xA;    try:&#xA;        video_data = self.video_serializer(data=request.data)&#xA;        video_data.is_valid(raise_exception=True)&#xA;        data = video_data.validated_data&#xA;&#xA;        video_instance = Video.objects.create(&#xA;            id = data.get(&#x27;id&#x27;),&#xA;            saved_location = data.get(&#x27;video&#x27;)&#xA;        )&#xA;        video_instance.save()&#xA;&#xA;        self.process_video(video_instance.saved_location, video_instance.id)&#xA;        return Response({"success":True})&#xA;    except Exception as e:&#xA;        return Response({"success":False,"message":str(e)})&#xA;

    &#xA;

    This code is working well as it has created different chunk files as well as a .mpd file of a video inside media/processed_video folder.

    &#xA;

    Then I wrote following code to stream that video using that .mpd folder.

    &#xA;

        def get (self,request,video_id):&#xA;    try:&#xA;        mpd_path = os.path.join(settings.MEDIA_ROOT, &#x27;processed_videos&#x27;, f&#x27;dash-stream-{video_id}.mpd&#x27;)&#xA;        &#xA;        with open(mpd_path, &#x27;rb&#x27;) as f:&#xA;            mpd_content = f.read()&#xA;            response = HttpResponse(mpd_content, content_type=&#x27;application/dash&#x2B;xml&#x27;)&#xA;&#xA;            # Set Content-Disposition header to make the response downloadable&#xA;            response[&#x27;Content-Disposition&#x27;] = f&#x27;attachment; filename="dash-stream-{video_id}.mpd"&#x27;&#xA;            &#xA;            # Optionally set Content-Length header to specify the size of the file&#xA;            response[&#x27;Content-Length&#x27;] = len(mpd_content)&#xA;            &#xA;            return response&#xA;        &#xA;    except Exception as e:&#xA;        return Response({"success":False,"message":str(e)})&#xA;

    &#xA;

    When I make get request to the api it returns content of .mpd as it is (i.e xml). When I used that api in vlc network stream, vlc couldn't play the video. But when I dragged .mpd file directly to vlc, the video gets played with 144p only. I don't know where I got wrong in GET. Please help.

    &#xA;

  • MPEG-DASH MPD file not playing correctly

    24 juin 2017, par CMOS

    So I am working on generating a very simple MPD manifest file for my MPEG-DASH videos and I cannot figure out what is wrong. Here is my current manifest file

    &lt;?xml version="1.0" ?>
    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" minbuffertime="PT1.500S" type="static" mediapresentationduration="PT0H9M21.795S" maxsegmentduration="PT0H0M1.001S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
       <period>
           <baseurl>https://mysite/uploads/sources/resolution_640/bitrate_1400/</baseurl>
           <adaptationset mimetype="video/mp4">
               <contentcomponent contenttype="video"></contentcomponent>
               <representation bandwidth="1400000">
                 <segmentlist duration="119">
                   <initialization sourceurl="https://mysite/uploads/sources/resolution_640/bitrate_1400/640x360_1400Kpbs_0.mp4"></initialization>
                   <segmenturl media="https://mysite/uploads/sources/resolution_640/bitrate_1400/640x360_1400Kpbs_1.mp4"></segmenturl>
                   <segmenturl media="https://mysite/uploads/sources/resolution_640/bitrate_1400/640x360_1400Kpbs_2.mp4"></segmenturl>
                   <segmenturl media="https://mysite/uploads/sources/resolution_640/bitrate_1400/640x360_1400Kpbs_3.mp4"></segmenturl>
                 </segmentlist>
               </representation>
           </adaptationset>
       </period>
    </mpd>

    This MPD file validates using every validator I can find. The urls for the segments are obscured for security reasons but they are all open, public and viewable individually. But when I try to run the manifest file, depending on the player I get. "No supported source found within manifest" or simply nothing happens.

    Any idea how this could be wrong ? I am currently using media url’s as absolute paths but I have also tried paths relative to the BaseURL with no luck. Any info on how I can make a very simple MPEG-Dash manifest structure would be great. I am using FFMPEG to split my video up into 150 frame segments. Thanks !