Recherche avancée

Médias (1)

Mot : - Tags -/publier

Autres articles (35)

  • Installation en mode ferme

    4 février 2011, par

    Le mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
    C’est la méthode que nous utilisons sur cette même plateforme.
    L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
    Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

Sur d’autres sites (5773)

  • avformat/oggenc : free buffered page lists while uninitializing the muxer

    21 octobre 2019, par James Almer
    avformat/oggenc : free buffered page lists while uninitializing the muxer
    

    If the trailer is never writen, there could be buffered pages that would leak.

    Reviewed-by : Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
    Signed-off-by : James Almer <jamrial@gmail.com>

    • [DH] libavformat/oggenc.c
  • ffmpeg take input and output as webm on port

    12 octobre 2019, par RussellHarrower

    I am wondering how I can take an audio input and output it as a webm

    This is what I thought would work to get it to rtp out but running into issue.

    ffmpeg -i http://stream.radiomedia.com.au:8003/stream -c copy  -f rtp rtp://127.0.0.1/streamID:54321  

    it returns

    ffmpeg -i http://stream.radiomedia.com.au:8003/stream -c copy  -f rtp rtp://127.0.0.1/streamID:54321                                 ffmpeg version 4.2.1-0york0~18.04 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
     configuration: --prefix=/usr --extra-version='0york0~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
     libavutil      56. 31.100 / 56. 31.100
     libavcodec     58. 54.100 / 58. 54.100
     libavformat    58. 29.100 / 58. 29.100
     libavdevice    58.  8.100 / 58.  8.100
     libavfilter     7. 57.100 /  7. 57.100
     libavresample   4.  0.  0 /  4.  0.  0
     libswscale      5.  5.100 /  5.  5.100
     libswresample   3.  5.100 /  3.  5.100
     libpostproc    55.  5.100 / 55.  5.100
    [mp3 @ 0x564cf51de940] invalid concatenated file detected - using bitrate for duration
    Input #0, mp3, from 'http://stream.radiomedia.com.au:8003/stream':
     Metadata:
       track           : 1
       title           : DNR1 Signal 1
       comment         : www.dvdvideosoft.com
       date            : 2019
       icy-br          : 128
       icy-description : Radio Media PTY LTD
       icy-genre       : Indie
       icy-name        : DRN1
       icy-pub         : 0
       icy-url         : https://www.drn1.com.au
       StreamTitle     :
     Duration: N/A, start: 0.025057, bitrate: 320 kb/s
       Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
       Metadata:
         encoder         : LAME3.99r
    Output #0, rtp, to 'rtp://127.0.0.1/streamID:54321':
     Metadata:
       track           : 1
       title           : DNR1 Signal 1
       comment         : www.dvdvideosoft.com
       date            : 2019
       icy-br          : 128
       icy-description : Radio Media PTY LTD
       icy-genre       : Indie
       icy-name        : DRN1
       icy-pub         : 0
       icy-url         : https://www.drn1.com.au
       StreamTitle     :
       encoder         : Lavf58.29.100
       Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
       Metadata:
         encoder         : LAME3.99r
    SDP:
    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=DNR1 Signal 1
    c=IN IP4 127.0.0.1
    t=0 0
    a=tool:libavformat 58.29.100
    m=audio 0 RTP/AVP 14
    b=AS:320
    a=control:streamid=0

    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
    Press [q] to stop, [?] for help
    av_interleaved_write_frame(): Invalid argument                                                                                                                                        Error writing trailer of rtp://127.0.0.1/streamID:54321: Invalid argument
    size=       0kB time=-00:00:00.02 bitrate=N/A speed=N/A                                                                                                                               video:0kB audio:1kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    Conversion failed!
  • How to capture sound from microphone with FFmpeg and then stream it in C/C++ ?

    9 octobre 2019, par Emad Kebriaei

    I’m trying to implementing the following line in C++ :

    fmpeg -ac 1 -f alsa -i hw:0,0 -acodec mp2 -ab 32k -ac 1 -re -f rtp rtp://localhost:1234

    The abovementioned line capture audio from the mic device and after some processing, stream it in RTP packet over UDP.
    I tried available resources but could not find such (or similar) implementation in C++.
    This is my code : (It was first developed by Lei Xiaouha to stream .flv file over RTMP. I changed in a way to capture audio from the microphone and store it in receive.mp2.)

    int main(int argc, char* argv[])
    {
       avdevice_register_all();
       av_register_all();
       //Network
       avformat_network_init();

       AVOutputFormat *ofmt = NULL;
       //Input AVFormatContext and Output AVFormatContext
       AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;
       AVPacket pkt;
       const char *in_filename, *out_filename;
       int ret, i;
       int videoindex=-1;
       int frame_index=0;
       AVInputFormat *fmt = nullptr;

       out_filename = "./receive.mp2";
       fmt = av_find_input_format("alsa");
       in_filename = "hw:0,0";
       int cnt=0;
       //Input
       if ((ret = avformat_open_input(&amp;ifmt_ctx, in_filename, fmt, nullptr)) &lt; 0) {
           printf( "Could not open input file.");
           goto end;
       }
       if ((ret = avformat_find_stream_info(ifmt_ctx, nullptr)) &lt; 0) {
           printf( "Failed to retrieve input stream information");
           goto end;
       }

       for(i=0; inb_streams; i++)
           if(ifmt_ctx->streams[i]->codecpar->codec_type==AVMEDIA_TYPE_VIDEO){
               videoindex=i;
               break;
           }

       av_dump_format(ifmt_ctx, 0, in_filename, 0);

       //Output
       avformat_alloc_output_context2(&amp;ofmt_ctx, nullptr, "mp2", out_filename); //

       if (!ofmt_ctx) {
           printf( "Could not create output context\n");
           ret = AVERROR_UNKNOWN;
           goto end;
       }
       ofmt = ofmt_ctx->oformat;
       for (i = 0; i &lt; ifmt_ctx->nb_streams; i++) {
           //Create output AVStream according to input AVStream
           AVStream *in_stream = ifmt_ctx->streams[i];
           AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec);
           if (!out_stream) {
               printf( "Failed allocating output stream\n");
               ret = AVERROR_UNKNOWN;
               goto end;
           }
           //Copy the settings of AVCodecContext
           ret = avcodec_copy_context(out_stream->codec, in_stream->codec);
           if (ret &lt; 0) {
               printf( "Failed to copy context from input to output stream codec context\n");
               goto end;
           }
           out_stream->codec->codec_tag = 0;
           if (ofmt_ctx->oformat->flags &amp; AVFMT_GLOBALHEADER)
               out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
       }
       //Dump Format------------------
       av_dump_format(ofmt_ctx, 0, out_filename, 1);
       //Open output URL
       if (!(ofmt->flags &amp; AVFMT_NOFILE)) {
           ret = avio_open(&amp;ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE);
           if (ret &lt; 0) {
               printf( "Could not open output URL '%s'", out_filename);
               goto end;
           }
       }
       //Write file header
       ret = avformat_write_header(ofmt_ctx, nullptr);
       if (ret &lt; 0) {
           printf( "Error occurred when opening output URL\n");
           goto end;
       }

    #if USE_H264BSF
       AVBitStreamFilterContext* h264bsfc =  av_bitstream_filter_init("h264_mp4toannexb");
    #endif

       while (1) {
           cnt++;
           AVStream *in_stream, *out_stream;
           //Get an AVPacket
           ret = av_read_frame(ifmt_ctx, &amp;pkt);
           if (ret &lt; 0)
               break;

           in_stream  = ifmt_ctx->streams[pkt.stream_index];
           out_stream = ofmt_ctx->streams[pkt.stream_index];
           /* copy packet */
           //Convert PTS/DTS
           pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, (AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, (AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX));
           pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base);
           pkt.pos = -1;
           //Print to Screen
           if(pkt.stream_index==videoindex){
               printf("Receive %8d video frames from input URL\n",frame_index);
               frame_index++;

    #if USE_H264BSF
               av_bitstream_filter_filter(h264bsfc, in_stream->codec, NULL, &amp;pkt.data, &amp;pkt.size, pkt.data, pkt.size, 0);
    #endif
           }
           ret = av_write_frame(ofmt_ctx, &amp;pkt);
    //        ret = av_interleaved_write_frame(ofmt_ctx, &amp;pkt);

           if (ret &lt; 0) {
               printf( "Error muxing packet\n");
               break;
           }

           av_free_packet(&amp;pkt);
       if (cnt > 1000)
           break;
       }

    #if USE_H264BSF
       av_bitstream_filter_close(h264bsfc);
    #endif

       //Write file trailer
       printf("suse");
       av_write_trailer(ofmt_ctx);
    end:
       avformat_close_input(&amp;ifmt_ctx);
       /* close output */
       if (ofmt_ctx &amp;&amp; !(ofmt->flags &amp; AVFMT_NOFILE))
           avio_close(ofmt_ctx->pb);
       avformat_free_context(ofmt_ctx);
       if (ret &lt; 0 &amp;&amp; ret != AVERROR_EOF) {
           printf( "Error occurred.\n");
           return -1;
       }
       return 0;
    }

    Can anyone help me with this ?