Recherche avancée

Médias (91)

Autres articles (80)

  • Qu’est ce qu’un éditorial

    21 juin 2013, par

    Ecrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
    Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
    Vous pouvez personnaliser le formulaire de création d’un éditorial.
    Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    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 (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (12661)

  • FFMPEG : Youtube streaming issues

    23 février 2019, par Alex Paramonov

    I am trying to make a reliable stream from my Icecast/Shoutcast servers to Youtube live.
    The command that I use is :

    /usr/bin/ffmpeg -re -loop 1 -framerate 1 -i /var/users/youtube_stream/DJ-philadelphia_jO46wsH.jpg -i http://127.0.0.1:4700/radio -c:v libx264 -preset ultrafast -maxrate 2048k -bufsize 2048k -c:a copy -ab 128k -s 1920x1080 -rtmp_live live -f flv rtmp://a.rtmp.youtube.com/live2/k123 -nostats

    The stream starts running but suddenly stops at random times with the output similar to this :

    av_interleaved_write_frame(): Broken pipe
    [flv @ 0x5641e04db260] Failed to update header with correct duration.
    [flv @ 0x5641e04db260] Failed to update header with correct filesize.
    Error writing trailer of rtmp://a.rtmp.youtube.com/live2/123: Broken pipe
    frame= 4771 fps=1.0 q=2.0 Lsize=  106465kB time=01:19:30.00 bitrate= 182.8kbits/s speed=   1x
    video:29022kB audio:74516kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.825971%
    Conversion failed!
    99%
    Exiting normally, received signal 15.

    I can’t say exactly why is this happening and maybe there is a way to fix it, but to mee it looks like ffmpeg can not send or convert some frame and it breaks the entire process, so I started digging the docs and found a fifo format that has reconnection options in case of failure.
    So my new command is :

    /usr/bin/ffmpeg -re -loop 1 -framerate 1 -i /var/users/youtube_stream/DJ-philadelphia_jO46wsH.jpg -i http://127.0.0.1:4700/radio -c:v libx264 -preset ultrafast -maxrate 2048k -bufsize 2048k -c:a copy -ab 128k -s 1920x1080 -rtmp_live live -f fifo -fifo_format flv -map 0:v -map 1:a -drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 rtmp://a.rtmp.youtube.com/live2/123 -nostats

    With this command Youtube starts complaining about video resolution saying that 65535x65535 is not supported, value 65535 looks like something is not initialized properly. Please note that I have explicitly set the resolution with -s 1920x1080.

    The output from FLV and FIFO formats looks quite similar.

    FLV

    Input #0, image2, from '/var/users/youtube_stream/DJ-philadelphia_jO46wsH.jpg':
     Duration: 00:00:01.00, start: 0.000000, bitrate: 597 kb/s
       Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 1 fps, 1 tbr, 1 tbn, 1 tbc
    Input #1, mp3, from 'http://127.0.0.1:4700/radio':
     Metadata:
       icy-br          : 128
       icy-description : test
       icy-genre       : test
       icy-name        : Test
       icy-pub         : 1
       StreamTitle     : silence
     Duration: N/A, start: 0.000000, bitrate: 128 kb/s
       Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Stream mapping:
     Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
     Stream #1:0 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [libx264 @ 0x563bdde386a0] using SAR=1/1
    [libx264 @ 0x563bdde386a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    [libx264 @ 0x563bdde386a0] profile Constrained Baseline, level 4.0
    [libx264 @ 0x563bdde386a0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=1 scenecut=0 intra_refresh=0 rc_lookahead=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=2048 vbv_bufsize=2048 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=0
    Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/k478-1xpz-v2de-5e79':
     Metadata:
       encoder         : Lavf57.83.100
       Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 1 fps, 1k tbn, 1 tbc
       Metadata:
         encoder         : Lavc57.107.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 2048000/0/0 buffer size: 2048000 vbv_delay: -1
       Stream #0:1: Audio: mp3 ([2][0][0][0] / 0x0002), 44100 Hz, stereo, s16p, 128 kb/s

    FIFO

    Input #0, image2, from '/var/users/youtube_stream/DJ-philadelphia_jO46wsH.jpg':
     Duration: 00:00:01.00, start: 0.000000, bitrate: 597 kb/s
       Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 1 fps, 1 tbr, 1 tbn, 1 tbc
    Input #1, mp3, from 'http://127.0.0.1:4700/radio':
     Metadata:
       icy-br          : 128
       icy-description : test
       icy-genre       : test
       icy-name        : Test
       icy-pub         : 1
       StreamTitle     : silence
     Duration: N/A, start: 0.000000, bitrate: 128 kb/s
       Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Stream mapping:
     Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
     Stream #1:0 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [libx264 @ 0x560fb2209ae0] using SAR=1/1
    [libx264 @ 0x560fb2209ae0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    [libx264 @ 0x560fb2209ae0] profile Constrained Baseline, level 4.0
    Output #0, fifo, to 'rtmp://a.rtmp.youtube.com/live2/k478-1xpz-v2de-5e79':
     Metadata:
       encoder         : Lavf57.83.100
       Stream #0:0: Video: h264 (libx264), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 1 fps, 1 tbn, 1 tbc
       Metadata:
         encoder         : Lavc57.107.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 2048000/0/0 buffer size: 2048000 vbv_delay: -1
       Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s

    you can see the input streams, output, mapping - all fine except one line that is missing with fifo format :

    [libx264 @ 0x563bdde386a0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html ...

    Seems like video codec is not completely initialized and does not start with when using fifo format.

    So my questions are :

    1. is there a way to create a reliable stream with ffmpeg w/o using
      fifo format ?
    2. if fifo format is mandatory in this case, what’s wrong with my
      video codec ?
  • Is it possible to establish youtube live stream with ffmgep from Android if video encoded on another device

    20 mai 2015, par Nick Kleban

    I have "Android Device" and some other "Device with camera". This device captures video, encodes it (h264) and sends it to my phone through UDP. On phone i’m receiving only AVFrame’s and it enough to decode and show this video on phone screen. But i can’t establish working video stream to youtube.

    The problem is that all examples does encoding and streaming on one device, so they have properly initialized AVStream and AVPaket. I have feeling that i’m missing something but i cant find what. I’ve passed all stages of creating broadcast, stream, initialization of AVFormatContext, and av_interleaved_write_frame returns 0. Seems like all ok.
    But on youtube i see short living indication of video stream quality, then it dissapears, and all the time there is no video.

    So the question is is it possible to establish video stream to Youtube live if you have only AVFrames that encoded on some other device, and you missing some context information ? If so - what i’m missing ?

    static AVFormatContext *fmt_context = NULL;
    static AVStream *video_stream;

    eLIVESTREAM_ERROR LIVESTREAM_Manager_Start(char* url) {
       eLIVESTREAM_ERROR error = LIVESTREAM_ERROR;
       av_register_all();
       avcodec_register_all();
       fmt_context = avformat_alloc_context();

       AVOutputFormat *ofmt = NULL;
       if (fmt_context != NULL) {
           ofmt = av_guess_format("flv", NULL, NULL);
           if (ofmt != NULL) {
               fmt_context->oformat = ofmt;

               video_stream = av_new_stream(fmt_context, 0);
               AVCodec *video_codec = avcodec_find_decoder(AV_CODEC_ID_H264);
               AVCodecContext *video_codec_ctx = video_stream->codec;
               video_codec_ctx->pix_fmt = PIX_FMT_YUV420P;
               video_codec_ctx->skip_frame = AVDISCARD_DEFAULT;
               video_codec_ctx->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
               video_codec_ctx->skip_loop_filter = AVDISCARD_DEFAULT;
               video_codec_ctx->workaround_bugs = FF_BUG_AUTODETECT;
               video_codec_ctx->codec_type = AVMEDIA_TYPE_VIDEO;
               video_codec_ctx->codec_id = AV_CODEC_ID_H264;
               video_codec_ctx->skip_idct = AVDISCARD_DEFAULT;
               video_codec_ctx->time_base.num = 1;
               video_codec_ctx->time_base.den = 30;
               video_codec_ctx->width = 640;
               video_codec_ctx->height = 386;

               if(fmt_context->oformat->flags & AVFMT_GLOBALHEADER)  
                  video_codec_ctx->flags |= CODEC_FLAG_GLOBAL_HEADER;

               int codec_open_rslt = avcodec_open2(video_codec_ctx, video_codec, NULL);
               if (codec_open_rslt < 0) {
                   error = LIVESTREAM_ERROR;
               }

               if (!(ofmt->flags & AVFMT_NOFILE)) {
                   int open_rslt = avio_open(&fmt_context->pb, url, URL_WRONLY);
                   if (open_rslt == 0) {
                       int wrt_header_rslt = avformat_write_header(fmt_context, NULL);
                       if (wrt_header_rslt == 0) {
                           error = LIVESTREAM_OK;
                       } else {
                           avio_close(fmt_context->pb);
                       }
                   }
               }
           }
       }
       if (error != LIVESTREAM_OK) {
           if (ofmt != NULL) {
               av_free(ofmt);
           }
           if (fmt_context != NULL) {
               av_free(fmt_context);
           }
       }
       return error;
    }

    eLIVESTREAM_ERROR LIVESTREAM_Manager_Send (uint8_t *data , int size) {
       eLIVESTREAM_ERROR error = LIVESTREAM_OK;
       if (fmt_context == NULL || size <= 0 || data == NULL) {
           error = LIVESTREAM_ERROR;
       }
       if (error == LIVESTREAM_OK) {
           AVPacket pkt;
           av_init_packet(&pkt);
           pkt.stream_index = video_stream->index;
           pkt.data = data;
           pkt.size = size;
           pkt.pts = AV_NOPTS_VALUE;
           pkt.dts = AV_NOPTS_VALUE;
           pkt.duration = 0;
           pkt.pos = -1;
           int write_rslt = av_interleaved_write_frame(fmt_context, &pkt);
           if (write_rslt != 0) {
               error = LIVESTREAM_ERROR;
           }
       }
       return error;
    }

    void LIVESTREAM_Manager_Finish () {
       av_write_trailer(fmt_context);
       avio_close(fmt_context->pb);
       av_free(fmt_context);
       fmt_context = NULL;
    }
  • YouTube - MP4 to MP3 messes up

    23 novembre 2019, par theeSpark

    It’s supposed to download all the videos in the playlist and convert them to mp3. But all this does is make the mp4’s and 1 empty mp3 with a number higher than the max mp4. My newbie brain doesn’t know how to fix this...

    var ytpl = require('ytpl');
    var fs = require('fs-extra');
    var path = require('path');
    var ffmpeg = require('fluent-ffmpeg');
    var binaries = require('ffmpeg-static');
    var ytdl = require('ytdl-core');

    var output_dir = path.join(__dirname+"/dl");

    ytpl("PL8n8S4mVUWvprlN2dCAMoIo6h47ZwR_gn", (err, pl) => {
       if(err) throw err;

       let c = 0;

       pl.items.forEach((i) => {
           ytdl(i.url_simple+"", { filter: 'audioonly' }).pipe(fs.createWriteStream(output_dir+"/"+c+".mp4")).on('finish', () => {
               console.log("Finished MP4 DL, starting conversion...");
               ffmpeg(output_dir+"/"+c+".mp4")
                   .setFfmpegPath(binaries.path)
                   .format('mp3')
                   .audioBitrate(320)
                   .output(fs.createWriteStream(output_dir+"/"+c+".mp3"))
                   .on('end', () => {
                       console.log("Finished MP3 Convert...");
                   })
                   .run();
           });
           c++;
       });

    });