
Recherche avancée
Médias (91)
-
Les Miserables
9 décembre 2019, par
Mis à jour : Décembre 2019
Langue : français
Type : Textuel
-
VideoHandle
8 novembre 2019, par
Mis à jour : Novembre 2019
Langue : français
Type : Video
-
Somos millones 1
21 juillet 2014, par
Mis à jour : Juin 2015
Langue : français
Type : Video
-
Un test - mauritanie
3 avril 2014, par
Mis à jour : Avril 2014
Langue : français
Type : Textuel
-
Pourquoi Obama lit il mes mails ?
4 février 2014, par
Mis à jour : Février 2014
Langue : français
-
IMG 0222
6 octobre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Image
Autres articles (57)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)
Sur d’autres sites (8192)
-
libavcodec avcodec_open2 returns -22
28 juillet 2012, par buchtakI am trying to learn how to encode video using libavcodec library. I use the following initialization :
avcodec_register_all();
// This works fine.
AVCodec *avcodec = avcodec_find_encoder( CODEC_ID_H264 );
AVCodecContext *avctx = avcodec_alloc_context3( avcodec );
avctx->bit_rate = 400000;
avctx->width = 640;
avctx->height = 480;
avctx->time_base.den = 15;
avctx->time_base.num = 1;
avctx->gop_size = 10;
avctx->max_b_frames = 1;
avctx->pix_fmt = PIX_FMT_YUV420P;
av_opt_set( avctx->priv_data, "preset", "slow", 0 );
// ret should be zero, but it's negative
int ret = avcodec_open2( avctx, avcodec, NULL );However,
avcodec_open2(...)
always returns a negative value. Theavcodec_find_encoder(...)
works fine and the returned pointer is notNULL
. I use Win7 x64, 64-bit Zeranoe FFmpeg build fromhttp://ffmpeg.zeranoe.com/builds/
According to the readme the FFmpeg version is 2012-06-22 git-c17808c built with
--enable-libx264
. I also triedCODEC_ID_MPEG1VIDEO
and changing some of the initialization parameters, but no matter what I do, theavcodec_open2(...)
always returns value-22
. The decoding/encoding example provided with the Zeranoe build (it's the same one as http://ffmpeg.org/doxygen/trunk/api-example_8c-source.html) does not work either... -
Understanding FFMPEG Video Encoding
20 juin 2014, par SetSlapShotGot this from the encoding example in ffmpeg. I can somewhat follow the authors example for audio encoding, but I find myself befuddled looking at the C code (I commented in block numbers to help me reference what I’m talking about)...
static void video_encode_example(const char *filename)
{
AVCodec *codec;
AVCodecContext *c= NULL;
int i, out_size, size, x, y, outbuf_size;
FILE *f;
AVFrame *picture;
uint8_t *outbuf, *picture_buf; //BLOCK ONE
printf("Video encoding\n");
/* find the mpeg1 video encoder */
codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1); //BLOCK TWO
}
c= avcodec_alloc_context();
picture= avcodec_alloc_frame();
/* put sample parameters */
c->bit_rate = 400000;
/* resolution must be a multiple of two */
c->width = 352;
c->height = 288;
/* frames per second */
c->time_base= (AVRational){1,25};
c->gop_size = 10; /* emit one intra frame every ten frames */
c->max_b_frames=1;
c->pix_fmt = PIX_FMT_YUV420P; //BLOCK THREE
/* open it */
if (avcodec_open(c, codec) < 0) {
fprintf(stderr, "could not open codec\n");
exit(1);
}
f = fopen(filename, "wb");
if (!f) {
fprintf(stderr, "could not open %s\n", filename);
exit(1);
} //BLOCK FOUR
/* alloc image and output buffer */
outbuf_size = 100000;
outbuf = malloc(outbuf_size);
size = c->width * c->height;
picture_buf = malloc((size * 3) / 2); /* size for YUV 420 */
picture->data[0] = picture_buf;
picture->data[1] = picture->data[0] + size;
picture->data[2] = picture->data[1] + size / 4;
picture->linesize[0] = c->width;
picture->linesize[1] = c->width / 2;
picture->linesize[2] = c->width / 2; //BLOCK FIVE
/* encode 1 second of video */
for(i=0;i<25;i++) {
fflush(stdout);
/* prepare a dummy image */
/* Y */
for(y=0;yheight;y++) {
for(x=0;xwidth;x++) {
picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
}
} //BLOCK SIX
/* Cb and Cr */
for(y=0;yheight/2;y++) {
for(x=0;xwidth/2;x++) {
picture->data[1][y * picture->linesize[1] + x] = 128 + y + i * 2;
picture->data[2][y * picture->linesize[2] + x] = 64 + x + i * 5;
}
} //BLOCK SEVEN
/* encode the image */
out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture);
printf("encoding frame %3d (size=%5d)\n", i, out_size);
fwrite(outbuf, 1, out_size, f);
} //BLOCK EIGHT
/* get the delayed frames */
for(; out_size; i++) {
fflush(stdout);
out_size = avcodec_encode_video(c, outbuf, outbuf_size, NULL);
printf("write frame %3d (size=%5d)\n", i, out_size);
fwrite(outbuf, 1, out_size, f);
} //BLOCK NINE
/* add sequence end code to have a real mpeg file */
outbuf[0] = 0x00;
outbuf[1] = 0x00;
outbuf[2] = 0x01;
outbuf[3] = 0xb7;
fwrite(outbuf, 1, 4, f);
fclose(f);
free(picture_buf);
free(outbuf);
avcodec_close(c);
av_free(c);
av_free(picture);
} //BLOCK TENHere’s what I can get from the authors code block by block...
BLOCK ONE : Initializing Variables and pointers. I couldn’t find the AVFrame struct yet in the ffmpeg source code so I don’t know what its referencing
BLOCK TWO : Uses a codec from the file, if not found close.
BLOCK THREE : Sets sample video parameters. Only thing I don’t really get is gop size. I read about intra frames and I still don’t get what they are.
BLOCK FOUR : Open the file for writing...
BLOCK FIVE : Here’s where they really start losing me. Part is probably because I don’t know exactly what AVFrame is, but why do they only use 3/2 of the image size ?
BLOCK SIX & SEVEN : I don’t understand what they are trying to accomplish with this math.
BLOCK EIGHT : It looks like the avcodec function does all the work here, not concerned with that for the time being..
BLOCK NINE : Since it’s outside the 25 frame for loop I assume it gets the leftover frames ?
BLOCK TEN : Close, free mem, etc...
I know this is a large block of code to be confused with, any input would be helpful. I got put in over my head at work. Thanks in advance SO.
-
ffmpeg encoded hls makes audio and video progressively out of sync
21 septembre 2020, par eschieWhen trying to encoding a source .mp4 to multiple bitrates and sizes for adaptive HLSv3 playback the resulting audio and video become progressively out of sync. When scrubbing to a later point it seems to reset, and stay in sync.



I'm on the latest ffmpeg 4.2.1 via homebrew-ffmpeg, with the libfdk-aac codec. Note, this was also occurring with ffmpeg 4.1.



ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
 built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
 configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1-with-options_1 --enable-shared --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --disable-libjack --disable-indev=jack --enable-opencl --enable-videotoolbox --disable-htmlpages --enable-libfdk-aac --enable-nonfree
 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
 libswscale 5. 5.100 / 5. 5.100
 libswresample 3. 5.100 / 3. 5.100
 libpostproc 55. 5.100 / 55. 5.100




The audio and video streams are marginally off, would that cause this problem ?



ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 INPUT_FILE.mp4
80.480400



ffprobe -v error -select_streams a:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 INPUT_FILE.mp4
80.469333



Here is some metadata on the source file :



General
Complete name : INPUT_VIDEO.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp42/mp41)
File size : 236 MiB
Duration : 1 min 21 s
Overall bit rate mode : Variable
Overall bit rate : 24.2 Mb/s
Encoded date : UTC 2019-08-27 22:13:53
Tagged date : UTC 2019-08-27 22:15:15
TIM : 00;00;00;00
TSC : 30000
TSZ : 1001

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main@L4.1
Format settings : CABAC / 2 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 2 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 min 21 s
Bit rate mode : Variable
Bit rate : 23.8 Mb/s
Maximum bit rate : 768 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.383
Stream size : 233 MiB (99%)
Language : English
Encoded date : UTC 2019-08-27 22:13:53
Tagged date : UTC 2019-08-27 22:13:53
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Codec configuration box : avcC

Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : mp4a-40-2
Duration : 1 min 21 s
Source duration : 1 min 21 s
Bit rate mode : Constant
Bit rate : 317 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 3.10 MiB (1%)
Source stream size : 3.10 MiB (1%)
Language : English
Encoded date : UTC 2019-08-27 22:13:53
Tagged date : UTC 2019-08-27 22:13:53




And the encoding command :



ffmpeg \
-i INPUT_VIDEO \
-dn \
-sn \
-filter_complex \
"[0:v]fps=fps=24000/1001, \
setpts=(PTS-STARTPTS), \
split=12[vsplit1][vsplit2][vsplit3][vsplit4][vsplit5][vsplit6][vsplit7][vsplit8][vsplit9][vsplit10][vsplit11][vsplit12]; \
[vsplit1]scale=-1:1080[video_1080_4.1]; \
[vsplit2]scale=-1:720[video_720_4.1]; \
[vsplit3]scale=-1:720[video_720_3.1]; \
[vsplit4]scale=-1:540[video_540_3.1]; \
[vsplit5]scale=-1:432[video_432_3.1]; \
[vsplit6]scale=-1:270[video_270_3.0]; \
[vsplit7]scale=-1:270[video_270_3.1]; \
[vsplit8]scale=-1:144[video_144_4.1]; \
[vsplit9]scale=-1:144[video_144_3.0]; \
[vsplit10]scale=1920:1080[base_1080]; \
[vsplit11]scale=1280:720[base_720]; \
[vsplit12]scale=640:360[base_360]" \
\
-map "[video_1080_4.1]" \
-r:v:0 "24000/1001" \
-c:v:0 "libx264" \
-x264-params:0 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:0 "slow" \
-profile:v:0 "high" \
-level:v:0 "4.1" \
-refs:v:0 "2" \
-b-pyramid:v:0 "strict" \
-tune:v:0 "film" \
-b:v:0 "4800000" \
-maxrate:v:0 "4800000" \
-bufsize:v:0 "6*4800000/8" \
-vsync:v:0 "cfr" \
-bsf:v:0 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_720_4.1]" \
-r:v:1 "24000/1001" \
-c:v:1 "libx264" \
-x264-params:1 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:1 "slow" \
-profile:v:1 "main" \
-level:v:1 "4.1" \
-refs:v:1 "2" \
-b-pyramid:v:1 "strict" \
-tune:v:1 "film" \
-b:v:1 "3200000" \
-maxrate:v:1 "3200000" \
-bufsize:v:1 "6*3200000/8" \
-vsync:v:1 "cfr" \
-bsf:v:1 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_720_3.1]" \
-r:v:2 "24000/1001" \
-c:v:2 "libx264" \
-x264-params:2 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:2 "slow" \
-profile:v:2 "main" \
-level:v:2 "3.1" \
-refs:v:2 "2" \
-b-pyramid:v:2 "strict" \
-tune:v:2 "film" \
-b:v:2 "2200000" \
-maxrate:v:2 "2200000" \
-bufsize:v:2 "6*2200000/8" \
-vsync:v:2 "cfr" \
-bsf:v:2 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_540_3.1]" \
-r:v:3 "24000/1001" \
-c:v:3 "libx264" \
-x264-params:3 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:3 "slow" \
-profile:v:3 "main" \
-level:v:3 "3.1" \
-refs:v:3 "2" \
-b-pyramid:v:3 "strict" \
-tune:v:3 "film" \
-b:v:3 "1400000" \
-maxrate:v:3 "1400000" \
-bufsize:v:3 "6*1400000/8" \
-vsync:v:3 "cfr" \
-bsf:v:3 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_432_3.1]" \
-r:v:4 "24000/1001" \
-c:v:4 "libx264" \
-x264-params:4 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:4 "slow" \
-profile:v:4 "main" \
-level:v:4 "3.1" \
-refs:v:4 "2" \
-b-pyramid:v:4 "strict" \
-tune:v:4 "film" \
-b:v:4 "900000" \
-maxrate:v:4 "900000" \
-bufsize:v:4 "6*900000/8" \
-vsync:v:4 "cfr" \
-bsf:v:4 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_270_3.0]" \
-r:v:5 "24000/1001" \
-c:v:5 "libx264" \
-x264-params:5 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:5 "slow" \
-profile:v:5 "baseline" \
-level:v:5 "3.0" \
-refs:v:5 "2" \
-b-pyramid:v:5 "strict" \
-tune:v:5 "film" \
-b:v:5 "400000" \
-maxrate:v:5 "400000" \
-bufsize:v:5 "6*400000/8" \
-vsync:v:5 "cfr" \
-bsf:v:5 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_270_3.1]" \
-r:v:6 "24000/1001" \
-c:v:6 "libx264" \
-x264-params:6 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:6 "slow" \
-profile:v:6 "main" \
-level:v:6 "3.1" \
-refs:v:6 "2" \
-b-pyramid:v:6 "strict" \
-tune:v:6 "film" \
-b:v:6 "200000" \
-maxrate:v:6 "200000" \
-bufsize:v:6 "6*200000/8" \
-vsync:v:6 "cfr" \
-bsf:v:6 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_144_4.1]" \
-r:v:7 "24000/1001" \
-c:v:7 "libx264" \
-x264-params:7 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:7 "slow" \
-profile:v:7 "high" \
-level:v:7 "4.1" \
-refs:v:7 "2" \
-b-pyramid:v:7 "strict" \
-tune:v:7 "film" \
-b:v:7 "64000" \
-maxrate:v:7 "64000" \
-bufsize:v:7 "6*64000/8" \
-vsync:v:7 "cfr" \
-bsf:v:7 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[video_144_3.0]" \
-r:v:8 "24000/1001" \
-c:v:8 "libx264" \
-x264-params:8 "keyint=144:min-keyint=144:scenecut=0:open_gop=0" \
-preset:v:8 "slow" \
-profile:v:8 "baseline" \
-level:v:8 "3.0" \
-refs:v:8 "2" \
-b-pyramid:v:8 "strict" \
-tune:v:8 "film" \
-b:v:8 "56000" \
-maxrate:v:8 "56000" \
-bufsize:v:8 "6*56000/8" \
-vsync:v:8 "cfr" \
-bsf:v:8 "h264_metadata=fixed_frame_rate_flag=1" \
\
-map "[base_1080]" \
-c:v:9 "libx264" \
-preset:v:9 "slow" \
\
-map "[base_720]" \
-c:v:10 "libx264" \
-preset:v:10 "slow" \
\
-map "[base_360]" \
-c:v:11 "libx264" \
-preset:v:11 "slow" \
\
-map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 -map a:0 \
-c:a "libfdk_aac" \
-ar "48000" \
-ab "128k" \
-af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" \
\
-f tee \
-flags +global_header \
"[select=\'v:0,a:0,v:1,a:1,v:2,a:2,v:3,a:3,v:4,a:4,v:5,a:5,v:6,a:6,v:7,a:7,v:8,a:8\':f=hls:hls_flags=discont_start+temp_file:hls_time=6:hls_list_size=0:var_stream_map=\'v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3 v:4,a:4 v:5,a:5 v:6,a:6 v:7,a:7 v:8,a:8\':master_pl_name=playlist.m3u8:hls_segment_filename=INPUT_VIDEO__%v_%03d.ts]INPUT_VIDEO/out_%v.m3u8|[select=\'v:9,a:9\':f=mp4:movflags=+faststart]INPUT_VIDEO/large-1920-1080.mp4|[select=\'v:10,a:10\':f=mp4:movflags=+faststart]INPUT_VIDEO/med-1280-720.mp4|[select=\'v:11,a:11\':f=mp4:movflags=+faststart]INPUT_VIDEO/sm-640-360.mp4"