Recherche avancée

Médias (0)

Mot : - Tags -/interaction

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

Autres articles (46)

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

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

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

  • Merge commit '662558f985f50834eebe82d6b6854c66f33ab320'

    11 septembre 2018, par James Almer
    Merge commit '662558f985f50834eebe82d6b6854c66f33ab320'
    

    * commit '662558f985f50834eebe82d6b6854c66f33ab320' :
    decode : copy the output parameters from the last bsf in the chain back to the AVCodecContext
    decode : flush the internal bsfs instead of constantly reinitalizing them
    h264_redundant_pps_bsf : implement a AVBSFContext.flush() callback
    vp9_superframe_bsf : implement a AVBSFContext.flush() callback
    vp9_superframe_split_bsf : implement a AVBSFContext.flush() callback
    h264_mp4toannexb_bsf : implement a AVBSFContext.flush() callback
    bsf : add a flushing mechanism to AVBSFContext

    This commit is a noop, see
    b33f5299a59f5f155a4df5cb630b1de2acdb25b2
    390f156451bc860169deca68eee4e21bf746a9ab
    63e0846c66607a1a4cce027d9f55e353c4b56948
    e9980c451e294dbc8c81ed8dd4a8e5792397fbbe
    2954e513930f9b1bc2cfba49eed3fc1911e76892
    94fe138de0ba5892a7051f5b47c191a41b78805a
    f631c328e680a3dd491936b92f69970c20cdcfc7

    Merged-by : James Almer <jamrial@gmail.com>

  • RTMP live stream directly from NVENC encoder

    16 novembre 2018, par rnd

    I am trying to create a live RTMP stream containing the animation generated with NVIDIA OptiX. The stream is to be received by nginx + rtmp module and broadcasted in MPEG-DASH format. Full chain up to dash.js player is working if the video is first saved to .flv file and then I send it with ffmpeg without any reformatting using command :

    ffmpeg -re -i my_video.flv -c:v copy -f flv rtmp://x.x.x.x:1935/dash/test

    But I want to stream directly from the code. And with this I am failng... Nginx logs an error "dash : invalid avcc received (2 : No such file or directory)". Then it seems to receive the stream correctly (segments are rolling, dash manifest is there), however the stream is not possible to play in the browser.

    I can see only one difference in the manifest between direct stream and stream from file. Codecs attribute of the representation in the direct stream is missed : codecs="avcc1.000000" instead of "avc1.640028" which I get when streaming from file.

    My code opens the stream :

    av_register_all();
    AVOutputFormat* fmt = av_guess_format("flv",
    file_name, nullptr);
    fmt->video_codec = AV_CODEC_ID_H264;

    AVFormatContext* _oc;
    avformat_alloc_output_context2(&amp;_oc, fmt, nullptr, "rtmp://x.x.x.x:1935/dash/test");

    AVStream* _vs = avformat_new_stream(_oc, nullptr);
    _vs->id = 0;
    _vs->time_base = AVRational { 1, 25 };
    _vs->avg_frame_rate = AVRational{ 25, 1 };

    AVCodecParameters *vpar = _vs->codecpar;
    vpar->codec_id = fmt->video_codec;
    vpar->codec_type = AVMEDIA_TYPE_VIDEO;
    vpar->format = AV_PIX_FMT_YUV420P;
    vpar->profile = FF_PROFILE_H264_HIGH;
    vpar->level = _level;
    vpar->width = _width;
    vpar->height = _height;
    vpar->bit_rate = _avg_bitrate;

    avio_open(&amp;_oc->pb, _oc->filename, AVIO_FLAG_WRITE);
    avformat_write_header(_oc, nullptr);

    Width, height, bitrate, level and profile I get from NVENC encoder settings. I also do the error checking, ommited here. Then I have a loop writing each encoded packets, with IDR frames etc all prepared on the fly with NVENC. The loop body is :

    auto &amp; pkt_data = _packets[i];
    AVPacket pkt = { 0 };
    av_init_packet(&amp;pkt);
    pkt.pts = av_rescale_q(_n_frames++, AVRational{ 1, 25 }, _vs->time_base);
    pkt.duration = av_rescale_q(1, AVRational{ 1, 25 }, _vs->time_base);
    pkt.dts = pkt.pts;
    pkt.stream_index = _vs->index;
    pkt.data = pkt_data.data();
    pkt.size = (int)pkt_data.size();

    if (!memcmp(pkt_data.data(), "\x00\x00\x00\x01\x67", 5))
    {
       pkt.flags |= AV_PKT_FLAG_KEY;
    }

    av_write_frame(_oc, &amp;pkt);

    Obviously ffmpeg is writing avcc code somewhere... I have no clue where to add this code so the RTMP server can recognize it. Or I am missing something else ?

    Any hint greatly appreciated, folks !

  • RTMP live stream directly from NVENC encoder

    16 novembre 2018, par rnd

    I am trying to create a live RTMP stream containing the animation generated with NVIDIA OptiX. The stream is to be received by nginx + rtmp module and broadcasted in MPEG-DASH format. Full chain up to dash.js player is working if the video is first saved to .flv file and then I send it with ffmpeg without any reformatting using command :

    &#xA;&#xA;

    ffmpeg -re -i my_video.flv -c:v copy -f flv rtmp://x.x.x.x:1935/dash/test&#xA;

    &#xA;&#xA;

    But I want to stream directly from the code. And with this I am failng... Nginx logs an error "dash : invalid avcc received (2 : No such file or directory)". Then it seems to receive the stream correctly (segments are rolling, dash manifest is there), however the stream is not possible to play in the browser.

    &#xA;&#xA;

    I can see only one difference in the manifest between direct stream and stream from file. Codecs attribute of the representation in the direct stream is missed : codecs="avcc1.000000" instead of "avc1.640028" which I get when streaming from file.

    &#xA;&#xA;

    My code opens the stream :

    &#xA;&#xA;

    av_register_all();&#xA;AVOutputFormat* fmt = av_guess_format("flv",&#xA;file_name, nullptr);&#xA;fmt->video_codec = AV_CODEC_ID_H264;&#xA;&#xA;AVFormatContext* _oc;&#xA;avformat_alloc_output_context2(&amp;_oc, fmt, nullptr, "rtmp://x.x.x.x:1935/dash/test");&#xA;&#xA;AVStream* _vs = avformat_new_stream(_oc, nullptr);&#xA;_vs->id = 0;&#xA;_vs->time_base = AVRational { 1, 25 };&#xA;_vs->avg_frame_rate = AVRational{ 25, 1 };&#xA;&#xA;AVCodecParameters *vpar = _vs->codecpar;&#xA;vpar->codec_id = fmt->video_codec;&#xA;vpar->codec_type = AVMEDIA_TYPE_VIDEO;&#xA;vpar->format = AV_PIX_FMT_YUV420P;&#xA;vpar->profile = FF_PROFILE_H264_HIGH;&#xA;vpar->level = _level;&#xA;vpar->width = _width;&#xA;vpar->height = _height;&#xA;vpar->bit_rate = _avg_bitrate;&#xA;&#xA;avio_open(&amp;_oc->pb, _oc->filename, AVIO_FLAG_WRITE);&#xA;avformat_write_header(_oc, nullptr);&#xA;

    &#xA;&#xA;

    Width, height, bitrate, level and profile I get from NVENC encoder settings. I also do the error checking, ommited here. Then I have a loop writing each encoded packets, with IDR frames etc all prepared on the fly with NVENC. The loop body is :

    &#xA;&#xA;

    auto &amp; pkt_data = _packets[i];&#xA;AVPacket pkt = { 0 };&#xA;av_init_packet(&amp;pkt);&#xA;pkt.pts = av_rescale_q(_n_frames&#x2B;&#x2B;, AVRational{ 1, 25 }, _vs->time_base);&#xA;pkt.duration = av_rescale_q(1, AVRational{ 1, 25 }, _vs->time_base);&#xA;pkt.dts = pkt.pts;&#xA;pkt.stream_index = _vs->index;&#xA;pkt.data = pkt_data.data();&#xA;pkt.size = (int)pkt_data.size();&#xA;&#xA;if (!memcmp(pkt_data.data(), "\x00\x00\x00\x01\x67", 5))&#xA;{&#xA;    pkt.flags |= AV_PKT_FLAG_KEY;&#xA;}&#xA;&#xA;av_write_frame(_oc, &amp;pkt);&#xA;

    &#xA;&#xA;

    Obviously ffmpeg is writing avcc code somewhere... I have no clue where to add this code so the RTMP server can recognize it. Or I am missing something else ?

    &#xA;&#xA;

    Any hint greatly appreciated, folks !

    &#xA;