
Recherche avancée
Médias (91)
-
Géodiversité
9 septembre 2011, par ,
Mis à jour : Août 2018
Langue : français
Type : Texte
-
USGS Real-time Earthquakes
8 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
SWFUpload Process
6 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
-
Creativecommons informational flyer
16 mai 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (29)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip 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 2013Puis-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, parLa 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 mikeI'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 formatrtp_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";
codec = avcodec_find_encoder_by_name(codec_name.c_str());
context = avcodec_alloc_context3(codec);
pkt = av_packet_alloc();
context->bit_rate = 5 * Mega;
context->width = info.DisplayWidth;
context->height = info.DisplayHeight;
context->time_base = { 1, FPS };
context->framerate = { FPS, 1 };
context->gop_size = 100;
context->max_b_frames = 1; 
context->pix_fmt = AV_PIX_FMT_YUV420P;
if (codec->id == AV_CODEC_ID_H264)
 {
 check_ret("set option: preset", av_opt_set(context->priv_data, "preset", "fast", 0));
 check_ret("set option: tune", av_opt_set(context->priv_data, "tune", "zerolatency", 0));
 check_ret("set option: profile", av_opt_set(context->priv_data, "profile", "baseline", 0)); 
 }
check_ret("open codec", avcodec_open2(context, codec, NULL));

// setup the stream 
fmt = (AVOutputFormat*)av_guess_format("rtp_mpegts", NULL, NULL);

avformat_alloc_output_context2(&avfctx, fmt, fmt->name,
 "rtp://127.0.0.1:6666?pkt_size=1316"); 
 
avio_open(&avfctx->pb, avfctx->url, AVIO_FLAG_WRITE);
AVStream* stream = avformat_new_stream(avfctx, codec);
avcodec_parameters_from_context(stream->codecpar, context);
stream->time_base.num = 1;
stream->time_base.den = FPS;
avformat_write_header(avfctx, NULL);

// then the encoding (in an output loop)
<not get="get" frame="frame" from="from" rgba="rgba" to="to" yuv="yuv">
yuvFrame->pts = i++; // i is incremented every frame
avcodec_send_frame(enc_ctx, yuvFrame);
 while (ret >= 0) {
 ret = avcodec_receive_packet(enc_ctx, pkt); 
 //ret = av_interleaved_write_frame(avfctx, pkt); was using this, don't seem to need it
 ret = av_write_frame(avfctx, pkt);
 av_packet_unref(pkt);
}
</not>


The VLC output looks like this :


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



-
Dealing with long conversion times on nginx, ffmpeg and Ruby on Rails
19 avril 2013, par GraemeI 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 200And here's the
nginx.conf
file. Note thatclient_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/orkeepalive_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.wangFFmpeg version : 4.1.3

android-ndk-r19c, 44 MB (armeabi-v7a)

gcc-7 : 9.7 MB (x86_64)


The configuration is almost the same :



For android-ndk-19c :

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.


#!/bin/bash

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

CPU=armeabi-v7a
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU 
ADDI_CFLAGS=""
ADDI_LDFLAGS="-Wl,-Bsymbolic"
ADDITIONAL_CONFIG_FLAG="--arch=arm"
build_one




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.



Here is the X86_64 :



#!/bin/bash

configure()
{
 CPU=$1
 HOST=linux
 PREFIX=$(pwd)/$HOST/$CPU 
 ADDI_CFLAGS="-I$(pwd)/../x264-stable/$HOST/$CPU/include"
 ADDI_LDFLAGS="-L$(pwd)/../x264-stable/$HOST/$CPU/lib"
 ADDITIONAL_CONFIG_FLAG=""

 ./configure \
 --prefix=$PREFIX \
 --disable-everything --disable-programs --disable-doc \
 --enable-ffmpeg --enable-libx264 --enable-gpl \
 --enable-encoder=aac \
 --enable-encoder=libx264 \
 --enable-encoder=mpeg4 \
 --enable-encoder=pcm_u16le --enable-encoder=pcm_s16le \
 --enable-encoder=yuv4 \
 --enable-encoder=rawvideo \
 --enable-encoder=wrapped_avframe \
 --enable-decoder=aac \
 --enable-decoder=aac_at \
 --enable-decoder=aac_fixed \
 --enable-decoder=aac_latm \
 --enable-decoder=ac3 --enable-decoder=ac3_at --enable-decoder=ac3_fixed \
 --enable-decoder=avs \
 --enable-decoder=eac3 \
 --enable-decoder=eac3_at \
 --enable-decoder=h263 \
 --enable-decoder=h264 \
 --enable-decoder=hevc \
 --enable-decoder=mp1 --enable-decoder=mp1_at --enable-decoder=mp1float \
 --enable-decoder=mp2 \
 --enable-decoder=mp2_at \
 --enable-decoder=mp2float \
 --enable-decoder=mp3 --enable-decoder=mp3_at --enable-decoder=mp3float \
 --enable-decoder=vp8 --enable-decoder=vp9 \
 --enable-decoder=mpeg1video \
 --enable-decoder=mpeg2video \
 --enable-decoder=mpeg4 \
 --enable-decoder=mpegvideo \
 --enable-decoder=pcm_u16le --enable-decoder=pcm_s16le \
 --enable-decoder=yuv4 \
 --enable-decoder=rawvideo --enable-decoder=wrapped_avframe \
 --enable-muxer=mpegts \
 --enable-muxer=mp4 \
 --enable-muxer=matroska --enable-muxer=matroska_audio --enable-muxer=webm \
 --enable-muxer=h264 \
 --enable-muxer=hevc \
 --enable-muxer=rawvideo \
 --enable-muxer=adts \
 --enable-muxer=yuv4mpegpipe \
 --enable-demuxer=aac \
 --enable-demuxer=ac3 \
 --enable-demuxer=eac3 \
 --enable-demuxer=m4v \
 --enable-demuxer=matroska \
 --enable-demuxer=mp3 \
 --enable-demuxer=mpegps \
 --enable-demuxer=mpegts \
 --enable-demuxer=mpegvideo \
 --enable-demuxer=h263 \
 --enable-demuxer=h264 \
 --enable-demuxer=hevc \
 --enable-demuxer=mov \
 --enable-demuxer=rawvideo \
 --enable-demuxer=yuv4mpegpipe \
 --enable-parser=aac \
 --enable-parser=aac_latm \
 --enable-parser=ac3 \
 --enable-parser=h263 \
 --enable-parser=h264 \
 --enable-parser=hevc \
 --enable-parser=mpeg4video \
 --enable-parser=mpegaudio \
 --enable-parser=mpegvideo \
 --enable-parser=vp8 \
 --enable-parser=vp9 \
 --enable-protocol=file \
 --enable-bsf=aac_adtstoasc \
 --enable-bsf=h264_mp4toannexb \
 --enable-bsf=hevc_mp4toannexb \
 --enable-bsf=mpeg4_unpack_bframes \
 --enable-filter=scale \
 --disable-zlib --disable-xlib --disable-iconv \
 --disable-alsa --disable-libxcb_shape --disable-libxcb_xfixes \
 --disable-lzma --disable-sdl2 --disable-sndio \
 --disable-bzlib --disable-libxcb \
 --disable-hwaccels \
 --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
 --extra-ldflags="$ADDI_LDFLAGS"
}

build()
{
 make clean
 cpu=$1

 echo "build $cpu"

 configure $cpu
 make -j4
 make install
}

build linux_x86_64