Recherche avancée

Médias (1)

Mot : - Tags -/net art

Autres articles (80)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

  • Problèmes fréquents

    10 mars 2010, par

    PHP et safe_mode activé
    Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
    La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site

  • Diogene : création de masques spécifiques de formulaires d’édition de contenus

    26 octobre 2010, par

    Diogene est un des plugins ? SPIP activé par défaut (extension) lors de l’initialisation de MediaSPIP.
    A quoi sert ce plugin
    Création de masques de formulaires
    Le plugin Diogène permet de créer des masques de formulaires spécifiques par secteur sur les trois objets spécifiques SPIP que sont : les articles ; les rubriques ; les sites
    Il permet ainsi de définir en fonction d’un secteur particulier, un masque de formulaire par objet, ajoutant ou enlevant ainsi des champs afin de rendre le formulaire (...)

Sur d’autres sites (7066)

  • How to seek mp4 aac audio using Media Source Extensions

    29 août 2018, par Chris

    Please can someone offer me a few pointers when trying to seek within streamed aac audio in mp4 containers ? I’m trying to develop a music download service that sips data via ranged requests rather than simply link to a mp4 file as an <audio></audio> src. (which will instead buffer the whole file as quickly as possible, and so be rather wasteful and expensive).

    So far I’ve managed to successfully append sequential audio range buffers to the SourceBuffer object using partial/ranged requests, attached to my suitably mime-typed MediaSource object. But as soon as I try to seek, the wheels come off and I receive a ’CHUNK_DEMUXER_ERROR_APPEND_FAILED’ error, with the specific issue : ’stream parsing failed’.

    I’ve prepared my mp4 files by encoding them with ffmpeg (via the fluent ffmpeg module), rewriting the movie header box at the start of the file (via the -movflags faststart setting) so that the duration can be parsed. I then fragment the file with mp4fragment (part of the Bento4 tools) with the default settings, and check to ensure the structure of the file matches the format specified by ISO BMFF, with pairs of movie fragments and data boxes (moof/mdat) describing the audio stream. Given the source buffer has no problem playing from the beginning, with contiguous subsequent ranges, this appears to confirm that the format of the mp4 file is acceptable.

    As an aside, I’ve tried fragmenting the file completely in ffmpeg/fluent ffmpeg (using the ’-movflags empty_moov+default_base_moof’ options), but while this works, it also removes the duration from the moov as you’d expect, so the file gets larger during playback as more fragments are fetched and appended. If I set the file duration manually, I still have the issue of not being able to seek to unbuffered audio, so I only seem to be making life more difficult trying to fragment the file solely in ffmpeg.

    So how should I go about seeking within the stream ? I gather that seeking effectively ’needle-drops’ randomly, and so the source buffer might struggle to parse the data out of context, but I imagined that it would skip to the next available fragment in the range that I fetch (which is calculated using the percentage of the seek bar width to set the player.currentTime, which is then converted to a suitable byte range using the 128kbps CBR figure to convert seconds to bytes, to send a 206 partial range request).

    I’ve seen mention of buffer offsets, but I don’t understand how these apply. Most of the dev examples I’ve seen just focus on whole files or segmented videos, rather than fragmented single audio files for seeking ? Do I need to somehow retain a portion of the data from the moov box when seeking for the source buffer to be able to parse it ? In the trun box I have a data offset that varies between two values throughout the file, 444 and 448, depending on whether the sample count is 86 or 87. I’m not sure why it’s not consistent.

    Here’s what the moov looks like from my audio file :

    [ftyp] size=8+24
     major_brand = isom
     minor_version = 200
     compatible_brand = isom
     compatible_brand = iso2
     compatible_brand = mp41
     compatible_brand = iso5
    [moov] size=8+620
     [mvhd] size=12+96
       timescale = 1000
       duration = 350047
       duration(ms) = 350047
     [trak] size=8+448
       [tkhd] size=12+80, flags=7
         enabled = 1
         id = 1
         duration = 350047
         width = 0.000000
         height = 0.000000
       [edts] size=8+28
         [elst] size=12+16
           entry count = 1
           entry/segment duration = 350000
           entry/media time = 2048
           entry/media rate = 1
       [mdia] size=8+312
         [mdhd] size=12+20
           timescale = 44100
           duration = 0
           duration(ms) = 0
           language = und
         [hdlr] size=12+41
           handler_type = soun
           handler_name = Bento4 Sound Handler
         [minf] size=8+219
           [smhd] size=12+4
             balance = 0
           [dinf] size=8+28
             [dref] size=12+16
               [url ] size=12+0, flags=1
                 location = [local to file]
           [stbl] size=8+159
             [stsd] size=12+79
               entry-count = 1
               [mp4a] size=8+67
                 data_reference_index = 1
                 channel_count = 2
                 sample_size = 16
                 sample_rate = 44100
                 [esds] size=12+27
                   [ESDescriptor] size=2+25
                     es_id = 0
                     stream_priority = 0
                     [DecoderConfig] size=2+17
                       stream_type = 5
                       object_type = 64
                       up_stream = 0
                       buffer_size = 0
                       max_bitrate = 128006
                       avg_bitrate = 128006
                       DecoderSpecificInfo = 12 10
                     [Descriptor:06] size=2+1
             [stts] size=12+4
               entry_count = 0
             [stsc] size=12+4
               entry_count = 0
             [stsz] size=12+8
               sample_size = 0
               sample_count = 0
             [stco] size=12+4
               entry_count = 0
     [mvex] size=8+48
       [mehd] size=12+4
         duration = 350047
       [trex] size=12+20
         track id = 1
         default sample description index = 1
         default sample duration = 0
         default sample size = 0
         default sample flags = 0

    And here’s a typical fragment :

    [moof] size=8+428
     [mfhd] size=12+4
       sequence number = 1
     [traf] size=8+404
       [tfhd] size=12+8, flags=20008
         track ID = 1
         default sample duration = 1024
       [tfdt] size=12+8, version=1
         base media decode time = 0
       [trun] size=12+352, flags=201
         sample count = 86
         data offset = 444
    [mdat] size=8+32653

    Does that all look good ? Any pointers for seeking within such a file would be hugely appreciated. Thanks !

  • FFMPEG MKV Causing Errors in DASH JS

    24 juin 2018, par Mike

    I’m getting the following browser errors (on all browsers) using Dash JS when transcoding and MKV file :

    ERROR DOMException: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source.

    and...

    dash.all.min.js:26 Uncaught (in promise) DOMException: Failed to load because no supported source was found.

    What’s weird is I have no issues when I transcode a MP4 file. I’m using FFMPEG in conjunction with Bento4 to build MPEG DASH and HLS files for my video player.

    What I did to single out FFMPEG was to transcode a video that gave me errors on my test server on my local machine (which works) and start the Bento4 process on that file. Doing that, I had no issues and everything played just fine.

    I have removed FFMPEG and reinstalled it multiple times and I always get the same result. I’m sure I screwed something up on my server, but for the life of me I can’t seem to figure out where to start with fixing the issue.

    FFMPEG Version

    ffmpeg version N-91321-ge85c608 Copyright (c) 2000-2018 the FFmpeg developers

    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-28)

    configuration:
    --prefix=/root/ffmpeg_build
    --pkg-config-flags=--static
    --extra-cflags=-I/root/ffmpeg_build/include
    --extra-ldflags=-L/root/ffmpeg_build/lib
    --extra-libs=-lpthread
    --extra-libs=-lm
    --bindir=/root/bin
    --enable-gpl
    --enable-libfdk_aac
    --enable-libfreetype
    --enable-libmp3lame
    --enable-libopus
    --enable-libvorbis
    --enable-libtheora
    --enable-libx264
    --enable-nonfree
    libavutil      56. 18.102 / 56. 18.102
    libavcodec     58. 20.102 / 58. 20.102
    libavformat    58. 17.100 / 58. 17.100
    libavdevice    58.  4.101 / 58.  4.101
    libavfilter     7. 25.100 /  7. 25.100
    libswscale      5.  2.100 /  5.  2.100
    libswresample   3.  2.100 /  3.  2.100
    libpostproc    55.  2.100 / 55.  2.100

    FFMPEG Command

    ffmpeg
    -i ${DIRECTORY}/${INPUT_FILE}
    -progress ${DIRECTORY}/transcode.log
    -s 1920x1080
    -c:v libx264
    -b:v 3000k
    -c:a aac
    -b:a 32k
    -minrate 3000k
    -maxrate 3000k
    -bufsize 6000k
    -g 96
    -keyint_min 96
    -sc_threshold 0
    -profile:v high
    -flags +cgop
    -movflags faststart
    -preset ultrafast
    -pix_fmt yuv420p
    ${DIRECTORY}/ffmpeg_1920_1080_3000.mp4 &amp;> ${DIRECTORY}/ffmpeg.log

    Also, I get no errors and and if I access the output files directly, they play just fine.

    I’m sure I’m not including all the information needed to troubleshoot this, so let me know if there is better information I can provide.

    What would cause FFMPEG to transcode MP4 and not MKV ?

    EDIT
    One last thing, I converted the MKV to an MP4 then used the above command and it worked. It’s like MP4 to MP4 is fine, but MKV to MP4 is broke.

  • FFMPEG MKV Causing Errors in DASH JS

    24 juin 2018, par Mike

    I’m getting the following browser errors (on all browsers) using Dash JS when transcoding and MKV file :

    ERROR DOMException: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source.

    and...

    dash.all.min.js:26 Uncaught (in promise) DOMException: Failed to load because no supported source was found.

    What’s weird is I have no issues when I transcode a MP4 file. I’m using FFMPEG in conjunction with Bento4 to build MPEG DASH and HLS files for my video player.

    What I did to single out FFMPEG was to transcode a video that gave me errors on my test server on my local machine (which works) and start the Bento4 process on that file. Doing that, I had no issues and everything played just fine.

    I have removed FFMPEG and reinstalled it multiple times and I always get the same result. I’m sure I screwed something up on my server, but for the life of me I can’t seem to figure out where to start with fixing the issue.

    FFMPEG Version

    ffmpeg version N-91321-ge85c608 Copyright (c) 2000-2018 the FFmpeg developers

    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-28)

    configuration:
    --prefix=/root/ffmpeg_build
    --pkg-config-flags=--static
    --extra-cflags=-I/root/ffmpeg_build/include
    --extra-ldflags=-L/root/ffmpeg_build/lib
    --extra-libs=-lpthread
    --extra-libs=-lm
    --bindir=/root/bin
    --enable-gpl
    --enable-libfdk_aac
    --enable-libfreetype
    --enable-libmp3lame
    --enable-libopus
    --enable-libvorbis
    --enable-libtheora
    --enable-libx264
    --enable-nonfree
    libavutil      56. 18.102 / 56. 18.102
    libavcodec     58. 20.102 / 58. 20.102
    libavformat    58. 17.100 / 58. 17.100
    libavdevice    58.  4.101 / 58.  4.101
    libavfilter     7. 25.100 /  7. 25.100
    libswscale      5.  2.100 /  5.  2.100
    libswresample   3.  2.100 /  3.  2.100
    libpostproc    55.  2.100 / 55.  2.100

    FFMPEG Command

    ffmpeg
    -i ${DIRECTORY}/${INPUT_FILE}
    -progress ${DIRECTORY}/transcode.log
    -s 1920x1080
    -c:v libx264
    -b:v 3000k
    -c:a aac
    -b:a 32k
    -minrate 3000k
    -maxrate 3000k
    -bufsize 6000k
    -g 96
    -keyint_min 96
    -sc_threshold 0
    -profile:v high
    -flags +cgop
    -movflags faststart
    -preset ultrafast
    -pix_fmt yuv420p
    ${DIRECTORY}/ffmpeg_1920_1080_3000.mp4 &amp;> ${DIRECTORY}/ffmpeg.log

    Also, I get no errors and and if I access the output files directly, they play just fine.

    I’m sure I’m not including all the information needed to troubleshoot this, so let me know if there is better information I can provide.

    What would cause FFMPEG to transcode MP4 and not MKV ?

    EDIT
    One last thing, I converted the MKV to an MP4 then used the above command and it worked. It’s like MP4 to MP4 is fine, but MKV to MP4 is broke.