Recherche avancée

Médias (91)

Autres articles (29)

  • 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

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

Sur d’autres sites (6534)

  • VLC huge buffering times over rtp for local H264 stream

    15 mars 2022, par mike

    I'm outputting an H264 stream, encoded by my application using ffmpeg. I can display it using ffplay, but when trying to view the stream in VLC, I only get the first frame, or it looks like that's the case.

    


    The messages output shows that it is "buffering", taking around a minute to get to 100% when the frame updates.
When using ffplay, the latency is about 50-100ms at worst.

    


    I am sending to rtp://127.0.0.1:6666?pkt_size=1316 with the format rtp_mpegts.
I am new to this and it's highly likely I haven't set the frame up completely correctly. The process is (minus declarations and error checking)

    


    codec_name = "libx264";&#xA;codec = avcodec_find_encoder_by_name(codec_name.c_str());&#xA;context = avcodec_alloc_context3(codec);&#xA;pkt = av_packet_alloc();&#xA;context->bit_rate = 5 * Mega;&#xA;context->width = info.DisplayWidth;&#xA;context->height = info.DisplayHeight;&#xA;context->time_base = { 1, FPS };&#xA;context->framerate = { FPS, 1 };&#xA;context->gop_size = 100;&#xA;context->max_b_frames = 1;            &#xA;context->pix_fmt = AV_PIX_FMT_YUV420P;&#xA;if (codec->id == AV_CODEC_ID_H264)&#xA;            {&#xA;                check_ret("set option: preset", av_opt_set(context->priv_data, "preset", "fast", 0));&#xA;                check_ret("set option: tune", av_opt_set(context->priv_data, "tune", "zerolatency", 0));&#xA;                check_ret("set option: profile", av_opt_set(context->priv_data, "profile", "baseline", 0));                &#xA;            }&#xA;check_ret("open codec", avcodec_open2(context, codec, NULL));&#xA;&#xA;// setup the stream &#xA;fmt = (AVOutputFormat*)av_guess_format("rtp_mpegts", NULL, NULL);&#xA;&#xA;avformat_alloc_output_context2(&amp;avfctx, fmt, fmt->name,&#xA;            "rtp://127.0.0.1:6666?pkt_size=1316"); &#xA;        &#xA;avio_open(&amp;avfctx->pb, avfctx->url, AVIO_FLAG_WRITE);&#xA;AVStream* stream = avformat_new_stream(avfctx, codec);&#xA;avcodec_parameters_from_context(stream->codecpar, context);&#xA;stream->time_base.num = 1;&#xA;stream->time_base.den = FPS;&#xA;avformat_write_header(avfctx, NULL);&#xA;&#xA;// then the encoding (in an output loop)&#xA;<not get="get" frame="frame" from="from" rgba="rgba" to="to" yuv="yuv">&#xA;yuvFrame->pts = i&#x2B;&#x2B;; // i is incremented every frame&#xA;avcodec_send_frame(enc_ctx, yuvFrame);&#xA; while (ret >= 0) {&#xA;  ret = avcodec_receive_packet(enc_ctx, pkt);          &#xA;  //ret = av_interleaved_write_frame(avfctx, pkt); was using this, don&#x27;t seem to need it&#xA;  ret = av_write_frame(avfctx, pkt);&#xA;  av_packet_unref(pkt);&#xA;}&#xA;</not>

    &#xA;

    The VLC output looks like this :

    &#xA;

    main debug: using hw decoder module "d3d11va"&#xA;avcodec info: Using D3D11VA (NVIDIA GeForce RTX 2080 Super with Max-Q Design, vendor 10de(NVIDIA), device 1e93, revision a1) for hardware decoding&#xA;qt debug: Logical video size: 1280x720&#xA;main debug: resized to 1280x720&#xA;main debug: VoutDisplayEvent &#x27;resize&#x27; 1280x720&#xA;main debug: Received first picture&#xA;main debug: Buffering 1%&#xA;main debug: Buffering 2%&#xA;main debug: Buffering 3%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 4%&#xA;main debug: Buffering 5%&#xA;main debug: Buffering 6%&#xA;main debug: Buffering 7%&#xA;main debug: Buffering 8%&#xA;main debug: Buffering 9%&#xA;main debug: Buffering 10%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 11%&#xA;rtp warning: 1 packet(s) lost&#xA;rtp warning: 1 packet(s) lost&#xA;rtp warning: 1 packet(s) lost&#xA;ts warning: discontinuity received 0x3 instead of 0xd (pid=256)&#xA;ts warning: discontinuity received 0x5 instead of 0xf (pid=256)&#xA;ts warning: discontinuity received 0x1 instead of 0xb (pid=256)&#xA;main debug: Buffering 12%&#xA;main debug: Buffering 13%&#xA;main debug: Buffering 14%&#xA;main debug: Buffering 15%&#xA;main debug: Buffering 16%&#xA;main debug: Buffering 17%&#xA;main debug: Buffering 18%&#xA;main debug: auto hiding mouse cursor&#xA;main debug: Buffering 19%&#xA;main debug: Buffering 20%&#xA;

    &#xA;

  • Dealing with long conversion times on nginx, ffmpeg and Ruby on Rails

    19 avril 2013, par Graeme

    I have developed a Ruby on Rails-based app which allows users to upload videos to one of our local servers (Ubunto 10.04 LTS). The server uses nginx.

    Through the paperclip-ffmpeg gem, videos are converted to mp4 format using the ffmpeg library.

    Everything appears to be working fine in production, except Rails' own 500 page (not the customised version I have provided - but that's a different issue) is displayed whenever certain videos are uploaded. Otherwise, videos are being converted as expected.

    Having done a bit of investigation, I think the default 500 page is being displayed because a 502 error has occurred. I think what is happening, having uploaded the videos locally, is that some videos are taking an extensive amount of time to convert, and that an interruption is occurring on the server (I'm not a server expert by any means).

    Using the excellent Railscasts episode on deployment, I use Capistrano to deploy the app. Here's the unicorn.rb file :

    root = "XXXXXXX"
    working_directory root
    pid "#{root}/tmp/pids/unicorn.pid"
    stderr_path "#{root}/log/unicorn.log"
    stdout_path "#{root}/log/unicorn.log"

    listen "/tmp/unicorn.XXXXXXXXX.sock"
    worker_processes 2
    timeout 200

    And here's the nginx.conf file. Note that client_max_body_size has been set to a fairly hefty 4Gb ! :

    upstream unicorn {
     server unix:/tmp/unicorn.XXXXXXXXX.sock fail_timeout=0;
    }

    server {
     listen 80 default deferred;
     root XXXXXXXXX;


     location ^~ /assets/ {
       gzip_static on;
       expires max;
       add_header Cache-Control public;
     }

     try_files $uri/index.html $uri @unicorn;
     location @unicorn {
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_read_timeout 600;
       proxy_redirect off;
       proxy_pass http://unicorn;
     }

     error_page 500 502 503 504 /500.html;
     client_max_body_size 4G;
     keepalive_timeout 10;

    }

    So, my question is...how could I edit (either of) the above two files to deal with the extensive time that certain videos take to convert through ffmpeg - possibly up to an hour, 2 hours or even more ?

    Should I extend timeout in the former and/or keepalive_timeout in the latter - or is there a more efficient way (given that I've no idea how long certain videos will take to convert) ?

    Or, is there possibly a more significant issue I should consider - e.g. the amount of memory in the server ?

    I'm not an nginx/server expert, so any advice would be useful (particularly where to put extra lines of code) - however, as the rest of the app just "works", I'm not keen to make a huge amount of changes !

  • ffmpeg4.1.3 built with Android NDK is 4 times bigger than linux gcc

    3 juillet 2020, par ravin.wang

    FFmpeg version : 4.1.3
    &#xA;android-ndk-r19c, 44 MB (armeabi-v7a)
    &#xA;gcc-7 : 9.7 MB (x86_64)

    &#xA;&#xA;

    The configuration is almost the same :

    &#xA;&#xA;

    For android-ndk-19c :
    &#xA;I didn't link x264, under Linux x86_64, x264 is linked, so in theory Linux X86_64 links more code than the android one.

    &#xA;&#xA;

    #!/bin/bash&#xA;&#xA;# set the toolchain&#xA;TOOLCHAIN=$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64&#xA;CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-&#xA;rm -f $(pwd)/compat/strtod.o&#xA;function build_one&#xA;{&#xA;#configure ffmpeg w/o libx264&#xA;./configure \&#xA;    --prefix=$PREFIX \&#xA;    --disable-everything --disable-programs --disable-doc \&#xA;    --enable-ffmpeg --enable-jni \&#xA;    --enable-encoder=aac \&#xA;    --enable-encoder=mpeg4 \&#xA;    --enable-encoder=pcm_u16le --enable-encoder=pcm_s16le \&#xA;    --enable-encoder=yuv4 \&#xA;    --enable-encoder=rawvideo \&#xA;    --enable-encoder=wrapped_avframe \&#xA;    --enable-decoder=aac --enable-decoder=aac_at --enable-decoder=aac_fixed \&#xA;    --enable-decoder=aac_latm \&#xA;    --enable-decoder=ac3 --enable-decoder=ac3_at --enable-decoder=ac3_fixed \&#xA;    --enable-decoder=avs \&#xA;    --enable-decoder=eac3 \&#xA;    --enable-decoder=eac3_at \&#xA;    --enable-decoder=h263 \&#xA;    --enable-decoder=h264 \&#xA;    --enable-decoder=hevc \&#xA;    --enable-decoder=mp1 --enable-decoder=mp1_at --enable-decoder=mp1float \&#xA;    --enable-decoder=mp2 \&#xA;    --enable-decoder=mp2_at \&#xA;    --enable-decoder=mp2float \&#xA;    --enable-decoder=mp3 --enable-decoder=mp3_at --enable-decoder=mp3float \&#xA;    --enable-decoder=vp8 --enable-decoder=vp9 \&#xA;    --enable-decoder=mpeg1video \&#xA;    --enable-decoder=mpeg2video \&#xA;    --enable-decoder=mpeg4 \&#xA;    --enable-decoder=mpegvideo \&#xA;    --enable-decoder=pcm_u16le --enable-decoder=pcm_s16le \&#xA;    --enable-decoder=yuv4 \&#xA;    --enable-decoder=rawvideo \&#xA;    --enable-decoder=wrapped_avframe \&#xA;    --enable-muxer=mpegts \&#xA;    --enable-muxer=mp4 \&#xA;    --enable-muxer=matroska --enable-muxer=matroska_audio --enable-muxer=webm \&#xA;    --enable-muxer=h264 \&#xA;    --enable-muxer=hevc \&#xA;    --enable-muxer=rawvideo \&#xA;    --enable-muxer=adts \&#xA;    --enable-muxer=yuv4mpegpipe \&#xA;    --enable-demuxer=aac \&#xA;    --enable-demuxer=ac3 \&#xA;    --enable-demuxer=eac3 \&#xA;    --enable-demuxer=m4v \&#xA;    --enable-demuxer=matroska \&#xA;    --enable-demuxer=mp3 \&#xA;    --enable-demuxer=mpegps \&#xA;    --enable-demuxer=mpegts \&#xA;    --enable-demuxer=mpegvideo \&#xA;    --enable-demuxer=h263 \&#xA;    --enable-demuxer=h264 \&#xA;    --enable-demuxer=hevc \&#xA;    --enable-demuxer=mov \&#xA;    --enable-demuxer=rawvideo \&#xA;    --enable-demuxer=yuv4mpegpipe \&#xA;    --enable-parser=aac \&#xA;    --enable-parser=aac_latm \&#xA;    --enable-parser=ac3 \&#xA;    --enable-parser=h263 \&#xA;    --enable-parser=h264 \&#xA;    --enable-parser=hevc \&#xA;    --enable-parser=mpeg4video \&#xA;    --enable-parser=mpegaudio \&#xA;    --enable-parser=mpegvideo \&#xA;    --enable-parser=vp8 \&#xA;    --enable-parser=vp9 \&#xA;    --enable-protocol=file \&#xA;    --enable-bsf=aac_adtstoasc \&#xA;    --enable-bsf=h264_mp4toannexb \&#xA;    --enable-bsf=hevc_mp4toannexb \&#xA;    --enable-bsf=mpeg4_unpack_bframes \&#xA;    --enable-filter=scale \&#xA;    --disable-zlib --disable-xlib --disable-iconv --disable-alsa \&#xA;    --disable-libxcb_shape --disable-libxcb_xfixes --disable-lzma \&#xA;    --disable-sdl2 --disable-sndio --disable-bzlib --disable-libxcb \&#xA;    --disable-hwaccels \&#xA;    --target-os=android \&#xA;    --enable-cross-compile \&#xA;    --toolchain=clang-usan \&#xA;    --cross-prefix=$CROSS_PREFIX \&#xA;    --cc=$TOOLCHAIN/bin/armv7a-linux-androideabi28-clang \&#xA;    --cxx=$TOOLCHAIN/bin/armv7a-linux-androideabi28-clang&#x2B;&#x2B; \&#xA;    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \&#xA;    --extra-ldflags="$ADDI_LDFLAGS" \&#xA;    --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG&#xA;make clean&#xA;make -j4&#xA;make install&#xA;}&#xA;&#xA;CPU=armeabi-v7a&#xA;mkdir -p $(pwd)/android/$CPU&#xA;PREFIX=$(pwd)/android/$CPU &#xA;ADDI_CFLAGS=""&#xA;ADDI_LDFLAGS="-Wl,-Bsymbolic"&#xA;ADDITIONAL_CONFIG_FLAG="--arch=arm"&#xA;build_one&#xA;

    &#xA;&#xA;

    After finishing and stripping it, 44MB ffmpeg is generated, it is horrible, but I have no idea for it, I tried to add -Os CFLAGS, but it does not help.

    &#xA;&#xA;

    Here is the X86_64 :

    &#xA;&#xA;

    #!/bin/bash&#xA;&#xA;configure()&#xA;{&#xA;    CPU=$1&#xA;    HOST=linux&#xA;    PREFIX=$(pwd)/$HOST/$CPU &#xA;    ADDI_CFLAGS="-I$(pwd)/../x264-stable/$HOST/$CPU/include"&#xA;    ADDI_LDFLAGS="-L$(pwd)/../x264-stable/$HOST/$CPU/lib"&#xA;    ADDITIONAL_CONFIG_FLAG=""&#xA;&#xA;    ./configure \&#xA;    --prefix=$PREFIX \&#xA;    --disable-everything --disable-programs --disable-doc \&#xA;    --enable-ffmpeg --enable-libx264 --enable-gpl \&#xA;    --enable-encoder=aac \&#xA;    --enable-encoder=libx264 \&#xA;    --enable-encoder=mpeg4 \&#xA;    --enable-encoder=pcm_u16le --enable-encoder=pcm_s16le \&#xA;    --enable-encoder=yuv4 \&#xA;    --enable-encoder=rawvideo \&#xA;    --enable-encoder=wrapped_avframe \&#xA;    --enable-decoder=aac \&#xA;    --enable-decoder=aac_at \&#xA;    --enable-decoder=aac_fixed \&#xA;    --enable-decoder=aac_latm \&#xA;    --enable-decoder=ac3 --enable-decoder=ac3_at --enable-decoder=ac3_fixed \&#xA;    --enable-decoder=avs \&#xA;    --enable-decoder=eac3 \&#xA;    --enable-decoder=eac3_at \&#xA;    --enable-decoder=h263 \&#xA;    --enable-decoder=h264 \&#xA;    --enable-decoder=hevc \&#xA;    --enable-decoder=mp1 --enable-decoder=mp1_at --enable-decoder=mp1float \&#xA;    --enable-decoder=mp2 \&#xA;    --enable-decoder=mp2_at \&#xA;    --enable-decoder=mp2float \&#xA;    --enable-decoder=mp3 --enable-decoder=mp3_at --enable-decoder=mp3float \&#xA;    --enable-decoder=vp8 --enable-decoder=vp9 \&#xA;    --enable-decoder=mpeg1video \&#xA;    --enable-decoder=mpeg2video \&#xA;    --enable-decoder=mpeg4 \&#xA;    --enable-decoder=mpegvideo \&#xA;    --enable-decoder=pcm_u16le --enable-decoder=pcm_s16le \&#xA;    --enable-decoder=yuv4 \&#xA;    --enable-decoder=rawvideo --enable-decoder=wrapped_avframe \&#xA;    --enable-muxer=mpegts \&#xA;    --enable-muxer=mp4 \&#xA;    --enable-muxer=matroska --enable-muxer=matroska_audio --enable-muxer=webm \&#xA;    --enable-muxer=h264 \&#xA;    --enable-muxer=hevc \&#xA;    --enable-muxer=rawvideo \&#xA;    --enable-muxer=adts \&#xA;    --enable-muxer=yuv4mpegpipe \&#xA;    --enable-demuxer=aac \&#xA;    --enable-demuxer=ac3 \&#xA;    --enable-demuxer=eac3 \&#xA;    --enable-demuxer=m4v \&#xA;    --enable-demuxer=matroska \&#xA;    --enable-demuxer=mp3 \&#xA;    --enable-demuxer=mpegps \&#xA;    --enable-demuxer=mpegts \&#xA;    --enable-demuxer=mpegvideo \&#xA;    --enable-demuxer=h263 \&#xA;    --enable-demuxer=h264 \&#xA;    --enable-demuxer=hevc \&#xA;    --enable-demuxer=mov \&#xA;    --enable-demuxer=rawvideo \&#xA;    --enable-demuxer=yuv4mpegpipe \&#xA;    --enable-parser=aac \&#xA;    --enable-parser=aac_latm \&#xA;    --enable-parser=ac3 \&#xA;    --enable-parser=h263 \&#xA;    --enable-parser=h264 \&#xA;    --enable-parser=hevc \&#xA;    --enable-parser=mpeg4video \&#xA;    --enable-parser=mpegaudio \&#xA;    --enable-parser=mpegvideo \&#xA;    --enable-parser=vp8 \&#xA;    --enable-parser=vp9 \&#xA;    --enable-protocol=file \&#xA;    --enable-bsf=aac_adtstoasc \&#xA;    --enable-bsf=h264_mp4toannexb \&#xA;    --enable-bsf=hevc_mp4toannexb \&#xA;    --enable-bsf=mpeg4_unpack_bframes \&#xA;    --enable-filter=scale \&#xA;    --disable-zlib --disable-xlib --disable-iconv \&#xA;    --disable-alsa --disable-libxcb_shape --disable-libxcb_xfixes \&#xA;    --disable-lzma --disable-sdl2 --disable-sndio \&#xA;    --disable-bzlib --disable-libxcb \&#xA;    --disable-hwaccels \&#xA;    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \&#xA;    --extra-ldflags="$ADDI_LDFLAGS"&#xA;}&#xA;&#xA;build()&#xA;{&#xA;    make clean&#xA;    cpu=$1&#xA;&#xA;    echo "build $cpu"&#xA;&#xA;    configure $cpu&#xA;    make -j4&#xA;    make install&#xA;}&#xA;&#xA;build linux_x86_64&#xA;&#xA;

    &#xA;