Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (47)

  • 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

  • Initialisation de MediaSPIP (préconfiguration)

    20 février 2010, par

    Lors de l’installation de MediaSPIP, celui-ci est préconfiguré pour les usages les plus fréquents.
    Cette préconfiguration est réalisée par un plugin activé par défaut et non désactivable appelé MediaSPIP Init.
    Ce plugin sert à préconfigurer de manière correcte chaque instance de MediaSPIP. Il doit donc être placé dans le dossier plugins-dist/ du site ou de la ferme pour être installé par défaut avant de pouvoir utiliser le site.
    Dans un premier temps il active ou désactive des options de SPIP qui ne le (...)

  • Taille des images et des logos définissables

    9 février 2011, par

    Dans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
    Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...)

Sur d’autres sites (5302)

  • Make Qt Player codec independent

    16 mars 2016, par Tejas Virpariya

    I develop Qt application which can play more then one video file using bellow code.

    QMediaPlayer *player;
    QString fileName = "C:/username/test.h264";
    player->setmedia(QUrl::fromLocalFile(fileName));

    In starting I cannot play all types of video file, so I install codec on my system, now when my player start codec decoder start, and my CPU usage reach at high.(Show the bellow Image)

    enter image description here

    You can see in above image right side bottom corner LAW(Red label) which saw external decoder started.

    Now, I want to make my Qt Player codec independent, means I know my player have to play only .h264 file, so I will use only h264 decoder and no need of audio so I will not use audio decoder.

    As per my knowledge, QMediaPlayer start decoder when it come in picture, correct me if i am wrong. So What can I do to stop external decoder and decode frame internally and play successfully ?

    EDIT : code for audio decode using FFmpeg

    FFmpegAudio.pro

    TARGET = fooAudioFFMPEG
    QT       += core gui qml quick widgets
    TEMPLATE = app
    SOURCES += main.cpp \
       mainwindow.cpp
    HEADERS += mainwindow.h \
       wrapper.h
    FORMS += mainwindow.ui
    QMAKE_CXXFLAGS += -D__STDC_CONSTANT_MACROS

    LIBS += -pthread
    LIBS += -L/usr/local/lib
    LIBS += -lavdevice
    LIBS += -lavfilter
    LIBS += -lpostproc
    LIBS += -lavformat
    LIBS += -lavcodec
    LIBS += -ldl
    LIBS += -lXfixes
    LIBS += -lXext
    LIBS += -lX11
    LIBS += -lasound
    LIBS += -lSDL
    LIBS += -lx264
    LIBS += -lvpx
    LIBS += -lvorbisenc
    LIBS += -lvorbis
    LIBS += -logg
    LIBS += -lopencore-amrwb
    LIBS += -lopencore-amrnb
    LIBS += -lmp3lame
    LIBS += -lfaac
    LIBS += -lz
    LIBS += -lrt
    LIBS += -lswscale
    LIBS += -lavutil
    LIBS += -lm

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <qmainwindow>

    namespace Ui {
       class MainWindow;
    }

    class MainWindow : public QMainWindow {
       Q_OBJECT
    public:
       MainWindow(QWidget *parent = 0);
       ~MainWindow();

    protected:
       void changeEvent(QEvent *e);

    private:
       Ui::MainWindow *ui;

    private slots:
       void on_pushButton_clicked();
    };

    #endif // MAINWINDOW_H
    </qmainwindow>

    wrapper.h

    #ifndef WRAPPER_H_
    #define WRAPPER_H_

    #include

    #include <libavutil></libavutil>opt.h>
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavutil></libavutil>channel_layout.h>
    #include <libavutil></libavutil>common.h>
    #include <libavutil></libavutil>imgutils.h>
    #include <libavutil></libavutil>mathematics.h>
    #include <libavutil></libavutil>samplefmt.h>

    #define INBUF_SIZE 4096
    #define AUDIO_INBUF_SIZE 20480
    #define AUDIO_REFILL_THRESH 4096



    /* check that a given sample format is supported by the encoder */
    static int check_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt)
    {
       const enum AVSampleFormat *p = codec->sample_fmts;

       while (*p != AV_SAMPLE_FMT_NONE) {
           if (*p == sample_fmt)
               return 1;
           p++;
       }
       return 0;
    }

    /* just pick the highest supported samplerate */
    static int select_sample_rate(AVCodec *codec)
    {
       const int *p;
       int best_samplerate = 0;

       if (!codec->supported_samplerates)
           return 44100;

       p = codec->supported_samplerates;
       while (*p) {
           best_samplerate = FFMAX(*p, best_samplerate);
           p++;
       }
       return best_samplerate;
    }

    /* select layout with the highest channel count */
    static int select_channel_layout(AVCodec *codec)
    {
       const uint64_t *p;
       uint64_t best_ch_layout = 0;
       int best_nb_channells   = 0;

       if (!codec->channel_layouts)
           return AV_CH_LAYOUT_STEREO;

       p = codec->channel_layouts;
       while (*p) {
           int nb_channels = av_get_channel_layout_nb_channels(*p);

           if (nb_channels > best_nb_channells) {
               best_ch_layout    = *p;
               best_nb_channells = nb_channels;
           }
           p++;
       }
       return best_ch_layout;
    }

    /*
    * Audio encoding example
    */
    static void audio_encode_example(const char *filename)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       AVFrame *frame;
       AVPacket pkt;
       int i, j, k, ret, got_output;
       int buffer_size;
       FILE *f;
       uint16_t *samples;
       float t, tincr;

       printf("Encode audio file %s\n", filename);

       /* find the MP2 encoder */
       codec = avcodec_find_encoder(AV_CODEC_ID_MP2);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate audio codec context\n");
           exit(1);
       }

       /* put sample parameters */
       c->bit_rate = 64000;

       /* check that the encoder supports s16 pcm input */
       c->sample_fmt = AV_SAMPLE_FMT_S16;
       if (!check_sample_fmt(codec, c->sample_fmt)) {
           fprintf(stderr, "Encoder does not support sample format %s",
                   av_get_sample_fmt_name(c->sample_fmt));
           exit(1);
       }

       /* select other audio parameters supported by the encoder */
       c->sample_rate    = select_sample_rate(codec);
       c->channel_layout = select_channel_layout(codec);
       c->channels       = av_get_channel_layout_nb_channels(c->channel_layout);

       /* open it */
       if (avcodec_open2(c, codec, NULL) &lt; 0) {
           fprintf(stderr, "Could not open codec\n");
           exit(1);
       }

       f = fopen(filename, "wb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }

       /* frame containing input raw audio */
       frame = avcodec_alloc_frame();
       if (!frame) {
           fprintf(stderr, "Could not allocate audio frame\n");
           exit(1);
       }

       frame->nb_samples     = c->frame_size;
       frame->format         = c->sample_fmt;
       frame->channel_layout = c->channel_layout;

       /* the codec gives us the frame size, in samples,
        * we calculate the size of the samples buffer in bytes */
       buffer_size = av_samples_get_buffer_size(NULL, c->channels, c->frame_size,
                                                c->sample_fmt, 0);
       samples = (uint16_t *)av_malloc(buffer_size);
       if (!samples) {
           fprintf(stderr, "Could not allocate %d bytes for samples buffer\n",
                   buffer_size);
           exit(1);
       }
       /* setup the data pointers in the AVFrame */
       ret = avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,
                                      (const uint8_t*)samples, buffer_size, 0);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not setup audio frame\n");
           exit(1);
       }

       /* encode a single tone sound */
       t = 0;
       tincr = 2 * M_PI * 440.0 / c->sample_rate;
       for(i=0;i&lt;200;i++) {
           av_init_packet(&amp;pkt);
           pkt.data = NULL; // packet data will be allocated by the encoder
           pkt.size = 0;

           for (j = 0; j &lt; c->frame_size; j++) {
               samples[2*j] = (int)(sin(t) * 10000);

               for (k = 1; k &lt; c->channels; k++)
                   samples[2*j + k] = samples[2*j];
               t += tincr;
           }
           /* encode the samples */
           ret = avcodec_encode_audio2(c, &amp;pkt, frame, &amp;got_output);
           if (ret &lt; 0) {
               fprintf(stderr, "Error encoding audio frame\n");
               exit(1);
           }
           if (got_output) {
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&amp;pkt);
           }
       }

       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           ret = avcodec_encode_audio2(c, &amp;pkt, NULL, &amp;got_output);
           if (ret &lt; 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(1);
           }

           if (got_output) {
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&amp;pkt);
           }
       }
       fclose(f);

       av_freep(&amp;samples);
       avcodec_free_frame(&amp;frame);
       avcodec_close(c);
       av_free(c);
    }

    /*
    * Audio decoding.
    */
    static void audio_decode_example(const char *outfilename, const char *filename)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       int len;
       FILE *f, *outfile;
       uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
       AVPacket avpkt;
       AVFrame *decoded_frame = NULL;

       av_init_packet(&amp;avpkt);

       printf("Decode audio file %s to %s\n", filename, outfilename);

       /* find the mpeg audio decoder */
       codec = avcodec_find_decoder(AV_CODEC_ID_MP2);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate audio codec context\n");
           exit(1);
       }

       /* open it */
       if (avcodec_open2(c, codec, NULL) &lt; 0) {
           fprintf(stderr, "Could not open codec\n");
           exit(1);
       }

       f = fopen(filename, "rb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }
       outfile = fopen(outfilename, "wb");
       if (!outfile) {
           av_free(c);
           exit(1);
       }

       /* decode until eof */
       avpkt.data = inbuf;
       avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);

       while (avpkt.size > 0) {
           int got_frame = 0;

           if (!decoded_frame) {
               if (!(decoded_frame = avcodec_alloc_frame())) {
                   fprintf(stderr, "Could not allocate audio frame\n");
                   exit(1);
               }
           } else
               avcodec_get_frame_defaults(decoded_frame);

           len = avcodec_decode_audio4(c, decoded_frame, &amp;got_frame, &amp;avpkt);
           if (len &lt; 0) {
               fprintf(stderr, "Error while decoding\n");
               exit(1);
           }
           if (got_frame) {
               /* if a frame has been decoded, output it */
               int data_size = av_samples_get_buffer_size(NULL, c->channels,
                                                          decoded_frame->nb_samples,
                                                          c->sample_fmt, 1);
               fwrite(decoded_frame->data[0], 1, data_size, outfile);
           }
           avpkt.size -= len;
           avpkt.data += len;
           avpkt.dts =
           avpkt.pts = AV_NOPTS_VALUE;
           if (avpkt.size &lt; AUDIO_REFILL_THRESH) {
               /* Refill the input buffer, to avoid trying to decode
                * incomplete frames. Instead of this, one could also use
                * a parser, or use a proper container format through
                * libavformat. */
               memmove(inbuf, avpkt.data, avpkt.size);
               avpkt.data = inbuf;
               len = fread(avpkt.data + avpkt.size, 1,
                           AUDIO_INBUF_SIZE - avpkt.size, f);
               if (len > 0)
                   avpkt.size += len;
           }
       }

       fclose(outfile);
       fclose(f);

       avcodec_close(c);
       av_free(c);
       avcodec_free_frame(&amp;decoded_frame);
    }

    /*
    * Main WRAPPER function
    */
    void service(){


       /* register all the codecs */
       avcodec_register_all();


       audio_encode_example("test.mp2");
       audio_decode_example("test.sw", "test.mp2");

    }

    #endif

    main.cpp

    #include <qapplication>
    #include "mainwindow.h"

    extern "C"{
       #include "wrapper.h"
    }

    int main(int argc, char *argv[])
    {
       service(); //calling the function service inside the wrapper

       QApplication a(argc, argv);
       MainWindow w;
       w.show();
       return a.exec();
    }
    </qapplication>

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
       QMainWindow(parent),
       ui(new Ui::MainWindow)
    {
       ui->setupUi(this);
    }

    MainWindow::~MainWindow()
    {
       delete ui;
    }

    void MainWindow::changeEvent(QEvent *e)
    {
       QMainWindow::changeEvent(e);
       switch (e->type()) {
       case QEvent::LanguageChange:
           ui->retranslateUi(this);
           break;
       default:
           break;
       }
    }

    void MainWindow::on_pushButton_clicked()
    {
           this->close();
    }

    mainwindow.ui
    //Nothing important

    Thanks.

  • ffmpeg : How to pause udp stream

    17 mars 2016, par Gring

    I am searching for a way, to pause an udp-stream with ffmpeg. While paused it should send the current picture, till it is started again.

    Would be nice if someone could help me

  • How to use Runtime permission with FFMPEG Library

    9 avril 2016, par Anil

    Getting Error of no load library .so file when i started performing any action on video using FFMPEG Command.