Recherche avancée

Médias (91)

Autres articles (36)

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

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • 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 (6218)

  • PHP-FFMpeg Error while opening encoder for output stream

    5 janvier 2019, par Valor_

    I’m trying to use this PHP-FFMpeg library, but I’m keep getting errors like

    Error while opening encoder for output stream #0:0

    This is my PHP code

    private function createTeaserVideos($fullVideoPath, $databasePath, $uploadPath) {
           $ffmpeg = FFMpeg::create([
               'ffmpeg.binaries' => '/usr/bin/ffmpeg',
               'ffprobe.binaries' => '/usr/bin/ffprobe',
               'timeout'          => 0,
           ]);

           $ffmpeg->getFFMpegDriver()->listen(new \Alchemy\BinaryDriver\Listeners\DebugListener());
           $ffmpeg->getFFMpegDriver()->on('debug', function ($message) {
               var_dump($message);
           });

           // Create teaser_video_thumb
           $videoNameThumb = $this->randomTimeString() . '-thumb.mp4';
           $video = $ffmpeg->open($fullVideoPath);
           $video
               ->filters()
               ->resize(new \FFMpeg\Coordinate\Dimension(400, 280))
               ->synchronize();
           $video->save(new \FFMpeg\Format\Video\X264('aac', 'libx264'), $uploadPath . $videoNameThumb);
       }

    So what I’m trying to do here. User uploads his video and I’m trying to resize it and create one smaller video for the preview. The problem that I’m keep getting it is

    ffmpeg version 2.8.15-0ubuntu0.16.04.1' (length=46)
    Copyright (c) 2000-2018 the FFmpeg developers' (length=54)
     built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609' (length=72)
     configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv' (length=1135)
     WARNING: library configuration mismatch' (length=49)
     avcodec     configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc' (length=1413)
     libavutil      54. 31.100 / 54. 31.100' (length=48)
     libavcodec     56. 60.100 / 56. 60.100' (length=48)
     libavformat    56. 40.101 / 56. 40.101' (length=48)
     libavdevice    56.  4.100 / 56.  4.100' (length=48)
     libavfilter     5. 40.101 /  5. 40.101' (length=48)
     libavresample   2.  1.  0 /  2.  1.  0' (length=48)
     libswscale      3.  1.101 /  3.  1.101' (length=48)
     libswresample   1.  2.101 /  1.  2.101' (length=48)
     libpostproc    53.  3.100 / 53.  3.100' (length=48)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/vagrant/workspace/spot-scouting-adminpage/static/locations/MjY5MjI2Y2E0NDExOWNmZmQwN/teaser/f4095e9eeb364fe187bf1ed42eedc198.mp4':' (length=185)
     Metadata:' (length=19)
       major_brand     : mp42' (length=34)
       minor_version   : 0' (length=31)
       compatible_brands: mp42mp41' (length=39)
       creation_time   : 2019-01-04 12:46:43' (length=49)
     Duration: 00:00:08.41, start: 0.000000, bitrate: 10261 kb/s' (length=69)
       Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 9982 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)' (length=153)
       Metadata:' (length=21)
         creation_time   : 2019-01-04 12:46:43' (length=51)
         handler_name    : Alias Data Handler' (length=50)
         encoder         : AVC Coding' (length=42)
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)' (length=109)
       Metadata:' (length=21)
         creation_time   : 2019-01-04 12:46:43' (length=51)
         handler_name    : Alias Data Handler' (length=50)
    -async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000:first_pts=0.' (length=107)
    [libx264 @ 0x136f620] height not divisible by 2 (400x225)' (length=65)
    Output #0, mp4, to '/home/vagrant/workspace/spot-scouting-adminpage/static/locations/MjY5MjI2Y2E0NDExOWNmZmQwN/teaser/gY0RfV9c0y06592770015466174550YfY9-thumb.mp4':' (length=172)
     Metadata:' (length=19)
       major_brand     : mp42' (length=34)
       minor_version   : 0' (length=31)
       compatible_brands: mp42mp41' (length=39)
       Stream #0:0(eng): Video: h264, none, q=2-31, 128 kb/s, 25 fps (default)' (length=83)
       Metadata:' (length=21)
         creation_time   : 2019-01-04 12:46:43' (length=51)
         handler_name    : Alias Data Handler' (length=50)
         start_time      : 0' (length=33)
         encoder         : Lavc56.60.100 libx264' (length=53)
       Stream #0:1(eng): Audio: aac, 0 channels, 128 kb/s (default)' (length=72)
       Metadata:' (length=21)
         creation_time   : 2019-01-04 12:46:43' (length=51)
         handler_name    : Alias Data Handler' (length=50)
         encoder         : Lavc56.60.100 aac' (length=49)
    Stream mapping:' (length=23)
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))' (length=63)
     Stream #0:1 -> #0:1 (aac (native) -> aac (native))' (length=60)
    Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height' (length=127)
    ' (length=8)

    I can’t figure out what is the problem or how to solve it. Can someone please help me out ? I’m using Ubuntu 16 and I have installed ffmpeg via apt-get install ffmpeg.
    If you need any additional infomations, please let me know and I will provide. Thank you

  • Adding chapters to MP4 files, and being identified on iOS 12 podcast app

    5 avril 2019, par Craig Francis

    I have an MP4 file, where I’ve added chapters via ffmpeg.

    But in the iOS 12 Podcasts app, from Apple, the chapters don’t appear. This should happen, as noted by idownloadblog.com

    Preview of how Chapters should look in iOS

    In comparison, when using QuickLook on MacOS, the list of chapters can be seen by clicking the chapters button (in the bottom right hand side of the window).

    Preview of QuickLook in MacOS

    And opening in QuickTime Player, while there isn’t a list of chapters to view, you can use the "View > Next Chapter" menu item.

    So I’m assuming this is a bug in iOS... but I’m wondering if there is another way to add chapters ? or if I’ve made a mistake ?


    My current process is to create a "ffmetadata" file, as noted in the ffmpeg documentation :

    ;FFMETADATA1
    title=Example

    [CHAPTER]
    TIMEBASE=1/1000
    START=0
    END=221913
    title=Chapter 1

    [CHAPTER]
    TIMEBASE=1/1000
    START=221913
    END=1169241
    title=Chapter 2

    https://ffmpeg.org/ffmpeg-formats.html#Metadata-1

    Then I’ve tried each of the following commands :

    ffmpeg -i 2019-01-02.mp4 -i 2019-01-02.meta -map_metadata 1 -codec copy 2019-01-02-chapters.mp4
    ffmpeg -i 2019-01-02.mp4 -i 2019-01-02.meta -map_metadata 1 2019-01-02-chapters.mp4
    ffmpeg -i 2019-01-02.mp4 -i 2019-01-02.meta -map_metadata 1 2019-01-02-chapters.mp3
    • The first one is from the ffmpeg documentation, where -codec copy means the audio file is not re-encoded.
    • The second one takes longer, while it re-encodes the audio data.
    • The third one requires re-encoding to convert it into an MP3 file (which uses ID3 tags for the chapter data).

    On a slightly unrelated note, the third party app "RSSRadio" does list the chapters, but the feature added in version 4 that allows you to "skip directly to the start of the next chapter", if the next chapter starts within the next 3 minutes, does not seem to work.

  • "Invalid or unexpected token" error when trying to execute ffmpeg build on lambda

    4 janvier 2019, par almarc

    I have a node.js script that uses ffmpeg to convert mp4 downloaded from YT to mp3 and save to Amazon S3. Uploading using the serverless framework. The "ffmpeg" file is included in the main directory (with .yml), downloaded from here :
    https://johnvansickle.com/ffmpeg/

    The code :

    'use strict'
    process.env.PATH = process.env.PATH + ':/tmp/'
    process.env['FFMPEG_PATH'] = '/tmp/ffmpeg';
    const BIN_PATH = process.env['LAMBDA_TASK_ROOT']
    process.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH;

    module.exports.download_mp3 = function (event, context, callback)
    {
     require('child_process').exec('cp /var/task/ffmpeg /tmp/.; chmod 755
     /tmp/ffmpeg;', function (error, stdout, stderr) {
     if (error)
     {
       console.log('An error occured', error);
       callback(null, null)
     }
     else
     {
       var ffmpeg = require('ffmpeg');
       const aws = require('aws-sdk')
       const s3 = new aws.S3()
       const ytdl = require('ytdl-core');

       function uploadFromStream(s3) {
         const stream = require('stream')
         var pass = new stream.PassThrough();

         var params = {Bucket: "some-bucket", Key: "some-key", Body: pass};
         s3.upload(params, function(err, data) {
           console.log(err, data);
         });
         console.log("Should be finished")
         callback(null)
       }

       let stream = ytdl("some-video-id", {
         quality: 'highestaudio',
         filter: 'audioonly'
       });

       ffmpeg(stream)
         .audioBitrate(128)
         .format('mp3')
         .on('error', (err) => console.error(err))
         .pipe(uploadFromStream(s3), {
           end: true
       });
     }})
    }

    When triggered, the function writes an error in logs :

    2019-01-04T14:50:54.525Z    21da4d49-1030-11e9-b901-0dc32b691a16    
    /var/task/ffmpeg:1
    (function (exports, require, module, __filename, __dirname) { ELF
    ^

    SyntaxError: Invalid or unexpected token
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /var/task/download.js:17:18

    It’s, most definetely, an error in the "ffmpeg" file I’ve mentioned above (link provided). But I don’t know what’s the exact issue, I followed the first answer here : https://stackoverflow.com/questions/47882810/lambda-not-connecting-to-ffmpeg to include the ffmpeg build.