Recherche avancée

Médias (91)

Autres articles (21)

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

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

  • VLC huge buffering times over rtp for local H264 stream

    15 mars 2022, par mike

    I'm outputting an H264 stream, encoded by my application using ffmpeg. I can display it using ffplay, but when trying to view the stream in VLC, I only get the first frame, or it looks like that's the case.

    


    The messages output shows that it is "buffering", taking around a minute to get to 100% when the frame updates.
When using ffplay, the latency is about 50-100ms at worst.

    


    I am sending to rtp://127.0.0.1:6666?pkt_size=1316 with the format rtp_mpegts.
I am new to this and it's highly likely I haven't set the frame up completely correctly. The process is (minus declarations and error checking)

    


    codec_name = "libx264";&#xA;codec = avcodec_find_encoder_by_name(codec_name.c_str());&#xA;context = avcodec_alloc_context3(codec);&#xA;pkt = av_packet_alloc();&#xA;context->bit_rate = 5 * Mega;&#xA;context->width = info.DisplayWidth;&#xA;context->height = info.DisplayHeight;&#xA;context->time_base = { 1, FPS };&#xA;context->framerate = { FPS, 1 };&#xA;context->gop_size = 100;&#xA;context->max_b_frames = 1;            &#xA;context->pix_fmt = AV_PIX_FMT_YUV420P;&#xA;if (codec->id == AV_CODEC_ID_H264)&#xA;            {&#xA;                check_ret("set option: preset", av_opt_set(context->priv_data, "preset", "fast", 0));&#xA;                check_ret("set option: tune", av_opt_set(context->priv_data, "tune", "zerolatency", 0));&#xA;                check_ret("set option: profile", av_opt_set(context->priv_data, "profile", "baseline", 0));                &#xA;            }&#xA;check_ret("open codec", avcodec_open2(context, codec, NULL));&#xA;&#xA;// setup the stream &#xA;fmt = (AVOutputFormat*)av_guess_format("rtp_mpegts", NULL, NULL);&#xA;&#xA;avformat_alloc_output_context2(&amp;avfctx, fmt, fmt->name,&#xA;            "rtp://127.0.0.1:6666?pkt_size=1316"); &#xA;        &#xA;avio_open(&amp;avfctx->pb, avfctx->url, AVIO_FLAG_WRITE);&#xA;AVStream* stream = avformat_new_stream(avfctx, codec);&#xA;avcodec_parameters_from_context(stream->codecpar, context);&#xA;stream->time_base.num = 1;&#xA;stream->time_base.den = FPS;&#xA;avformat_write_header(avfctx, NULL);&#xA;&#xA;// then the encoding (in an output loop)&#xA;<not get="get" frame="frame" from="from" rgba="rgba" to="to" yuv="yuv">&#xA;yuvFrame->pts = i&#x2B;&#x2B;; // i is incremented every frame&#xA;avcodec_send_frame(enc_ctx, yuvFrame);&#xA; while (ret >= 0) {&#xA;  ret = avcodec_receive_packet(enc_ctx, pkt);          &#xA;  //ret = av_interleaved_write_frame(avfctx, pkt); was using this, don&#x27;t seem to need it&#xA;  ret = av_write_frame(avfctx, pkt);&#xA;  av_packet_unref(pkt);&#xA;}&#xA;</not>

    &#xA;

    The VLC output looks like this :

    &#xA;

    main debug: using hw decoder module "d3d11va"&#xA;avcodec info: Using D3D11VA (NVIDIA GeForce RTX 2080 Super with Max-Q Design, vendor 10de(NVIDIA), device 1e93, revision a1) for hardware decoding&#xA;qt debug: Logical video size: 1280x720&#xA;main debug: resized to 1280x720&#xA;main debug: VoutDisplayEvent &#x27;resize&#x27; 1280x720&#xA;main debug: Received first picture&#xA;main debug: Buffering 1%&#xA;main debug: Buffering 2%&#xA;main debug: Buffering 3%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 4%&#xA;main debug: Buffering 5%&#xA;main debug: Buffering 6%&#xA;main debug: Buffering 7%&#xA;main debug: Buffering 8%&#xA;main debug: Buffering 9%&#xA;main debug: Buffering 10%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 11%&#xA;rtp warning: 1 packet(s) lost&#xA;rtp warning: 1 packet(s) lost&#xA;rtp warning: 1 packet(s) lost&#xA;ts warning: discontinuity received 0x3 instead of 0xd (pid=256)&#xA;ts warning: discontinuity received 0x5 instead of 0xf (pid=256)&#xA;ts warning: discontinuity received 0x1 instead of 0xb (pid=256)&#xA;main debug: Buffering 12%&#xA;main debug: Buffering 13%&#xA;main debug: Buffering 14%&#xA;main debug: Buffering 15%&#xA;main debug: Buffering 16%&#xA;main debug: Buffering 17%&#xA;main debug: Buffering 18%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 19%&#xA;main debug: Buffering 20%&#xA;

    &#xA;

  • WinAPI multithreading access violation when writing in local variable

    26 février 2016, par JustPingo

    I’m making a multithreaded program using Visual C++, Win32 API (using _beginthread) that also uses FFmpeg (it is claimed to be thread-safe, and I’m using it only with one single thread anyway).

    Here is the part of my thread’s code that causes problems (everything is inside of the thread function) :

    Arena* arena = NULL;

    switch (task) {
       case TaskOne:
           arena = (Arena*) malloc(sizeof(Arena));
           for (uint i = 0; i &lt; FIGHTSPERROUND; i++) {
               generateArena(arena, ARENAWALLSAMOUNT, ARENAWIDTH, ARENAHEIGHT, ARENAMAXENTITIES, 255);
               spawnPlayer(arena, playerOne, 3, 1, 0, 0, ARENAPLAYERLIFE);
               spawnPlayer(arena, playerTwo, 2, 2, ARENAWIDTH-1, ARENAHEIGHT-1, ARENAPLAYERLIFE);

               do {
                   tickArena(arena);
               } while ((result = getResult(arena)) == 0);

               switch (result) {
                   case 1: teamOneScore++; break;
                   case 2: teamTwoScore++; break;
                   default: break;
               }

               freeArena(arena);
               clearMemory(playerOne);
               clearMemory(playerTwo);
               clearBrain(playerOne);
               clearBrain(playerTwo);
           }
           threadTeamOneScore[threadID] = teamOneScore;
           threadTeamTwoScore[threadID] = teamTwoScore;
           break;

       default: break;
    }

    Here is how I generate my arena :

    void generateArena(Arena* arena, uint wallsAmount, uint xSize, uint ySize, uint maxEntities, uint maxTurns) {
       CasesTypes** map;
       map = (CasesTypes**) malloc(xSize * sizeof(CasesTypes*));
       memset(map, 0, xSize * sizeof(CasesTypes*));
       for (uint i = 0; i &lt; xSize; i++) {
           map[i] = (CasesTypes*)malloc(ySize * sizeof(CasesTypes));
           memset(map[i], 0, ySize * sizeof(CasesTypes));
       }

       arena->map = map;
       arena->entities = (Entity*) malloc(maxEntities * sizeof(Entity));
       memset(arena->entities, 0, maxEntities * sizeof(Entity));
       arena->width = xSize;
       arena->height = ySize;
       arena->maxEntities = maxEntities;
       arena->maxTurns = maxTurns;
       arena->currentTurn = 0;
       arena->entitiesAmount = 0;
       for (uint i = 0; i &lt; wallsAmount; i++)
           arena->map[random2(1, xSize-1)][random2(1, ySize-1)] = Wall;
    }

    This works as expected 4 times in 5.
    But sometimes, for some reason, arena = (Arena*) malloc(sizeof(Arena)); throws an access violation exception.

    For example, Visual Studio 2015’s debugger once said :
    Exception thrown at 0x77DBE389 (ntdll.dll) in MyProgram.exe: 0xC0000005: Access violation writing location 0x007C160F.

    When I used the debugger to find what ((void*) 0x007C160F) was, it always happened to be something similar to :

    avformat-57.dll!0x007c160f (load symbols for additional information)

    avformat is a part of FFmpeg. The address was different every times, but it always had something to do with FFmpeg.

    I can’t figure out what is causing the problem.
    If that can help, sometimes the arena also happens to get corrupted (some of its fields get extremely big while generating them with generateArena although it is never changed and only set once to an integer, this leads to a crash later).

    Thank you in advance !

  • How to re-stream h.264 live stream to local mjpeg using ffmpeg ?

    15 janvier 2020, par xor31four

    Using this ffmpeg command I am able to convert a pre-existing file from h.264 to mjpeg.

    ffmpeg -i input.mov -c:v mjpeg -q:v 3 -an output.mov

    My live stream URL in the form rtsp ://XXX.XXX.XX.X/stream1.sdp

    Is it possible to locally re-stream this as an mjpeg url ?