Recherche avancée

Médias (0)

Mot : - Tags -/performance

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (58)

  • 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

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 is the first MediaSPIP stable release.
    Its official release date is June 21, 2013 and is announced here.
    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 (...)

Sur d’autres sites (11722)

  • Updating SDL yuv Texture

    15 juin 2015, par madprogrammer2015

    I am receiving an H.264 video stream and successfully decoding it with FFMPEG. It can display the first frame of data but then after that the screen never updates. It just appears to become a static image. I am using YUV pixel format, and I am receiving it in that format as well. Also I am using SDL_UpdateYUVTexture().

    Here is my code :

    int main()
    {
       WORD wVersionRequested;
       WSADATA wsaData;
       int wsaerr;

       if (SDL_Init(SDL_INIT_EVERYTHING)) {
           fprintf(stderr, "Could not initialize SDL - %s\n", SDL_GetError());
           exit(1);
       }

       // Using MAKEWORD macro, Winsock version request 2.2
       wVersionRequested = MAKEWORD(2, 2);

       wsaerr = WSAStartup(wVersionRequested, &wsaData);

       if (wsaerr != 0)
       {
           /* Tell the user that we could not find a usable */
           /* WinSock DLL.*/
           printf("The Winsock dll not found!\n");
           return 0;
       }
       else
       {
           printf("The Winsock dll found!\n");
           printf("The status: %s.\n", wsaData.szSystemStatus);
       }

       /* Confirm that the WinSock DLL supports 2.2.*/
       /* Note that if the DLL supports versions greater    */
       /* than 2.2 in addition to 2.2, it will still return */
       /* 2.2 in wVersion since that is the version we      */
       /* requested.                                        */
       if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
       {
           /* Tell the user that we could not find a usable */
           /* WinSock DLL.*/
           printf("The dll do not support the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
           WSACleanup();
           return 0;
       }
       else
       {
           printf("The dll supports the Winsock version %u.%u!\n", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
           printf("The highest version this dll can support: %u.%u\n", LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
       }

       ULONG              localif;
       /*INT Ret;
       HANDLE ThreadHandle;
       DWORD ThreadId;
       WSAEVENT AcceptEvent;
       char               buf[1024];
       int                buflen = 1024, rc, err;*/

       SOCKET s;
       SOCKET ns;
       SOCKADDR_IN        multi, safrom;
       int fromlen;

       int totalSize = 0;

       AVCodec *codec;
       AVCodecContext *codecContext;
       int frame;
       int got_picture;
       AVFrame *picture;
       AVPacket packet;
       SwsContext* convertContext;
       uint16_t i = 1;
       //std::queue<madproto> queue;
       //std::list<madproto> list;
       AVCodecParserContext *parser;
       std::vector buffer;
       //moodycamel::ConcurrentQueue<madproto> protoQueue;

       SDL_Window *window;
       SDL_Renderer *renderer;
       SDL_Texture *bmp;
       SDL_Rect rect;

       file.open("log.txt");

       s = socket(AF_INET, SOCK_STREAM, IPPROTO_RM);

       multi.sin_family = AF_INET;
       multi.sin_port = htons(5150);
       multi.sin_addr.s_addr = inet_addr("234.5.6.7");
       int bindResult = bind(s, (PSOCKADDR)&amp;multi, sizeof(multi));

       if (bindResult &lt; 0)
       {
           std::cout &lt;&lt; "bindResult: " &lt;&lt; WSAGetLastError() &lt;&lt; std::endl;
       }

       listen(s, 10);

       //if ((AcceptEvent = WSACreateEvent()) == WSA_INVALID_EVENT)
       //{
       //  printf("WSACreateEvent() failed with error %d\n", WSAGetLastError());
       //  return 1;
       //}
       //else
       //  printf("WSACreateEvent() is OK!\n");

       //// Create a worker thread to service completed I/O requests
       //if ((ThreadHandle = CreateThread(NULL, 0, WorkerThread, (LPVOID)AcceptEvent, 0, &amp;ThreadId)) == NULL)
       //{
       //  printf("CreateThread() failed with error %d\n", GetLastError());
       //  return 1;
       //}
       //else
       //  printf("CreateThread() should be fine!\n");

       localif = inet_addr("192.168.1.2");
       setsockopt(s, IPPROTO_RM, RM_ADD_RECEIVE_IF, (char *)&amp;localif, sizeof(localif));

       fromlen = sizeof(safrom);
       ns = accept(s, (SOCKADDR *)&amp;safrom, &amp;fromlen);

       closesocket(s);  // Don't need to listen anymore

       std::string received;

       av_register_all();

       int horizontal = 0;
       int vertical = 0;

       GetDesktopResolution(horizontal, vertical);

       codec = avcodec_find_decoder(CODEC_ID_H264);
       if (!codec) {
           std::cout &lt;&lt; "codec not found" &lt;&lt; std::endl;
           std::cin.get();
       }

       codecContext = avcodec_alloc_context3(codec);

       /*if (codec->capabilities &amp; CODEC_CAP_TRUNCATED)
           codecContext->flags |= CODEC_FLAG_TRUNCATED;*/

       //codecContext->flags |= CODEC_FLAG_LOW_DELAY;
       codecContext->flags2 |= CODEC_FLAG2_CHUNKS;

       codecContext->width = horizontal;
       codecContext->height = vertical;
       codecContext->codec_id = CODEC_ID_H264;
       codecContext->codec_type = AVMEDIA_TYPE_VIDEO;
       codecContext->pix_fmt = PIX_FMT_YUV420P;
       codecContext->thread_type = 0;

       if (avcodec_open2(codecContext, codec, NULL) &lt; 0) {
           std::cout &lt;&lt; "could not open codec" &lt;&lt; std::endl;
           std::cin.get();
       }

       convertContext = sws_getContext(
           codecContext->width,
           codecContext->height,
           PIX_FMT_RGB32,
           codecContext->width,
           codecContext->height,
           PIX_FMT_YUV420P,
           SWS_BICUBIC,
           NULL,
           NULL,
           NULL
           );

       parser = av_parser_init(CODEC_ID_H264);

       picture = av_frame_alloc();

       if (ns == INVALID_SOCKET)
       {
           std::cout &lt;&lt; "accept didn't work!" &lt;&lt; std::endl;
           std::cin.get();
       }

       /*if (WSASetEvent(AcceptEvent) == FALSE)
       {
           printf("WSASetEvent() failed with error %d\n", WSAGetLastError());
           return 1;
       }
       else
           printf("WSASetEvent() should be working!\n");*/

       window = SDL_CreateWindow("YUV", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, codecContext->width, codecContext->height, SDL_WINDOW_SHOWN);
       renderer = SDL_CreateRenderer(window, -1, 0);
       bmp = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, codecContext->width, codecContext->height);

       //receive = SDL_CreateThread(receiveThread, "ReceiveThread", (void *)NULL);
       bool quit = false;

       rect.x = 0;
       rect.y = 0;
       rect.w = codecContext->width;
       rect.h = codecContext->height;

       while (!quit)
       {
           while (true)
           {
               MadProto proto;
               int result = recvfrom(ns, (char *)&amp;proto, sizeof(MadProto), 0, (struct sockaddr *)&amp;multi, &amp;fromlen);

               if (result &lt; 0)
               {
                   std::cout &lt;&lt; "receive failed! error: " &lt;&lt; WSAGetLastError() &lt;&lt; std::endl;
                   break;
               }
               else
               {
                   std::cout &lt;&lt; "receive successful, received " &lt;&lt; result &lt;&lt; " bytes" &lt;&lt; std::endl;

                   if (ntohs(proto.frame_end) == 1)
                   {
                       uint8_t *outbuffer = NULL;
                       int outBufSize = 0;
                       int rc = av_parser_parse2(parser, codecContext, &amp;outbuffer, &amp;outBufSize, buffer.data(), buffer.size(), 0, 0, 0);

                       if (outBufSize &lt;= 0)
                       {
                           std::cout &lt;&lt; "parsing failed!" &lt;&lt; std::endl;
                           std::cout &lt;&lt; "outBufSize: " &lt;&lt; outBufSize &lt;&lt; std::endl;
                           break;
                       }

                       if (rc)
                       {
                           std::cout &lt;&lt; "rc: " &lt;&lt; rc &lt;&lt; std::endl;
                           std::cout &lt;&lt; "parsing successful!" &lt;&lt; std::endl;
                           //std::cin.get();

                           av_init_packet(&amp;packet);
                           packet.size = outBufSize;
                           packet.data = outbuffer;

                           frame = avcodec_decode_video2(codecContext, picture, &amp;got_picture, &amp;packet);

                           if (frame &lt; 0)
                           {
                               std::cout &lt;&lt; "decoding was unsuccessful!" &lt;&lt; std::endl;
                               break;
                           }

                           if (got_picture)
                           {
                               std::cout &lt;&lt; "decoding was successful!" &lt;&lt; std::endl;
                               std::cout &lt;&lt; "decoded length was: " &lt;&lt; frame &lt;&lt; std::endl;
                               buffer.empty();

                               //std::cin.get();
                               int code = SDL_UpdateYUVTexture(bmp, NULL, picture->data[0], picture->linesize[0],
                                   picture->data[1], picture->linesize[1],
                                   picture->data[2], picture->linesize[2]);

                               if (code &lt; 0)
                               {
                                   std::cout &lt;&lt; "unable to update texture " &lt;&lt; SDL_GetError() &lt;&lt; std::endl;
                                   std::cin.get();
                               }

                               code = SDL_RenderClear(renderer);

                               if (code &lt; 0)
                               {
                                   std::cout &lt;&lt; "renderer clear failed " &lt;&lt; SDL_GetError() &lt;&lt; std::endl;
                                   std::cin.get();
                               }

                               code = SDL_RenderCopy(renderer, bmp, NULL, &amp;rect);

                               if (code &lt; 0)
                               {
                                   std::cout &lt;&lt; "renderer copy failed " &lt;&lt; SDL_GetError() &lt;&lt; std::endl;
                                   std::cin.get();
                               }

                               SDL_RenderPresent(renderer);

                               SDL_Delay(40);
                           }

                           av_free_packet(&amp;packet);
                       }
                   }
                   else
                   {
                       std::copy(proto.payload, proto.payload + ntohs(proto.nal_length), std::back_inserter(buffer));
                       std::cout &lt;&lt; "frame is continuing!" &lt;&lt; std::endl;

                       //queue.push(proto);
                       //list.push_front(proto);
                   }
               }
           }

           SDL_WaitEvent(&amp;event);
           switch (event.type)
           {
           case SDL_QUIT:
               quit = true;
               break;
           }
       }

       std::cout &lt;&lt; "closing everything!" &lt;&lt; std::endl;
       av_frame_free(&amp;picture);
       closesocket(ns);
       fclose(f);
       std::cin.get();
       return 0;
    }
    </madproto></madproto></madproto>
  • Revision 35841 : Pouvoir proposer des menus sous conditions * ’’’ necessite type="plugin" ...

    5 mars 2010, par cam.lafit@… — Log

    Pouvoir proposer des menus sous conditions
    * est possible dans le xml du menu
    Fais suite [5817] et discussion sur spip-zone

  • Streaming MP4 frames to HTML5, what am I doing wrong ?

    5 septembre 2014, par mczarnek

    Currently I am generating a MP4 Bitstream using Intel’s Media SDK library, which uses ffmpeg underneath the covers. I can generate a mp4 file, and play it and it works.

    However, when I try to stream that mp4 across the network, it doesn’t play within the HTML5 video player, as tested within Chrome, Firefox, or IE.

    This much is sent back and forth across the network :

    Sent by Chrome:
    GET / HTTP/1.1
    Host: localhost:8085
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36
    Accept-Encoding: identity;q=1, *;q=0
    Accept: */*
    Accept-Language: en-US,en;q=0.8
    Range: bytes=0-

    From my video player:
    HTTP/1.1 200 OK
    Server: Microsoft-HTTPAPI/2.0
    Date: Thu, 09 Jan 2014 17:28:14 GMT
    Content-type: video/mp4

    After this, I send a newline, and all the video frames, one after another, while listening to see if I receive anything back from the browser.

    Then nothing happens. Any suggestions to get this playing video ? Thank you !