Recherche avancée

Médias (1)

Mot : - Tags -/Rennes

Autres articles (65)

  • L’utiliser, en parler, le critiquer

    10 avril 2011

    La première attitude à adopter est d’en parler, soit directement avec les personnes impliquées dans son développement, soit autour de vous pour convaincre de nouvelles personnes à l’utiliser.
    Plus la communauté sera nombreuse et plus les évolutions seront rapides ...
    Une liste de discussion est disponible pour tout échange entre utilisateurs.

  • 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

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

Sur d’autres sites (8348)

  • Anomalie #4353 : MYSQL 5.7 - Comportement du timestamp vs la variable explicit_defaults_for_timestamp

    1er juillet 2021, par b b

    J’y reviens, on ne peut pas cherry picker non ? Car ça risque de coller le même "version_base" dans la 3.2 et la 4.0. Faut reporter à la main donc ?

  • Anomalie #4353 (Nouveau) : MYSQL 5.7 - Comportement du timestamp vs la variable explicit_defaults_...

    17 juin 2019, par Eric Lupinacci

    Suite à une réinstallation de SVP (var_mode) qui supprime les tables et les recrée dans la foulée je me suis rendu compte que le timestamp de la table spip_depots ne se mettait plus à jour automatiquement.
    En cherchant avec Matthieu j’ai noté que chez moi la variable explicit_defaults_for_timestamp était à 1 ce qui ne devait jamais être le cas auparavant et donc provoquait ce dysfonctionnement si la déclaration du champ ne précisait pas la mise à jour automatique : DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

    En général, j’ai toujours vu les déclarations du type ’maj’ => ’timestamp’ sans rien préciser.

    Ne serait-il pas utile de forcer à la création d’un timestamp le default et le comportement à l’update de façon à se prémunir de ce problème de configuration MYSQL. En plus, une fois créée sans update auto il faut soit un alter table soit recréer la table ce qui est lourd.

  • How to save video data in a vector using ffmpeg ? (C++)

    25 octobre 2022, par nokla

    I'm new to ffmpeg and I am trying to write a program for video editing.

    


    I want to import a video file and save it somehow in a vector so I could edit its frames later.
When I saved all the decoded AVFrames in a vector I saw it takes a lot of memory and that I need to find a better way to do so.

    


    The function I used for reading a video :

    


    ** the function is in a class that representing video, source type is std::vector<avframe></avframe>

    &#xA;

    void VideoSource::ReadSource(std::string path)&#xA;{&#xA;    // Open the file using libavformat&#xA;    AVFormatContext* av_format_ctx = avformat_alloc_context();&#xA;    if (!av_format_ctx) {&#xA;        printf("Couldn&#x27;t create AVFormatContext\n");&#xA;        return; &#xA;    }&#xA;    if (avformat_open_input(&amp;av_format_ctx, path.c_str(), NULL, NULL) != 0) {&#xA;        printf("Couldn&#x27;t open video file\n");&#xA;        return;&#xA;    }&#xA;&#xA;    // Find the first valid video stream inside the file&#xA;    int video_stream_index = -1;&#xA;    AVCodecParameters* av_codec_params = NULL;&#xA;    const AVCodec* av_codec = NULL;&#xA;    for (int i = 0; i &lt; av_format_ctx->nb_streams; i)&#xA;    {&#xA;        av_codec_params = av_format_ctx->streams[i]->codecpar;&#xA;        av_codec = avcodec_find_decoder(av_codec_params->codec_id);&#xA;&#xA;        if (!av_codec) {&#xA;            continue;&#xA;        }&#xA;        if (av_codec_params->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;            video_stream_index = i;&#xA;            break;&#xA;        }&#xA;    }&#xA;&#xA;    if (video_stream_index == -1) {&#xA;        printf("Couldn&#x27;t find valid video stream inside file\n");&#xA;        return;&#xA;    }&#xA;&#xA;    // Set up a codec context for the decoder&#xA;    AVCodecContext* av_codec_ctx = avcodec_alloc_context3(av_codec);&#xA;    if (!av_codec_ctx) {&#xA;        printf("Couldn&#x27;t create AVCpdecContext\n");&#xA;        return;&#xA;    }&#xA;&#xA;    if (avcodec_parameters_to_context(av_codec_ctx, av_codec_params) &lt; 0)&#xA;    {&#xA;        printf("Couldn&#x27;t initialize AVCodecContext\n");&#xA;        return;&#xA;    }&#xA;    if (avcodec_open2(av_codec_ctx, av_codec, NULL) &lt; 0) {&#xA;        printf("Couldn&#x27;t open codec\n");&#xA;        return;&#xA;    }&#xA;&#xA;    AVFrame* av_frame = av_frame_alloc();&#xA;    if (!av_frame) {&#xA;        printf("Couldn&#x27;t allocate AVFrame\n");&#xA;        return;&#xA;    }&#xA;    AVPacket* av_packet = av_packet_alloc();&#xA;    if (!av_packet) {&#xA;        printf("Couldn&#x27;t allocate AVPacket\n");&#xA;        return;&#xA;    }&#xA;    int response;&#xA;&#xA;    while (av_read_frame(av_format_ctx, av_packet) >= 0) {&#xA;        if (av_packet->stream_index != video_stream_index) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        }&#xA;        response = avcodec_send_packet(av_codec_ctx, av_packet);&#xA;        if (response &lt; 0) {&#xA;            printf("Failed to decode packet: %s\n", av_err2str(response));&#xA;            return;&#xA;        }&#xA;        response = avcodec_receive_frame(av_codec_ctx, av_frame);&#xA;        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {&#xA;            av_packet_unref(av_packet);&#xA;            continue;&#xA;        }&#xA;        else if (response &lt; 0) {&#xA;            printf("Failed to decode frame: %s\n", av_err2str(response));&#xA;            return;&#xA;        }&#xA;        av_packet_unref(av_packet);&#xA;&#xA;        av_packet = av_packet_alloc();&#xA;&#xA;        // response = avcodec_send_frame(av_codec_ctx, av_frame);&#xA;&#xA;        source.push_back(*new AVFrame);&#xA;        source.back() = *av_frame_clone(av_frame);&#xA;&#xA;        av_frame_unref(av_frame);&#xA;    }&#xA;    &#xA;&#xA;    avformat_close_input(&amp;av_format_ctx);&#xA;    avformat_free_context(av_format_ctx);&#xA;    av_frame_free(&amp;av_frame);&#xA;    av_packet_free(&amp;av_packet);&#xA;    avcodec_free_context(&amp;av_codec_ctx);&#xA;}&#xA;

    &#xA;

    I thought maybe I should save it as a vector of encoded AVFrames or as a vector of encoded packet that contains some frames in it.

    &#xA;

    When I tried to encode a single AVFrame, I added this line&#xA;response = avcodec_send_frame(av_codec_ctx, av_frame); before pushing the frame into the vector (You can see it marked as a comment in the code above).
    &#xA;It returned invalid argument (-22) and I am not sure why.

    &#xA;

    Questions :

    &#xA;

      &#xA;
    1. Why did I get that error (-22) ?
    2. &#xA;

    3. How to save an encoded packet with multiple AVFrame in it ?
    4. &#xA;

    5. Is there a better way of working on a video that won't take as much memory ?
    6. &#xA;

    &#xA;