Recherche avancée

Médias (91)

Autres articles (72)

  • 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

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

Sur d’autres sites (10738)

  • ffmpeg/libavcodec memory management

    23 juillet 2015, par Jason C

    The libavcodec documentation is not very specific about when to free allocated data and how to free it. After reading through documentation and examples, I’ve put together the sample program below. There are some specific questions inlined in the source but my general question is, am I freeing all memory properly in the code below ? I realize the program below doesn’t do any cleanup after errors — the focus is on final cleanup.

    The testfile() function is the one in question.

    extern "C" {
    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "libswscale/swscale.h"
    }

    #include <cstdio>

    using namespace std;


    void AVFAIL (int code, const char *what) {
       char msg[500];
       av_strerror(code, msg, sizeof(msg));
       fprintf(stderr, "failed: %s\nerror: %s\n", what, msg);
       exit(2);
    }

    #define AVCHECK(f) do { int e = (f); if (e &lt; 0) AVFAIL(e, #f); } while (0)
    #define AVCHECKPTR(p,f) do { p = (f); if (!p) AVFAIL(AVERROR_UNKNOWN, #f); } while (0)


    void testfile (const char *filename) {

       AVFormatContext *format;
       unsigned streamIndex;
       AVStream *stream = NULL;
       AVCodec *codec;
       SwsContext *sws;
       AVPacket packet;
       AVFrame *rawframe;
       AVFrame *rgbframe;
       unsigned char *rgbdata;

       av_register_all();

       // load file header
       AVCHECK(av_open_input_file(&amp;format, filename, NULL, 0, NULL));
       AVCHECK(av_find_stream_info(format));

       // find video stream
       for (streamIndex = 0; streamIndex &lt; format->nb_streams &amp;&amp; !stream; ++ streamIndex)
           if (format->streams[streamIndex]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
               stream = format->streams[streamIndex];
       if (!stream) {
           fprintf(stderr, "no video stream\n");
           exit(2);
       }

       // initialize codec
       AVCHECKPTR(codec, avcodec_find_decoder(stream->codec->codec_id));
       AVCHECK(avcodec_open(stream->codec, codec));
       int width = stream->codec->width;
       int height = stream->codec->height;

       // initialize frame buffers
       int rgbbytes = avpicture_get_size(PIX_FMT_RGB24, width, height);
       AVCHECKPTR(rawframe, avcodec_alloc_frame());
       AVCHECKPTR(rgbframe, avcodec_alloc_frame());
       AVCHECKPTR(rgbdata, (unsigned char *)av_mallocz(rgbbytes));
       AVCHECK(avpicture_fill((AVPicture *)rgbframe, rgbdata, PIX_FMT_RGB24, width, height));

       // initialize sws (for conversion to rgb24)
       AVCHECKPTR(sws, sws_getContext(width, height, stream->codec->pix_fmt, width, height, PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL));

       // read all frames fromfile
       while (av_read_frame(format, &amp;packet) >= 0) {      

           int frameok = 0;
           if (packet.stream_index == (int)streamIndex)
               AVCHECK(avcodec_decode_video2(stream->codec, rawframe, &amp;frameok, &amp;packet));

           av_free_packet(&amp;packet); // Q: is this necessary or will next av_read_frame take care of it?

           if (frameok) {
               sws_scale(sws, rawframe->data, rawframe->linesize, 0, height, rgbframe->data, rgbframe->linesize);
               // would process rgbframe here
           }

           // Q: is there anything i need to free here?

       }

       // CLEANUP: Q: am i missing anything / doing anything unnecessary?
       av_free(sws); // Q: is av_free all i need here?
       av_free_packet(&amp;packet); // Q: is this necessary (av_read_frame has returned &lt; 0)?
       av_free(rgbframe);
       av_free(rgbdata);
       av_free(rawframe); // Q: i can just do this once at end, instead of in loop above, right?
       avcodec_close(stream->codec); // Q: do i need av_free(codec)?
       av_close_input_file(format); // Q: do i need av_free(format)?

    }


    int main (int argc, char **argv) {

       if (argc != 2) {
           fprintf(stderr, "usage: %s filename\n", argv[0]);
           return 1;
       }

       testfile(argv[1]);

    }
    </cstdio>

    Specific questions :

    1. Is there anything I need to free in the frame processing loop ; or will libav take care of memory management there for me ?
    2. Is av_free the correct way to free an SwsContext ?
    3. The frame loop exits when av_read_frame returns < 0. In that case, do I still need to av_free_packet when it’s done ?
    4. Do I need to call av_free_packet every time through the loop or will av_read_frame free/reuse the old AVPacket automatically ?
    5. I can just av_free the AVFrames at the end of the loop instead of reallocating them each time through, correct ? It seems to be working fine, but I’d like to confirm that it’s working because it’s supposed to, rather than by luck.
    6. Do I need to av_free(codec) the AVCodec or do anything else after avcodec_close on the AVCodecContext ?
    7. Do I need to av_free(format) the AVFormatContext or do anything else after av_close_input_file ?

    I also realize that some of these functions are deprecated in current versions of libav. For reasons that are not relevant here, I have to use them.

  • Video delay when using filters in ffmpeg

    6 avril 2016, par Marcin

    I try to make video of sport event using raspberry pi. Drawtext filter seems good option to write score on the video.

    I have problem with synchronization / delay of video. I can see changing points few seconds before moment of score a point.

    for example, 30 seconds after start a record video I change points and wave hand to camera. I can see new text value immediately, but moment of wave hand is after at least 10 seconds.

    ffmpeg -threads 2 -f v4l2 -s 1280x720 -input_format h264 -i /dev/video0 \
     -filter_complex "[0:v]
           drawtext=reload=1:box=0:borderw=1:fontsize=36:fontcolor=White:fontfile=font/FreeSans.ttf:x=w/2-text_w/2-70:y=15:textfile=data/0.txt,
           drawtext=reload=1:box=0:borderw=1:fontsize=36:fontcolor=White:fontfile=font/FreeSans.ttf:x=w/2ïtext_w/2:y=15:textfile=data/1.txt" \
       -copyinkf -codec copy \
       -deinterlace -vcodec libx264 -crf 30 -pix_fmt yuv420p -preset ultrafast -qp 0 -r 30 -q 30 -minrate 800k -maxrate 800k \
       -tune zerolatency \
       -acodec aac -ab 128k -g 50 -strict experimental -f flv r.flv -y

    Another strange thing. I record video for 60 seconds and quit process by press "q" key and result video has only 42 seconds of length. Why ?

    See screen : speed of recording video ?

  • Revision 36104 : Une petite erreur sur un message de la mutu grossissant pour pas grand ...

    11 mars 2010, par kent1@… — Log

    Une petite erreur sur un message de la mutu grossissant pour pas grand chose le texte