Recherche avancée

Médias (91)

Autres articles (97)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

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

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (9398)

  • Code forks fine on macbook laptop..but on Imac(Yosemite) I get errors in my shell script

    2 mars 2015, par arantx

    I’m still figuring out how to work within the terminal, mainly with FFmpeg at the moment. I have this code running for a while now on my macbook pro (snow leopard I think). It works fine, no glitches whatsover. I just got an Imac (yosemite) and I wanted to install the same code, but now it gives these minor stupid syntax errors - that are not at fault on my laptop ! Its seems bizar to me, but maybe it’s something I forgot to install .. like a certain library ? I’ve tried to use the same steps as before but ofcourse I might have forgotten about one..

    The code will make a clip of 5 seconds on every hour via the embedded webcam, (the hourly notice is being programmed within crontab). This is the shell script :


    #!/bin/bash

    FNAME=videocapture_`date +"%F_%H_%M"`.mpg
    echo $FNAME

    /usr/local/bin/ffmpeg -t 5 -f avfoundation -i "default" $FNAME

    And these are the erros (I tried to change a few small syntaxes to see if it would stop but it just finds new errors)

    "SyntaxError: EOL while scanning string literal
    Arantxas-iMac:~ arantx$ python /Users/arantx/Documents/terminal\ stuff/camera.sh
     File "/Users/arantx/Documents/terminal stuff/camera.sh", line 3
       FNAME=videocapture_'date +"%F_%H_%M"`.mpeg
                                                ^
    SyntaxError: EOL while scanning string literal
    Arantxas-iMac:~ arantx$ python /Users/arantx/Documents/terminal\ stuff/camera.sh
     File "/Users/arantx/Documents/terminal stuff/camera.sh", line 3
       FNAME=videocapture_'date +"%F_%H_%M"`.mpeg
                                                 ^
    SyntaxError: EOL while scanning string literal
    Arantxas-iMac:~ arantx$ python /Users/arantx/Documents/terminal\ stuff/camera.sh
     File "/Users/arantx/Documents/terminal stuff/camera.sh", line 3
       FNAME=videocapture_'date +"%F_%H_%M"`.mp4"

    If someone can point something out that I might have missed, let me know !

    Kind regards,

    Arantxa

  • how to generate rtsp stream using laptop cam [closed]

    13 décembre 2023, par Mubahsir

    I am using the following command to capture video from the laptop camera and stream it as an RTSP using ffmpeg :

    


    ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -profile:v baseline -pix_fmt yuv420p -b:v 500k -r 30 -f rtsp rtsp://127.0.0.1:1234


    


    Upon executing this command, the laptop camera's indicator light turns on, indicating that it is in use. However, when attempting to view the RTSP stream on VLC using the URL rtsp://127.0.0.1:1234, no video is displayed.

    


  • the workstation' Image decode and render perform,use same code,worse than laptop

    12 janvier 2024, par karma1995

    i'm working on Image decoding and rendering,trying to develop a software to process and display 4K TIFF and DPX sequence.Developing on my laptop and testing on both laptop and workstation.It's wired that workstaion's performance worse than laptop,my hardware and code information is here :
The information of both machine

    


      

    1. Laptop
platform : windows 11
CPU : Intel I9-13900H 14C 20T
GPU : RTX 4060 Laptop GPU
Mem : 64G
Disk : SSD
    2. 


    3. Workstaton
platform : windows 10
CPU : Intel Xeon 56C 112T
GPU : RTX A6000
Mem : 512
Disk : SSD
IDE
IDE is Qt, version 5.14.0, both on laptop and workstation.
    4. 


    


    For Image decoding, ffmpeg is used

    


    void SeqDecodeTask::run()&#xA;{&#xA;    QElapsedTimer timer;&#xA;    timer.start();&#xA;    SwsContext* swsCtx = nullptr;&#xA;    AVPixelFormat srcFmt = AV_PIX_FMT_NONE;&#xA;    AVPixelFormat dstFmt = AV_PIX_FMT_NONE;&#xA;    AVFormatContext* fmtCtx;&#xA;    const AVCodec* codec;&#xA;    AVCodecContext* codecCtx;&#xA;    AVStream* stream;&#xA;    int index = -1;&#xA;    AVPacket pkt;&#xA;    AVFrame* frame = av_frame_alloc();&#xA;    AVFrame* output = av_frame_alloc();&#xA;    fmtCtx = avformat_alloc_context();&#xA;&#xA;    if(avformat_open_input(&amp;fmtCtx, file_.toUtf8(),&#xA;                           nullptr, nullptr) &lt; 0) {&#xA;        return;&#xA;    }&#xA;    if (avformat_find_stream_info(fmtCtx, nullptr) &lt; 0) {&#xA;        return;&#xA;    }&#xA;    for (unsigned int i = 0; i &lt; fmtCtx->nb_streams; i&#x2B;&#x2B;) {&#xA;        if (fmtCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;            index = static_cast<int>(i);&#xA;            continue;&#xA;        }&#xA;    }&#xA;    if (index &lt; 0) {&#xA;        return;&#xA;    }&#xA;    stream = fmtCtx->streams[index];&#xA;    fmtCtx->streams[index]->discard = AVDISCARD_DEFAULT;&#xA;    codecCtx = avcodec_alloc_context3(nullptr);&#xA;    if (avcodec_parameters_to_context(&#xA;                codecCtx,&#xA;                fmtCtx->streams[index]->codecpar) &lt; 0) {&#xA;        return;&#xA;    }&#xA;    codec = avcodec_find_decoder(codecCtx->codec_id);&#xA;    if (codec == nullptr) {&#xA;        return;&#xA;    }&#xA;    if (avcodec_open2(codecCtx, codec, nullptr) &lt; 0) {&#xA;        return;&#xA;    }&#xA;    av_read_frame(fmtCtx, &amp;pkt);&#xA;    avcodec_send_packet(codecCtx, &amp;pkt);&#xA;    avcodec_receive_frame(codecCtx, frame);&#xA;&#xA;    if (srcFmt == AV_PIX_FMT_NONE) {&#xA;        srcFmt = static_cast<avpixelformat>(frame->format);&#xA;    }&#xA;    dstFmt = AV_PIX_FMT_RGBA64LE;&#xA;    cv::Mat mat(cv::Size(frame->width, frame->height), CV_16UC4);&#xA;    if (!(frame->width &lt; 0 || frame->height &lt; 0)) {&#xA;        if (swsCtx == nullptr) {&#xA;            swsCtx = sws_alloc_context();&#xA;            swsCtx = sws_getContext(frame->width,&#xA;                                    frame->height,&#xA;                                    srcFmt,&#xA;                                    frame->width,&#xA;                                    frame->height,&#xA;                                    dstFmt,&#xA;                                    SWS_BICUBIC, nullptr,&#xA;                                    nullptr, nullptr);&#xA;        }&#xA;&#xA;        swsCtx = sws_getContext(frame->width, frame->height,&#xA;                                srcFmt,&#xA;                                frame->width, frame->height,&#xA;                                dstFmt,&#xA;                                SWS_BICUBIC, nullptr, nullptr, nullptr);&#xA;        av_image_fill_arrays(output->data, output->linesize,&#xA;                             static_cast(mat.data),&#xA;                             dstFmt,&#xA;                             frame->width, frame->height, 1);&#xA;        sws_scale(swsCtx, static_cast<const>(frame->data),&#xA;                  frame->linesize, 0, frame->height, output->data, output->linesize);&#xA;    }&#xA;    av_packet_unref(&amp;pkt);&#xA;    av_frame_free(&amp;output);&#xA;    av_frame_free(&amp;frame);&#xA;    sws_freeContext(swsCtx);&#xA;    avcodec_free_context(&amp;codecCtx);&#xA;    avformat_free_context(fmtCtx);&#xA;&#xA;    buffer_->edit(true, item_, index_, file_, mat);&#xA;&#xA;    emit decodeTaskFinished();&#xA;    qDebug() &lt;&lt; "decode time " &lt;&lt; timer.elapsed();&#xA;}&#xA;</const></avpixelformat></int>

    &#xA;

    Simply get the media information, decode, format transform and store in mat.It's a QRunnable class for multithread.

    &#xA;

    For rendering, have tried both QPainter and SceneGraph&#xA;QPainter :

    &#xA;

    void PaintedItemRender::paint(QPainter *painter)&#xA;{&#xA;    QElapsedTimer timer;&#xA;    timer.start();&#xA;    painter->setRenderHint(QPainter::Antialiasing, true);&#xA;    int width = this->width();&#xA;    int height = this->height();&#xA;//    if (defaultWidth_ == NULL || defaultHeight_ == NULL) {&#xA;//        defaultWidth_ = width;&#xA;//        defaultHeight_ = height;&#xA;//    }&#xA;    painter->setBrush(Qt::black);&#xA;    painter->drawRect(0, 0, width, height);&#xA;&#xA;    QImage img = image_.scaled(QSize(width, height), Qt::KeepAspectRatio);&#xA;    /* calculate display position */&#xA;    int x = (this->width() - img.width()) / 2;&#xA;    int y = (this->height() - img.height()) / 2;&#xA;&#xA;    painter->drawImage(QPoint(x, y), img);&#xA;    qDebug() &lt;&lt; "paint time: " &lt;code>

    &#xA;

    SceneGraph

    &#xA;

    QSGNode *SceneGraphRender::updatePaintNode(QSGNode* oldNode,&#xA;                                   QQuickItem::UpdatePaintNodeData* updatePaintNodeData)&#xA;{&#xA;    Q_UNUSED(updatePaintNodeData)&#xA;    QSGSimpleTextureNode* tex = nullptr;&#xA;    QSGTransformNode* trans = nullptr;&#xA;    if(!oldNode) {&#xA;        tex = new QSGSimpleTextureNode;&#xA;        tex->setFlag(QSGNode::OwnsMaterial, true);&#xA;        tex->setFiltering(QSGTexture::Linear);&#xA;        tex->setTexture(window()->createTextureFromImage(image_));&#xA;        tex->setRect(0, 0, width(), height());&#xA;        trans = new QSGTransformNode();&#xA;        if (!image_.isNull()) {&#xA;            float factorW = 1;&#xA;            float factorH = 1;&#xA;            if (image_.width() > width()) {&#xA;                factorH = factorW = width() / image_.width();&#xA;            }&#xA;            else if (image_.height() > height()) {&#xA;                factorW = factorH = height() / image_.height();&#xA;            }&#xA;            else if (image_.width() &lt; width() &amp;&amp; image_.height() &lt; height()) {&#xA;                if (width() - image_.width() &lt; image_.height() - height()) {&#xA;                    factorH = factorW = width() / image_.width();&#xA;                }&#xA;                else {&#xA;                    factorH = factorW = height() / image_.height();&#xA;                }&#xA;            }&#xA;            QMatrix4x4 mat;&#xA;            float scaledW = tex->rect().width() * factorW;&#xA;            float scaledH = tex->rect().height() * factorH;&#xA;            if (width() > scaledW) {&#xA;                mat.translate((width() - tex->rect().width() * factorW) / 2, 0);&#xA;            }&#xA;            if (height() > scaledH) {&#xA;                mat.translate(0, (height() - tex->rect().height() * factorH) / 2);&#xA;            }&#xA;            mat.scale(factorW, factorH);&#xA;            trans->setMatrix(mat);&#xA;            trans->markDirty(QSGNode::DirtyMatrix);&#xA;        }&#xA;        else {&#xA;            scaled_ = true;&#xA;        }&#xA;        trans->appendChildNode(tex);&#xA;    }&#xA;    else {&#xA;        trans = static_cast<qsgtransformnode>(oldNode);&#xA;        tex = static_cast<qsgsimpletexturenode>(trans->childAtIndex(0));&#xA;        QSGTexture* texture = tex->texture();&#xA;        tex->setTexture(window()->createTextureFromImage(image_));&#xA;        tex->setRect(0, 0, image_.width(), image_.height());&#xA;        texture->deleteLater();&#xA;        if(!image_.isNull() &amp;&amp; scaled_) {&#xA;            float factorW = 1;&#xA;            float factorH = 1;&#xA;            if (image_.width() > width()) {&#xA;                factorH = factorW = width() / image_.width();&#xA;            }&#xA;            else if (image_.height() > height()) {&#xA;                factorW = factorH = height() / image_.height();&#xA;            }&#xA;            else if (image_.width() &lt; width() &amp;&amp; image_.height() &lt; height()) {&#xA;                if (width() - image_.width() &lt; image_.height() - height()) {&#xA;                    factorH = factorW = width() / image_.width();&#xA;                }&#xA;                else {&#xA;                    factorH = factorW = height() / image_.height();&#xA;                }&#xA;&#xA;            }&#xA;            QMatrix4x4 mat;&#xA;            float scaledW = tex->rect().width() * factorW;&#xA;            float scaledH = tex->rect().height() * factorH;&#xA;            if (width() > scaledW) {&#xA;                mat.translate((width() - tex->rect().width() * factorW) / 2, 0);&#xA;            }&#xA;            if (height() > scaledH) {&#xA;                mat.translate(0, (height() - tex->rect().height() * factorH) / 2);&#xA;            }&#xA;            mat.scale(factorW, factorH);&#xA;            trans->setMatrix(mat);&#xA;            trans->markDirty(QSGNode::DirtyMatrix);&#xA;            scaled_ = false;&#xA;        }&#xA;    }&#xA;    return trans;&#xA;}&#xA;</qsgsimpletexturenode></qsgtransformnode>

    &#xA;

    Time Usage&#xA;Test image sequence is 4K DPX sequence, 12 bits, RGB.Decode only use one thread ;

    &#xA;

      &#xA;
    1. Laptop&#xA;decoding : around 200ms per frame&#xA;rendering : around 20ms per frame
    2. &#xA;

    3. Workstation&#xA;decoding : over 600ms per frame&#xA;rendering : around 80ms per frame
    4. &#xA;

    &#xA;

    i'm tring to figure out the reason that make performance diffrent and fix it, appreciate for any advice, thank you.

    &#xA;