Recherche avancée

Médias (1)

Mot : - Tags -/musée

Autres articles (79)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

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

Sur d’autres sites (5802)

  • rtmp : Set correct message stream id when writing as server

    31 mars 2022, par Jonathan Murray
    rtmp : Set correct message stream id when writing as server
    

    rtmp_write is used both for writing outputs as a server. The
    rt->listen flag determines which mode we're running in.

    Previously, when running as a server, the message stream id would
    always be set to 0 for media/metadata messages. This is surprising
    given that we have both responded to "createStream()" with a value
    of 1 and sent a "Stream Begin 1" to the client. Furthermore, some
    client libraries (Red5) seem to trip up on receiving
    "@setDataFrame" on stream 0 (and may be correct to assume that
    this message would be sent on stream 1).

    • [DH] libavformat/rtmpproto.c
  • avcodec/aacenc : Correct option description for aac_coder fast

    14 juillet 2024, par Marth64
    avcodec/aacenc : Correct option description for aac_coder fast
    

    The description advertises fast as "Default fast search", but
    this has not been the default for a long time (current default
    is twoloop).

    Signed-off-by : Marth64 <marth64@proxyid.net>

    • [DH] libavcodec/aacenc.c
  • How to improve the fluency of rtsp streaming through ffmpeg (processing 16 pictures at the same time)

    21 décembre 2024, par Ling Yun

    When the button is clicked, I create 16 threads in Qt, and then pass the rtsp data address and the label to be rendered to the process, and then the process does this :&#xA;run :

    &#xA;

    &#xA;void rtspthread::run()&#xA;{&#xA;&#xA;    while(!shouldStop){&#xA;        openRtspStream(rtspUrl.toUtf8().constData(),index);&#xA;    }&#xA;&#xA;    qDebug() &lt;&lt; "RTSP stream stopped.";&#xA;    emit finished();  &#xA;}&#xA;&#xA;

    &#xA;

    open input stream :

    &#xA;

    void rtspthread::openRtspStream(const char* rtspUrl,int index)&#xA;&#xA;{&#xA;&#xA;    AVDictionary *options = nullptr;&#xA;    AVFrame *pFrameRGB = nullptr;&#xA;    uint8_t *pOutBuffer = nullptr;&#xA;    struct SwsContext *swsContext;&#xA;    AVFormatContext *pFormatCtx = nullptr;&#xA;    pFormatCtx = avformat_alloc_context();&#xA;    av_dict_set(&amp;options, "rtsp_transport", "tcp", 0);&#xA;    av_dict_set(&amp;options, "maxrate", "4000k", 0);&#xA;    if (avformat_open_input(&amp;pFormatCtx, rtspUrl, nullptr, &amp;options) != 0) {&#xA;        printf("Couldn&#x27;t open stream file.\n");&#xA;        return;&#xA;    }&#xA;&#xA;    if (avformat_find_stream_info(pFormatCtx, NULL)&lt;0)&#xA;    {&#xA;        printf("Couldn&#x27;t find stream information.\n");&#xA;        return;&#xA;    }&#xA;    int videoStreamIndex = -1;&#xA;    for (int i = 0; i &lt; pFormatCtx->nb_streams; i&#x2B;&#x2B;) {&#xA;        if (pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;            videoStreamIndex = i;&#xA;            break;&#xA;        }&#xA;    }&#xA;    if (videoStreamIndex!=-1){&#xA;        AVStream* videoStream = pFormatCtx->streams[videoStreamIndex];&#xA;        &#xA;        AVCodecParameters* codecpar = videoStream->codecpar;&#xA;        const AVCodec* videoCodec = avcodec_find_decoder(codecpar->codec_id);&#xA;&#xA;        AVCodecContext* videoCodecContext = avcodec_alloc_context3(videoCodec);&#xA;&#xA;        avcodec_parameters_to_context(videoCodecContext,codecpar);&#xA;&#xA;        avcodec_open2(videoCodecContext,videoCodec,nullptr);&#xA;&#xA;        AVPixelFormat srcPixFmt = videoCodecContext->pix_fmt;&#xA;        QLabel* label = this->parentWidget->findChild("videoLabel");&#xA;        int targetWidth = label->width();&#xA;        int targetHeight = label->height();&#xA;        &#xA;        pOutBuffer = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_RGB32,&#xA;                                                                    videoCodecContext->width,&#xA;                                                                    videoCodecContext->height, 1));&#xA;&#xA;        &#xA;        pFrameRGB = av_frame_alloc();&#xA;        av_image_fill_arrays(pFrameRGB->data, pFrameRGB->linesize, pOutBuffer,&#xA;                             AV_PIX_FMT_RGB32, videoCodecContext->width, videoCodecContext->height, 1);&#xA;&#xA;&#xA;        swsContext= sws_getContext(&#xA;            videoCodecContext->width,videoCodecContext->height,srcPixFmt,&#xA;            targetWidth, targetHeight,AV_PIX_FMT_RGB32,&#xA;            SWS_BICUBIC,nullptr,nullptr,nullptr&#xA;            );&#xA;        &#xA;        AVPacket packet;&#xA;        AVFrame* frame = av_frame_alloc();&#xA;        int frameCounter = 0;&#xA;        while (av_read_frame(pFormatCtx, &amp;packet) >= 0) {&#xA;            if (shouldStop) {&#xA;                break;&#xA;            }&#xA;            if (packet.stream_index == videoStreamIndex) {&#xA;                &#xA;                int ret = avcodec_send_packet(videoCodecContext,&amp;packet);&#xA;                int rets = avcodec_receive_frame(videoCodecContext, frame);&#xA;                if (rets &lt; 0) {&#xA;                    qDebug() &lt;&lt; "Error receiving frame from codec context";&#xA;                }&#xA;                &#xA;                sws_scale(swsContext, frame->data, frame->linesize, 0, videoCodecContext->height,&#xA;                          pFrameRGB->data, pFrameRGB->linesize);&#xA;&#xA;                &#xA;                QImage img(pFrameRGB->data[0], targetWidth, targetHeight,&#xA;                           pFrameRGB->linesize[0], QImage::Format_RGB32);&#xA;                &#xA;                qDebug() &lt;&lt; index;&#xA;&#xA;                emit frameReady(img.copy(),index);&#xA;&#xA;&#xA;                QThread::msleep(30);  // 控制帧率&#xA;            }&#xA;            av_packet_unref(&amp;packet);&#xA;&#xA;        }&#xA;        av_frame_free(&amp;frame);&#xA;        av_frame_free(&amp;pFrameRGB);&#xA;        sws_freeContext(swsContext);&#xA;        avcodec_free_context(&amp;videoCodecContext);&#xA;        avformat_close_input(&amp;pFormatCtx);&#xA;        avformat_free_context(pFormatCtx);&#xA;&#xA;    }&#xA;&#xA;&#xA;}&#xA;&#xA;

    &#xA;

    The video is stuck and has snow screen. I want to lower the resolution and reduce the snow screen. The server cannot change the resolution.

    &#xA;