Recherche avancée

Médias (91)

Autres articles (60)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, 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 (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (10849)

  • MediaSource through socket stops

    23 août 2017, par Paulo Galdo Sandoval

    i’m trying to stream a rtsp live stream through socket.io using ffmpeg (this works fine), but now i need to get that video from the socket and play it on a HTML5 video tag.

    To do this i’m using MediaSurce, getting small pieces of video through the socket and then appending it to the MediaSource

    This solution reproduces the video a few seconds o minutes and then suddenly stops
    and it doesn’t throw me any error on the Chrome console

       var socket = io();

       var ms = new MediaSource();
       var sourceBuffer;
       var queue = [];
       var video = document.getElementById("video");
       video.src = window.URL.createObjectURL(ms);

       socket.on('start', function (response) {
           console.log(response);
           socket.emit('streaming', $stateParams.id);
           ms.addEventListener('sourceopen', videoLoad, false);
           ms.addEventListener('sourceclose', videoClosed, false);
       });


       function videoLoad() {
           sourceBuffer = ms.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
           sourceBuffer.addEventListener('update', function () {
               if (queue.length > 0 && !sourceBuffer.updating) {
                   console.log(queue.length);
                   sourceBuffer.appendBuffer(queue.shift());
               }
           });

           socket.on('data', function (response) {
               var bytes = new Uint8Array(response);
               var blob = new Blob(bytes);
               console.log(blob.size);
               if (sourceBuffer.updating || queue.length > 0) {
                   queue.push(bytes);
               } else {
                   sourceBuffer.appendBuffer(bytes);
               }
           });
       }

       function videoClosed(e) {
           console.log('mediaSource readyState: ' + this.readyState);
       }

    On my chrome://media-internals/ the video players log show me a couple of time this, and then the video stops

    video_buffering_state   BUFFERING_HAVE_ENOUGH
  • Repeating ffmpeg stream (libavcodec/libavformat)

    6 août 2017, par Cromon

    I am using the various APIs from ffmpeg to draw videos in my application. So far this works very well. Since I also have gifs I want to do looping without having to load the file over and over again.

    In my code the decoder loop looks like this :

    AVPacket packet = {};
    av_init_packet(&packet);
    while (mIsRunning) {
        int error = av_read_frame(mContext, &packet);
        if (error == AVERROR_EOF) {
            if(mRepeat) {
                logger.info("EOF-repeat");
                auto stream = mContext->streams[mVideoStream];
                av_seek_frame(mContext, mVideoStream, 0, 0);
                continue;
            }
            if (mReadVideo) {
                avcodec_send_packet(mVideoCodec, nullptr);
            }
            if (mReadAudio) {
                avcodec_send_packet(mAudioCodec, nullptr);
            }
            break;
        }

        if (error < 0) {
            char err[AV_ERROR_MAX_STRING_SIZE];
            av_make_error_string(err, AV_ERROR_MAX_STRING_SIZE, error);
            logger.error("Failed to read next frame from stream: ", err);
            throw std::runtime_error("Stream reading failed");
        }

        if (packet.stream_index == mVideoStream && mReadVideo) {
            int32 err;
            {
                std::lock_guard l(mVideoLock);
                err = avcodec_send_packet(mVideoCodec, &packet);
            }
            mImageEvent.notify_all();
            while (err == AVERROR(EAGAIN) && mIsRunning) {
                {
                    std::unique_lock l(mReaderLock);
                    mReaderEvent.wait(l);
                }
                {
                    std::lock_guard l(mVideoLock);
                    err = avcodec_send_packet(mVideoCodec, &packet);
                }
           }
        }

        av_packet_unref(&packet);
    }

    Reading a video to the end works perfectly well and if I dont set mRepeat to true it properly EOFs and stops parsing. However when I use looping the following happens :

    • The video ends
    • AVERROR_EOF happens at av_read_frame
    • EOF-repeat is printed
    • A random frame is read from the stream (and rendered)
    • AVERROR_EOF happens at av_read_frame
    • EOF-repeat is printed
    • A random frame is read from the stream (and rendered)
    • ...

    You can imagine it like I have a gif of a spinning globe and after one full turn it just starts randomly jumping around, sometimes for a fraction of a second correctly, sometimes backwards and sometimes just randomly everywhere.

    I have also tried several versions with avformat_seek_file what other way would there be to reset everything to the beginning and start from scratch again ?

  • FFmpegMediaPlayer : findLibrary returned null

    20 juillet 2017, par IceJOKER

    I use https://github.com/wseemann/FFmpegMediaPlayer in my application, but some Android device throw exception :

    java.lang.ExceptionInInitializerError
    at ru.mypackage.PlayService.initPlayer(PlayService.java:74)
    at ru.mypackage.PlayService.onCreate(PlayService.java:68)
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:1949)
    at android.app.ActivityThread.access$2500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:989)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load avutil: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:429)
    at java.lang.System.loadLibrary(System.java:554)
    at wseemann.media.FFmpegMediaPlayer.<clinit>(FFmpegMediaPlayer.java:620)
    ... 13 more
    </clinit>

    My project :
    enter image description here
    enter image description here

    Can somebody explain me what’s wrong there ?
    On my device and some other device the app working nice, but on some device (for example : Galaxy Ace (GT-S5830i) Android 2.3.3 - 2.3.7) it throw the exception.

    p.s. about "lib" prefix I understood ( https://developer.android.com/reference/java/lang/System.html#mapLibraryName(java.lang.String) )