
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (45)
-
L’agrémenter visuellement
10 avril 2011MediaSPIP est basé sur un système de thèmes et de squelettes. Les squelettes définissent le placement des informations dans la page, définissant un usage spécifique de la plateforme, et les thèmes l’habillage graphique général.
Chacun peut proposer un nouveau thème graphique ou un squelette et le mettre à disposition de la communauté. -
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Menus personnalisés
14 novembre 2010, parMediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
Menus créés à l’initialisation du site
Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)
Sur d’autres sites (6940)
-
FFmpeg : generating H264 video in c++
13 octobre 2015, par EZEROFIVE EMDIm using ffmpeg library in windows with vs2012 to convert a series of images into Mp4 with H264 encoding. Im new to FFMPEG.
Below is my code. Everything went fine. Video is created.But i can play the video in vlc player only if i changed the extension to ".h264", also when i check for codec information it says "H264 - MPEG-4 AVC (part 10) (h264)". but when i checked the same for other mp4 videos which are downloaded from web. it says "H264 - MPEG-4" AVC (part 10) (avc1)". I dont understand where it went wrong. Also i searched a lot, some says like add SPS and PPS.
const uint8_t sps[] = { 0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0x00,
0x0a, 0xf8, 0x41, 0xa2 };
const uint8_t pps[] = { 0x00, 0x00, 0x00, 0x01, 0x68, 0xce,
0x38, 0x80 };So i added the above value to video file before i add the image stream. But no luck.
Can anyone help on this..Thanks in advance.const uint8_t sps[] = { 0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0x00,
0x0a, 0xf8, 0x41, 0xa2 };
const uint8_t pps[] = { 0x00, 0x00, 0x00, 0x01, 0x68, 0xce,
0x38, 0x80 };
const uint8_t slice_header[] = { 0x00, 0x00, 0x00, 0x01, 0x05, 0x88,
0x84, 0x21, 0xa0 };
const uint8_t macroblock_header[] = { 0x0d, 0x00 };
const uint8_t spspps[] = { 0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0x00, 0x0a, 0xf8, 0x41, 0xa2,
0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x38, 0x80
};
int ff_load_image(uint8_t *data[4], int linesize[4],
int *w, int *h, enum PixelFormat *pix_fmt,
const char *filename, void *log_ctx)
{
AVInputFormat *iformat = NULL;
AVFormatContext *format_ctx = NULL;
AVCodec *codec=NULL;
AVCodecContext *codec_ctx=NULL;
AVFrame *frame=NULL;
int frame_decoded, ret = 0;
AVPacket pkt;
av_register_all();
iformat = av_find_input_format("image2");
if ((ret = avformat_open_input(&format_ctx, filename, iformat, NULL)) < 0) {
return ret;
}
codec_ctx = format_ctx->streams[0]->codec;
codec = avcodec_find_decoder(codec_ctx->codec_id);
if (!codec) {
ret = AVERROR(EINVAL);
goto end;
}
if ((ret = avcodec_open2(codec_ctx, codec, NULL)) < 0) {
goto end;
}
//if (!(frame = avcodec_alloc_frame()) ) {
if (!(frame = av_frame_alloc()) ) {
ret = AVERROR(ENOMEM);
goto end;
}
ret = av_read_frame(format_ctx, &pkt);
if (ret < 0) {
goto end;
}
ret = avcodec_decode_video2(codec_ctx, frame, &frame_decoded, &pkt);
if (ret < 0 || !frame_decoded) {
goto end;
}
ret = 0;
*w = frame->width;
*h = frame->height;
*pix_fmt = (PixelFormat)frame->format;
if ((ret = av_image_alloc(data, linesize, *w, *h, (AVPixelFormat)*pix_fmt, 16)) < 0)
goto end;
ret = 0;
av_image_copy(data, linesize, (const uint8_t **)frame->data, frame->linesize, (AVPixelFormat)*pix_fmt, *w, *h);
end:
if(codec_ctx) { avcodec_close(codec_ctx); }
if(format_ctx) { avformat_close_input(&format_ctx); }
if(frame) { av_freep(&frame); }
av_free_packet(&pkt);
return ret;
}
int load_image_into_frame(AVFrame *frame, const char *filename)
{
int retval = -1, res;
static struct SwsContext *sws_ctx;
uint8_t *image_data[4];
int linesize[4];
int source_width, source_height;
enum PixelFormat source_fmt;
res = ff_load_image(image_data, linesize, &source_width, &source_height, &source_fmt, filename, NULL);
if (source_fmt != frame->format) {
sws_ctx = sws_getContext(source_width, source_height, (AVPixelFormat)source_fmt,
frame->width, frame->height, (AVPixelFormat)frame->format,
sws_flags, NULL, NULL, NULL);
sws_scale(sws_ctx,
(const uint8_t * const *)image_data, linesize,
0, frame->height, frame->data, frame->linesize);
}
retval = 0;
error:
av_freep(&image_data[0]);
sws_freeContext(sws_ctx);
return retval;
}
int write_frame_to_file(FILE *file, AVFrame *frame, AVCodecContext *codec_context, AVPacket *pkt) {
int res, got_output;
av_init_packet(pkt);
pkt->data = NULL;
pkt->size = 0;
/* generate synthetic video */
frame->pts += 30;
res = avcodec_encode_video2(codec_context, pkt, frame, &got_output);
if (got_output) {
fwrite(pkt->data, 1, pkt->size, file);
av_free_packet(pkt);
}
return 0;
error:
return -1;
}
int write_image_to_file(FILE *file, const char *filename, int count, AVFrame *frame, AVCodecContext *codec_context, AVPacket *pkt) {
int res, i;
res = load_image_into_frame(frame, filename);
for (i = 0; i < count; i++) {
res = write_frame_to_file(file, frame, codec_context, pkt);
}
return 0;
error:
return -1;
}
int write_delayed_frames_to_file(FILE *file, AVFrame *frame, AVCodecContext *codec_context, AVPacket *pkt) {
int res, got_output;
for (got_output = 1; got_output;) {
res = avcodec_encode_video2(codec_context, pkt, NULL, &got_output);
if (got_output) {
fwrite(pkt->data, 1, pkt->size, file);
av_free_packet(pkt);
}
}
return 0;
error:
return -1;
}
AVCodecContext *get_codec_context(int width, int height, int fps)
{
int res;
avcodec_register_all();
AVCodec *codec;
AVCodecContext *codec_context = NULL;
codec = avcodec_find_encoder(AV_CODEC_ID_H264);
codec_context = avcodec_alloc_context3(codec);
codec_context->bit_rate = 441000;
codec_context->width = width;
codec_context->height = height;
AVRational temp_113 = {1, fps};
AVRational temp_114 = {fps, 1};
codec_context->time_base= temp_113;
codec_context->gop_size = 10;
codec_context->max_b_frames=1;
codec_context->pix_fmt = AV_PIX_FMT_YUV420P;
res = avcodec_open2(codec_context, codec, NULL);
return codec_context;
error:
return NULL;
}
AVFrame *get_av_frame(AVCodecContext *codec_context) {
int res;
AVFrame *frame;
frame = av_frame_alloc();
frame->height = codec_context->height;
frame->width = codec_context->width;
frame->format = codec_context->pix_fmt;
frame->pts = 0;
res = av_image_alloc(frame->data, frame->linesize, frame->width, frame->height, (AVPixelFormat)frame->format, 1);
return frame;
error:
return NULL;
}
int main(int argc, char **argv)
{
const char *filename = "result video\\test.mp4";
FILE *file=NULL;
int res, retval=-1;
AVCodecContext *codec_context= NULL;
AVFrame *frame=NULL;
AVPacket pkt;
uint8_t endcode[] = { 0, 0, 1, 0xb7 };
codec_context = get_codec_context(1920, 1080, 30);
file = fopen(filename, "wb");
//check(file != NULL, "could not open destination file %s", filename);
frame = get_av_frame(codec_context);
//fwrite(sps, 1, sizeof(sps), file);
//fwrite(pps, 1, sizeof(pps), file);
/*codec_context->extradata = (uint8_t *)malloc(sizeof(uint8_t) * sizeof(spspps));
for(unsigned int index = 0; index < sizeof(spspps); index++)
{
codec_context->extradata[index] = spspps[index];
}
codec_context->extradata_size = (int)sizeof(spspps);*/
codec_context->flags |= CODEC_FLAG_GLOBAL_HEADER;
int i, frames= 51;
for (i = 0; i < frames; i++) {
std::stringstream ss;
ss<<"\\frames\\out"<<( i + 1)<<".jpg";
res = write_image_to_file(file, ss.str().c_str(), 3, frame, codec_context, &pkt);
}
res = write_delayed_frames_to_file(file, frame, codec_context, &pkt);
fwrite(endcode, 1, sizeof(endcode), file);
retval = 0;
error:
if (file)
fclose(file);
if (codec_context) {
avcodec_close(codec_context);
av_free(codec_context);
}
if (frame) {
av_freep(&frame->data[0]);
av_free(frame);
}
return retval;
}
} -
ffmpeg javacv audio - integrate audio into video javacv
16 juillet 2014, par Cyril LequeuxI’ve looked for this issue since a while but I didn’t find out any solution...
I want to create a video from pictures with javacv (great, it works). But now I want to put in a sync way audio into my video. I heard I had to make a byte array with the sound data and then record() according to the audiobitrate/8 = audiobyterate but i didn’t find a simple sample...I’m not the first asking this question but all the same questions are still unansweredIplImage Image = cvLoadImage("data/photo.jpg");
FrameRecorder recorder = FFmpegFrameRecorder.createDefault("out.avi", 1920, 1080);
recorder.setVideoCodec(AV_CODEC_ID_MPEG4);
recorder.setFrameRate(30);
recorder.setFormat("avi");
recorder.start();
for(int s=0; s<10; s++){
for(int i=0; i<30; i++){
recorder.record(Image);
//Here I want to record my music.mp3 stream
}
}
recorder.stop();Please help me, I’m desesperate :p
Ps : I’m using javacv 0.3 FFMPEG 1.06 OpenCv 2.4.3 -
ffmpeg terminates without any output
11 septembre 2012, par KhanI am using ffmpeg to convert a video file to mp4. here is my code
echo "converting ".basename($src)." --- to --- ".basename($dest).".mp4...<br />";
$command = FFMPEG.' -i ' . $src . ' -sameq -strict -2 -vcodec libx264 -ar 22050 -y ' . $dest.'.mp4 2>&1'; //
echo $command.'<br />';
exec($command,$output,$status);
echo '<pre>',join('<br />',$output),'</pre><br />';
if($status == 0) { // Success
echo 'Successfully converted to MP4!<br />';
} else {
echo $status."<br />failed<br />";
}The code works fine on my localhost (Windows 7 + wamp).. But on live server , only $command is echoed.. and script is terminated. The output file is generated but it is only 4.5MB (it should be around 17 MB) and not complete... and sometime I get the following output..
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers built on Sep 10 2012 00:38:24 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52) configuration: --prefix=/home/one01qsc/local --extra-cflags='-L/home/one01qsc/local/lib/ -I /home/one01qsc/local/include/' --extra-ldflags='-L/home/one01qsc/local/lib/ -Wl,-rpath,/home/one01qsc/local/lib/' --enable-libmp3lame --enable-libvorbis --enable-shared --disable-yasm --enable-libtheora --enable-libx264 --enable-gpl
libavutil 51. 54.100 / 51. 54.100
libavcodec 54. 23.100 / 54. 23.100
libavformat 54. 6.100 / 54. 6.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 77.100 / 2. 77.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/one01qsc/public_html/temp/pending/1455-testing-mobidick.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2012-09-08 16:00:41
Duration: 00:00:23.13, start: 0.490000, bitrate: 6028 kb/s
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 5331 kb/s, 29.97 fps, 29.97 tbr, 60k tbn, 59.94 tbc
Metadata:
creation_time : 2012-09-08 16:00:41
handler_name : Apple Alias Data Handler
Stream #0:1: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 192 kb/s
Metadata:
creation_time : 2012-09-08 16:00:41
handler_name : Apple Alias Data Handler
[buffer @ 0x2405ce0] w:1920 h:1080 pixfmt:yuv420p tb:1/60000 sar:0/1 sws_param:flags=2
[buffersink @ 0x2429ec0] No opaque field provided
[aformat @ 0x23fa560] auto-inserting filter 'auto-inserted resampler 0' between the filter 'src' and the filter 'aformat'
[aresample @ 0x2402e60] chl:stereo fmt:s16 r:44100Hz -> chl:stereo fmt:flt r:22050Hz
[libx264 @ 0x24288e0] using cpu capabilities: none!
[libx264 @ 0x24288e0] profile High, level 4.0
[libx264 @ 0x24288e0] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=24 lookahead_threads=4 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/home/one01qsc/public_html/temp/1455-testing-mobidick.mp4':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2012-09-08 16:00:41
encoder : Lavf54.6.100
Stream #0:0: Video: h264 (![0][0][0] / 0x0021), yuv420p, 1920x1080, q=-1--1, 30k tbn, 29.97 tbc
Metadata:
creation_time : 2012-09-08 16:00:41
handler_name : Apple Alias Data Handler
Stream #0:1: Audio: aac (@[0][0][0] / 0x0040), 22050 Hz, stereo, flt, 128 kb/s
Metadata:
creation_time : 2012-09-08 16:00:41
handler_name : Apple Alias Data Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (aac -> aac)
Press [q] to stop, [?] for help
frame= 18 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/sthe value printed for $status is 137 in this case.
Any help is really appreciated.