Recherche avancée

Médias (1)

Mot : - Tags -/biographie

Autres articles (111)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

  • Les notifications de la ferme

    1er décembre 2010, par

    Afin d’assurer une gestion correcte de la ferme, il est nécessaire de notifier plusieurs choses lors d’actions spécifiques à la fois à l’utilisateur mais également à l’ensemble des administrateurs de la ferme.
    Les notifications de changement de statut
    Lors d’un changement de statut d’une instance, l’ensemble des administrateurs de la ferme doivent être notifiés de cette modification ainsi que l’utilisateur administrateur de l’instance.
    À la demande d’un canal
    Passage au statut "publie"
    Passage au (...)

  • Initialisation de MediaSPIP (préconfiguration)

    20 février 2010, par

    Lors de l’installation de MediaSPIP, celui-ci est préconfiguré pour les usages les plus fréquents.
    Cette préconfiguration est réalisée par un plugin activé par défaut et non désactivable appelé MediaSPIP Init.
    Ce plugin sert à préconfigurer de manière correcte chaque instance de MediaSPIP. Il doit donc être placé dans le dossier plugins-dist/ du site ou de la ferme pour être installé par défaut avant de pouvoir utiliser le site.
    Dans un premier temps il active ou désactive des options de SPIP qui ne le (...)

Sur d’autres sites (8374)

  • ffmpeg encoding a video with time_base Not equal to framerate does not work in HML5 video players

    1er juillet 2019, par Gilgamesh22

    I have a time_base of 90000 with a frame rate of 30. I can generate a h264 video and have it work in VLC but this video does not work in the browser player. If I change the time_base to 30 It works fine.

    Note : I am changing the frame->pts appropriately to match the time_base.
    Note : Video does not have audio stream

    //header.h
    AVCodecContext *cctx;
    AVStream* stream;

    Here is the non working example code

    //source.cpp
    stream->time_base = { 1, 90000 };
    stream->r_frame_rate = { fps, 1 };
    stream->avg_frame_rate = { fps, 1 };

    cctx->codec_id = codecId;
    cctx->time_base = { 1 ,  90000 };
    cctx->framerate = { fps, 1 };

    // ......
    // add frame code later on timestamp are in millisecond
    frame->pts = (timestamp - startTimeStamp)* 90;

    Here is the working example code

    //source.cpp
    stream->time_base = { 1, fps};
    stream->r_frame_rate = { fps, 1 };
    stream->avg_frame_rate = { fps, 1 };

    cctx->codec_id = codecId;
    cctx->time_base = { 1 ,  fps};
    cctx->framerate = { fps, 1 };

    // ......
    //  add frame code timestamp are in millisecond
    frame->pts = (timestamp - startTimeStamp)/(1000/fps);

    Any ideas on why the second example works and the first does not in the HTML5 video player.

  • Prevent suspend event when streaming video via HTML video tag

    24 septembre 2014, par jasongullickson

    I seem to be having the opposite problem of most people who are streaming video using the HTML video tag ; I’m saturating the client with data.

    When playing a long video served via ffserver (webm container) everything works great but eventually the browser (Chrome in this case) will begin throwing "suspend" events. After a number of these ( 50-100), a "stalled" event will fire and playback will stop.

    I believe the problem is that once Chrome has buffered a certain amount of video it goes into "suspend" and stops downloading more data. I’ve tested this theory by throttling the speed at which video data is delivered, and if I keep the delivered frame rate close to the playback rate, I can prevent this from happening, but of course deliberately holding back server performance isn’t ideal.

    What I’m looking for is either a way to suppress this "suspend" behavior altogether, or alternatively a way to respond to the event that prevents the eventual "stalled" state.

    Presumably the browser at some point exits the "suspend" state and begins requesting data again, but I haven’t actually observed this occurring. I’m using a chain of mpeg2 -> ffmpeg -> ffserver to stream the video so if the browser is attempting to resume loading data I don’t see the request in my application. I could use a proxy or a sniffer to watch for the traffic but I would expect that maybe there is an ffserver log that can tell me the same thing ? In any event if it’s attempting to resume the download it’s failing, and there’s no indication server-side that there’s a reason for the request to fail (in fact I can pull up the same video feed from ffserver and see it playing correctly).

    So I feel like I’ve isolated this to a client-side playback issue, and one where the browser is voluntarily giving up on loading the data, but I’m not sure how to convince it to "not do that", or at least attempt to resume when it runs the buffer dry.

  • Create video file by mixing video and audio byte arrays FFmpeg & C++

    20 janvier 2021, par Sergey Zinovev

    I capture audio and video.

    


    Video is captured by using Desktop Duplication API and, as a result, I get Textures 2D.
These Textures 2D are char arrays.

    


    m_immediateContext->CopyResource(currTexture, m_acquiredDesktopImage.Get());&#xA;&#xA;D3D11_MAPPED_SUBRESOURCE* resource = new D3D11_MAPPED_SUBRESOURCE;&#xA;UINT subresource = D3D11CalcSubresource(0, 0, 0);&#xA;&#xA;m_immediateContext->Map(currTexture, subresource, D3D11_MAP_READ_WRITE, 0, resource);&#xA;&#xA;uchar * buffer = new uchar[(m_desc.Height * m_desc.Width * 4)];&#xA;const uchar * mappedData = static_cast<uchar>(resource->pData);&#xA;memcpy(buffer, mappedData, m_desc.Height * m_desc.Width * 4);&#xA;</uchar>

    &#xA;

    Then the Textures 2D convert in cv::Mat and write Video using OpenCV.

    &#xA;

    Audio captured by using WASAPI and, as a result, I get samples.

    &#xA;

    BYTE * buffer = new BYTE[(numFramesAvailable * pwfx->nBlockAlign)];&#xA;memcpy(buffer, pData, numFramesAvailable * pwfx->nBlockAlign);&#xA;

    &#xA;

    These samples are byte arrays then write in WAV file.

    &#xA;

    As a result, I get two files - video and audio, which merged by using FFmpeg.

    &#xA;

    I want to skip the creation of video and audio files and promptly create one file compose of two strims (video and audio) from raw data.

    &#xA;

    In order to make it I need help with FFmpeg code.&#xA;Specifically, in a way of creating and setting the correct output context and output streams, and how to encode raw data.

    &#xA;

    I've already learned doc/examples FFmpeg, but still can't make the working code. So, I really need your help guys.

    &#xA;