Recherche avancée

Médias (91)

Autres articles (111)

  • Participer à sa traduction

    10 avril 2011

    Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
    Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
    Actuellement MediaSPIP n’est disponible qu’en français et (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

Sur d’autres sites (11360)

  • How can we achieve textAlign="center" within box in case of multiline text using ffmpeg drawtext ? [closed]

    13 septembre 2024, par Ata MuhiUlDin

    When working with drawtext in ffmpeg, it allows to enable box to show behind the text, and also allows to assign some background color to it.

    


    But when it comes to multiline text, let's say there are three lines as shown in picture as current result :

    


    current results

    


    It never align text to center. But I want results like shown below :

    


    Required Output

    


    This time am using following ffmpeg command to draw text :

    


    -vf "drawtext=text='${text}': x=((w*${x})/${DIMENSIONS.width}): y=((h*${y})/${DIMENSIONS.height}):fontsize=36:fontcolor=yellow@0.9: box=1: boxcolor=black@0.6:boxborderw=20" -c:a copy

    


  • AVPacket->Data is empty "0/0" but has size

    24 juin 2024, par CottonBuds

    I am using libAV* to encode frames(unsigned char*) from my streaming application. I encoded my initialized frames but when I tried to get the avpacket. it returns an avpacket with a size but without data inside it "0/0"AvPacket no data

    


    here is my code

    


    StreamCodec.h

    


    &#xA;class StreamCodec : public QObject &#xA;{&#xA;    Q_OBJECT&#xA;public:&#xA;    StreamCodec(int height, int width, int fps);&#xA;&#xA;public slots:&#xA;    void encodeFrame(std::shared_ptr<uchar> pData);&#xA;    void run();&#xA;&#xA;signals:&#xA;    void encodeFinish(AVPacket* packet);&#xA;&#xA;private:&#xA;    void initializeSWS();&#xA;    void initializeCodec();&#xA;&#xA;    AVPacket* allocatepacket(AVFrame* frame);&#xA;    AVFrame* allocateFrame(std::shared_ptr<uchar> pData);&#xA;    AVFrame* formatFrame(AVFrame* frame);&#xA;&#xA;    const AVCodec* codec;&#xA;    AVCodecContext* context;&#xA;    SwsContext *swsContext;&#xA;    int bytesPerPixel;&#xA;    int width;&#xA;    int height;&#xA;    int fps;&#xA;    int pts = 0;&#xA;};&#xA;&#xA;</uchar></uchar>

    &#xA;

    StreamCodec.cpp

    &#xA;

    StreamCodec::StreamCodec(int height, int width, int fps)&#xA;{&#xA;    this->height = height;&#xA;    this->width = width;&#xA;    this->fps = fps;&#xA;}&#xA;&#xA;void StreamCodec::initializeCodec()&#xA;{&#xA;    codec = avcodec_find_encoder(AV_CODEC_ID_H264);&#xA;    if (!codec) {&#xA;        qDebug() &lt;&lt; "Codec not found";&#xA;        exit(1);&#xA;    }&#xA;     &#xA;    context = avcodec_alloc_context3(codec);&#xA;    if (!context) {&#xA;        qDebug() &lt;&lt; "Could not allocate codec context";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    context->height = height;&#xA;    context->width = width;&#xA;    context->time_base.num = 1;&#xA;    context->time_base.den = fps;&#xA;    context->framerate.num = fps;&#xA;    context->framerate.den = 1;&#xA;    context->pix_fmt = AV_PIX_FMT_YUV420P;&#xA;&#xA;    context->gop_size = 0;&#xA;&#xA;    av_opt_set(context->priv_data, "preset", "ultrafast", 0);&#xA;    av_opt_set(context->priv_data, "crf", "35", 0);&#xA;    av_opt_set(context->priv_data, "tune", "zerolatency", 0);&#xA;&#xA;    auto desc = av_pix_fmt_desc_get(AV_PIX_FMT_BGRA);&#xA;    if (!desc){&#xA;        qDebug() &lt;&lt; "Can&#x27;t get descriptor for pixel format";&#xA;        exit(1);&#xA;    }&#xA;    bytesPerPixel = av_get_bits_per_pixel(desc) / 8;&#xA;    if(av_get_bits_per_pixel(desc) % 8 != 0){&#xA;        qDebug() &lt;&lt; "Unhandled bits per pixel, bad in pix fmt";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    int err = avcodec_open2(context, codec, nullptr);&#xA;    if (err &lt; 0) {&#xA;        qDebug() &lt;&lt; "Could not open codec";&#xA;        exit(1);&#xA;    }&#xA;}&#xA;void StreamCodec::initializeSWS()&#xA;{&#xA;    swsContext = sws_getContext(width, height, AV_PIX_FMT_BGRA, width, height, AV_PIX_FMT_YUV420P, SWS_BILINEAR, NULL, NULL, NULL);&#xA;    if (!swsContext) {&#xA;        qDebug() &lt;&lt; "Could not allocate SWS Context";&#xA;        exit(1);&#xA;    }&#xA;}&#xA;&#xA;void StreamCodec::encodeFrame(std::shared_ptr<uchar> pData)&#xA;{&#xA;    int err = 0;&#xA;    AVFrame* frame1 = allocateFrame(pData);&#xA;    AVFrame* frame = formatFrame(frame1);&#xA;&#xA;    err = avcodec_send_frame(context, frame);&#xA;    if (err &lt; 0) {&#xA;        qDebug() &lt;&lt; "Error sending frame to codec";&#xA;        char* errStr = new char;&#xA;        av_make_error_string(errStr, 255, err);&#xA;        qDebug() &lt;&lt; errStr;&#xA;        av_frame_free(&amp;frame);&#xA;        exit(1);&#xA;    }&#xA;&#xA;    while (true) {&#xA;        AVPacket* packet = allocatepacket(frame);&#xA;        err = avcodec_receive_packet(context, packet);&#xA;        if (err == AVERROR_EOF || err == AVERROR(EAGAIN) ) {&#xA;            av_packet_unref(packet);&#xA;            av_packet_free(&amp;packet);&#xA;            break;&#xA;        }&#xA;        if (err &lt; 0) {&#xA;            qDebug() &lt;&lt; "Error recieving to codec";&#xA;            char* errStr = new char;&#xA;            av_make_error_string(errStr, 255, err);&#xA;            qDebug() &lt;&lt; errStr;&#xA;            av_frame_free(&amp;frame);&#xA;            av_frame_free(&amp;frame1);&#xA;            av_packet_free(&amp;packet);&#xA;            exit(1);&#xA;        }&#xA;        emit encodeFinish(packet);&#xA;    }&#xA;&#xA;    av_frame_free(&amp;frame);&#xA;    av_frame_free(&amp;frame1);&#xA;}&#xA;&#xA;void StreamCodec::run()&#xA;{&#xA;    initializeCodec();&#xA;    initializeSWS();&#xA;}&#xA;&#xA;AVPacket* StreamCodec::allocatepacket(AVFrame* frame)&#xA;{&#xA;    AVPacket* packet = av_packet_alloc();&#xA;    if (!packet) {&#xA;        qDebug() &lt;&lt; "Could not allocate memory for packet";&#xA;        av_frame_free(&amp;frame);&#xA;        exit(1);&#xA;    }&#xA;    return packet;&#xA;}&#xA;&#xA;AVFrame* StreamCodec::allocateFrame(std::shared_ptr<uchar> pData)&#xA;{&#xA;    AVFrame* frame = av_frame_alloc();&#xA;    if (!frame) {&#xA;        qDebug() &lt;&lt; "Could not allocate memory for frame";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    frame->format = AV_PIX_FMT_BGRA;&#xA;    frame->width = width;&#xA;    frame->height = height;&#xA;    frame->pts = pts;&#xA;&#xA;    if (av_frame_get_buffer(frame, 0) &lt; 0) {&#xA;        qDebug() &lt;&lt; "Failed to get frame buffer";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    if (av_frame_make_writable(frame) &lt; 0) {&#xA;        qDebug() &lt;&lt; "Failed to make frame writable";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    frame->data[0] = pData.get();&#xA;&#xA;    return frame;&#xA;}&#xA;&#xA;AVFrame* StreamCodec::formatFrame(AVFrame* frame)&#xA;{&#xA;    AVFrame* yuvFrame = av_frame_alloc();&#xA;    if (!yuvFrame) {&#xA;        qDebug() &lt;&lt; "Unable to allocate memory for yuv frame";&#xA;        av_frame_free(&amp;frame);&#xA;        exit(1);&#xA;    }&#xA;&#xA;    yuvFrame->format = context->pix_fmt;&#xA;    yuvFrame->width = width;&#xA;    yuvFrame->height = height;&#xA;    yuvFrame->pts = pts;&#xA;    pts &#x2B;= 1;&#xA;    &#xA;    if (av_frame_get_buffer(yuvFrame, 0) &lt; 0) {&#xA;        qDebug() &lt;&lt; "Failed to get frame buffer";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    if (av_frame_make_writable(yuvFrame) &lt; 0) {&#xA;        qDebug() &lt;&lt; "Failed to make frame writable";&#xA;        exit(1);&#xA;    }&#xA;&#xA;    int err = sws_scale(swsContext, (const uint8_t* const*)frame->data, frame->linesize, 0, height, (uint8_t* const*)yuvFrame->data, yuvFrame->linesize);&#xA;    if (err &lt; 0) {&#xA;        qDebug() &lt;&lt; "Could not format frame to yuv420p";&#xA;        exit(1);&#xA;    }&#xA;    return yuvFrame;&#xA;}&#xA;&#xA;&#xA;</uchar></uchar>

    &#xA;

    I tried checking for the frames and I'm pretty sure the data is there. I just dont know what to do at this point.

    &#xA;

    edit 1

    &#xA;

    I tried viewing the data using visual studio code "view" button it showed me this

    &#xA;

    enter image description here

    &#xA;

    Thank you so much to all that commented and pointed me to the right direction.

    &#xA;

  • avfilter/vf_scale : add optional "ref" input

    24 avril 2024, par Niklas Haas
    avfilter/vf_scale : add optional "ref" input
    

    This is automatically enabled if the width/height expressions reference
    any ref_* variable. This will ultimately serve as a more principled
    replacement for the fundamentally broken scale2ref.

    See-Also : https://trac.ffmpeg.org/ticket/10795

    • [DH] Changelog
    • [DH] doc/filters.texi
    • [DH] libavfilter/vf_scale.c