
Recherche avancée
Autres articles (85)
-
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 (13643)
-
Anomalie #2934 (Nouveau) : liste a puce -* provoque une erreur 500
29 janvier 2013, par fred rauzyBonjour, Spip3 telechargé en decembre 2012 pluging intallé activé : couteau suisse : belle puce, correction typographique. Bon alors cela concerne que ma page sommaire, mais quand des puces -* sont mis dans le texte j’ai une erreur 500 qui se produit. et je comprend pas mais si dans le texte (...)
-
FFmpeg not honoring bitrate for different containers ?
19 mars 2013, par Haleeq UsmanI am attempting to encode a mp4 video file into a flv video. Here is what I am doing :
#include
#include
#include
#include
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#define STREAM_FRAME_RATE 30 /* 30 images/s */
#define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */
/**************************************************************/
/* Add an output stream. */
static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec,
enum AVCodecID codec_id) {
AVCodecContext *c;
AVStream *st;
/* find the encoder */
*codec = avcodec_find_encoder(codec_id);
if (!(*codec)) {
fprintf(stderr, "Could not find encoder for '%s'\n",
avcodec_get_name(codec_id));
exit(1);
}
st = avformat_new_stream(oc, *codec);
if (!st) {
fprintf(stderr, "Could not allocate stream\n");
exit(1);
}
st->id = oc->nb_streams - 1;
c = st->codec;
switch ((*codec)->type) {
case AVMEDIA_TYPE_VIDEO:
//avcodec_get_context_defaults3(c, *codec);
c->codec_id = codec_id;
c->bit_rate = 150 * 1000; //2314000;;
//c->rc_max_rate = 150*1000;
//c->rc_buffer_size = 150*1000;
/* Resolution must be a multiple of two. */
c->width = 1280;
c->height = 720;
/* timebase: This is the fundamental unit of time (in seconds) in terms
* of which frame timestamps are represented. For fixed-fps content,
* timebase should be 1/framerate and timestamp increments should be
* identical to 1. */
c->time_base.den = STREAM_FRAME_RATE;
c->time_base.num = 1;
c->gop_size = 12; /* emit one intra frame every twelve frames at most */
c->pix_fmt = STREAM_PIX_FMT;
if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
/* just for testing, we also add B frames */
c->max_b_frames = 2;
}
if (c->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
/* Needed to avoid using macroblocks in which some coeffs overflow.
* This does not happen with normal video, it just happens here as
* the motion of the chroma plane does not match the luma plane. */
c->mb_decision = 2;
}
break;
default:
break;
}
/* Some formats want stream headers to be separate. */
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
return st;
}
/**************************************************************/
/* video output */
static AVFrame *frame;
static AVPicture src_picture, dst_picture;
static int frame_count;
static void open_video(AVFormatContext *oc, AVCodec *codec, AVStream *st) {
int ret;
AVCodecContext *c = st->codec;
/* open the codec */
ret = avcodec_open2(c, codec, NULL);
if (ret < 0) {
fprintf(stderr, "Could not open video codec: %s\n", av_err2str(ret));
exit(1);
}
/* allocate and init a re-usable frame */
frame = avcodec_alloc_frame();
if (!frame) {
fprintf(stderr, "Could not allocate video frame\n");
exit(1);
}
/* Allocate the encoded raw picture. */
ret = avpicture_alloc(&dst_picture, c->pix_fmt, c->width, c->height);
if (ret < 0) {
fprintf(stderr, "Could not allocate picture: %s\n", av_err2str(ret));
exit(1);
}
/* If the output format is not YUV420P, then a temporary YUV420P
* picture is needed too. It is then converted to the required
* output format. */
if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
ret = avpicture_alloc(&src_picture, AV_PIX_FMT_YUV420P, c->width,
c->height);
if (ret < 0) {
fprintf(stderr, "Could not allocate temporary picture: %s\n",
av_err2str(ret));
exit(1);
}
}
/* copy data and linesize picture pointers to frame */
*((AVPicture *) frame) = dst_picture;
}
static void close_video(AVFormatContext *oc, AVStream *st) {
avcodec_close(st->codec);
av_free(src_picture.data[0]);
av_free(dst_picture.data[0]);
av_free(frame);
}
int main(int argc, char *argv[]) {
AVFormatContext *pFormatCtx = NULL;
int i, videoStream;
AVCodecContext *pCodecCtx = NULL;
AVCodec *pCodec;
AVFrame *pFrame;
AVPacket packet;
int frameFinished;
const char *filename;
AVOutputFormat *fmt;
AVFormatContext *oc;
AVStream *video_st;
AVCodec *video_codec;
int ret;
// Register all formats, codecs and network
av_register_all();
avcodec_register_all();
avformat_network_init();
// Open video file
if (avformat_open_input(&pFormatCtx, "input_file.mp4", NULL, NULL) != 0)
return -1; // Couldn't open file
// Retrieve stream information
if (avformat_find_stream_info(pFormatCtx, NULL) < 0)
return -1; // Couldn't find stream information
// Dump information about file onto standard error
av_dump_format(pFormatCtx, 0, "input_file.mp4", 0);
// Find the first video stream
videoStream = -1;
for (i = 0; i < pFormatCtx->nb_streams; i++)
if (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
videoStream = i;
break;
}
if (videoStream == -1)
return -1; // Didn't find a video stream
// Get a pointer to the codec context for the video stream
pCodecCtx = pFormatCtx->streams[videoStream]->codec;
// Find the decoder for the video stream
pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
if (pCodec == NULL) {
fprintf(stderr, "Unsupported codec!\n");
return -1; // Codec not found
}
// Open codec
if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0)
return -1; // Could not open codec
// Allocate video frame
pFrame = avcodec_alloc_frame();
// setup mux
filename = "output_file.flv";
fmt = av_guess_format("flv", filename, NULL);
if (fmt == NULL) {
printf("Could not guess format.\n");
return -1;
}
// allocate the output media context
oc = avformat_alloc_context();
if (oc == NULL) {
printf("could not allocate context.\n");
return -1;
}
oc->oformat = fmt;
// Add the video streams using the default format codecs
// and initialize the codecs.
video_st = NULL;
if (fmt->video_codec != AV_CODEC_ID_NONE) {
video_st = add_stream(oc, &video_codec, fmt->video_codec);
}
// Now that all the parameters are set, we can open the
// video codec and allocate the necessary encode buffers.
if (video_st)
open_video(oc, video_codec, video_st);
/* open the output file, if needed */
if (!(fmt->flags & AVFMT_NOFILE)) {
ret = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE);
if (ret < 0) {
fprintf(stderr, "Could not open '%s': %s\n", filename,
av_err2str(ret));
return 1;
}
}
// dump output format
av_dump_format(oc, 0, filename, 1);
// Write the stream header, if any.
ret = avformat_write_header(oc, NULL);
if (ret < 0) {
fprintf(stderr, "Error occurred when opening output file: %s\n",
av_err2str(ret));
return 1;
}
// Read frames, decode, and re-encode
while (av_read_frame(pFormatCtx, &packet) >= 0) {
// Is this a packet from the video stream?
if (packet.stream_index == videoStream) {
// Decode video frame
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
// Did we get a video frame?
if (frameFinished) {
AVFrame* newFrame = avcodec_alloc_frame(); // Initialize a new frame
int size = avpicture_get_size(video_st->codec->pix_fmt,
video_st->codec->width, video_st->codec->height);
uint8_t* picture_buf = av_malloc(size);
avpicture_fill((AVPicture *) newFrame, picture_buf,
video_st->codec->pix_fmt, video_st->codec->width,
video_st->codec->height);
// Copy only the frame content without any other disturbing
av_picture_copy((AVPicture*) newFrame, (AVPicture*) pFrame,
video_st->codec->pix_fmt, video_st->codec->width,
video_st->codec->height);
// encode the image
AVPacket pkt;
int got_output;
av_init_packet(&pkt);
pkt.data = NULL; // packet data will be allocated by the encoder
pkt.size = 0;
/* Setting newFrame->pts this way produces the error 'non-strictly-monotonic PTS' */
//if(newFrame->pts != AV_NOPTS_VALUE)
//newFrame->pts = av_rescale_q(newFrame->pts, video_st->time_base, video_st->codec->time_base);
// Setting newFrame->pts this does not produce 'non-strictly-monotonic PTS'
newFrame->pts = frame_count;
ret = avcodec_encode_video2(video_st->codec, &pkt, newFrame, &got_output);
if (ret < 0) {
fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
exit(1);
}
if (got_output) {
if (video_st->codec->coded_frame->key_frame)
pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index = video_st->index;
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(pkt.pts,
video_st->codec->time_base,
video_st->time_base);
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts = av_rescale_q(pkt.dts,
video_st->codec->time_base,
video_st->time_base);
// Write the compressed frame to the media file.
ret = av_interleaved_write_frame(oc, &pkt);
} else {
ret = 0;
}
if (ret != 0) {
fprintf(stderr, "Error while writing video frame: %s\n",
av_err2str(ret));
exit(1);
}
fprintf(stderr, "encoded frame #%d\n", frame_count);
frame_count++;
av_free(picture_buf);
av_free_packet(&pkt);
}
}
// Free the packet that was allocated by av_read_frame
av_free_packet(&packet);
}
/* Write the trailer, if any. The trailer must be written before you
* close the CodecContexts open when you wrote the header; otherwise
* av_write_trailer() may try to use memory that was freed on
* av_codec_close(). */
av_write_trailer(oc);
/* Close video encoder (codec). */
if (video_st)
close_video(oc, video_st);
// Free the streams.
for (i = 0; i < oc->nb_streams; i++) {
av_freep(&oc->streams[i]->codec);
av_freep(&oc->streams[i]);
}
if (!(fmt->flags & AVFMT_NOFILE))
/* Close the output file. */
avio_close(oc->pb);
/* free the stream */
av_free(oc);
// Free the YUV frame holding decoded frame
av_free(pFrame);
// Close the decoder (codec)
avcodec_close(pCodecCtx);
// Close the input video file
avformat_close_input(&pFormatCtx);
return 0;
}If I change the output format to an mp4, mov, or f4v by changing :
// setup mux (FLV OUTPUT)
filename = "output_file.flv";
fmt = av_guess_format("flv", filename, NULL);
if (fmt == NULL) {
printf("Could not guess format.\n");
return -1;
}to
// setup mux (MP4 OUTPUT)
filename = "output_file.mp4";
fmt = av_guess_format("mp4", filename, NULL);
if (fmt == NULL) {
printf("Could not guess format.\n");
return -1;
}Then the bitrate is honored. Here is the output of running with a mp4 output
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_file.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
creation_time : 2010-02-09 19:11:10
Duration: 00:04:31.80, start: 0.000000, bitrate: 2314 kb/s
Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
Metadata:
creation_time : 2010-02-09 19:11:10
handler_name : (C) 2007 Google Inc. v08.13.2007.
Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2186 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc
Metadata:
creation_time : 2010-02-09 19:11:10
handler_name : (C) 2007 Google Inc. v08.13.2007.
[libx264 @ 02268b80] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 02268b80] profile High, level 3.1
[libx264 @ 02268b80] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=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 chro
ma_qp_offset=-2 threads=12 lookahead_threads=2 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=12 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=12 rc=abr mbtree=1 bitrate=150 ratetol=1.0 qco
mp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output_file.mp4':
Stream #0:0: Video: h264, yuv420p, 1280x720, q=-1--1, 150 kb/s, 90k tbn, 30 tbc
encoded frame #0
encoded frame #1
encoded frame #2
encoded frame #3
.
.
.
encoded frame #8142
encoded frame #8143
encoded frame #8144
encoded frame #8145
[libx264 @ 02174240] frame I:771 Avg QP:47.71 size: 2739
[libx264 @ 02174240] frame P:5083 Avg QP:50.05 size: 833
[libx264 @ 02174240] frame B:2264 Avg QP:48.16 size: 91
[libx264 @ 02174240] consecutive B-frames: 59.6% 6.4% 9.0% 24.9%
[libx264 @ 02174240] mb I I16..4: 34.0% 65.8% 0.2%
[libx264 @ 02174240] mb P I16..4: 6.8% 3.0% 0.0% P16..4: 8.5% 0.4% 1.7% 0.0% 0.0% skip:79.6%
[libx264 @ 02174240] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 1.8% 0.0% 0.0% direct: 0.0% skip:98.2% L0:23.6% L1:76.4% BI: 0.0%
[libx264 @ 02174240] final ratefactor: 57.62
[libx264 @ 02174240] 8x8 transform intra:52.1% inter:98.5%
[libx264 @ 02174240] coded y,uvDC,uvAC intra: 3.1% 14.0% 0.2% inter: 0.1% 0.4% 0.0%
[libx264 @ 02174240] i16 v,h,dc,p: 69% 23% 4% 4%
[libx264 @ 02174240] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 6% 68% 1% 1% 1% 1% 0% 0%
[libx264 @ 02174240] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 41% 18% 18% 4% 4% 5% 3% 3% 3%
[libx264 @ 02174240] i8c dc,h,v,p: 98% 1% 1% 0%
[libx264 @ 02174240] Weighted P-Frames: Y:2.1% UV:1.2%
[libx264 @ 02174240] ref P L0: 72.4% 0.8% 19.1% 7.6% 0.1%
[libx264 @ 02174240] ref B L0: 89.8% 9.1% 1.2%
[libx264 @ 02174240] ref B L1: 96.2% 3.8%
[libx264 @ 02174240] kb/s:193.62The final file size of output_file.mp4 is about 6.5MB and using ffplay, I notice that bitrate was honored. Of course the quality itself shows.
Here is the output of running with a flv output :
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_file.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isomavc1mp42
creation_time : 2010-02-09 19:11:10
Duration: 00:04:31.80, start: 0.000000, bitrate: 2314 kb/s
Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
Metadata:
creation_time : 2010-02-09 19:11:10
handler_name : (C) 2007 Google Inc. v08.13.2007.
Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2186 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc
Metadata:
creation_time : 2010-02-09 19:11:10
handler_name : (C) 2007 Google Inc. v08.13.2007.
Output #0, flv, to 'output_file.flv':
Stream #0:0: Video: flv1, yuv420p, 1280x720, q=2-31, 150 kb/s, 90k tbn, 30 tbc
encoded frame #0
encoded frame #1
encoded frame #2
encoded frame #3
.
.
.
encoded frame #8142
encoded frame #8143
encoded frame #8144
encoded frame #8145I noticed that the bitrate is honored as long as the container is a mp4, mov, f4v, or something similar. If I try flv, wmv, or other different containers, then the bitrate is not honored. Also, the bitrate that is automatically set for wmv is different from that of flv. I am not sure what I am doing wrong. I suspect it has to do with the pts, however, I cannot find a solution :(.
-
audio extracted from flv file via ffmpeg is of shorter duration than the actual flv video [closed]
11 janvier 2013, par user1961143I have extracted audio from flv file via ffmpeg using this command :-
ffmpeg -i 164_29.flv v19.mp3
The flv videos duration is 3 minutes but the audio is of 2 mins 20 seconds only. On searching i found that the silent pieces of audio are removed when generating audio from ffmpeg. But i need the audio file to be of exactly same duration as flv video as later i need to put this audio in the flv video itself. Please help as this is urgent for our project. I am running the FFMpeg via .net windows service, so in case you know any other tool which can extract the audio of same duration as video and can be run via .net, it would be useful too.
Console output :
C :\Users\ritika.thakur>ffmpeg -i 164_29.flv v19.mp3
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version —disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib —enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enale-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283
kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
Output #0, mp3, to 'v19.mp3' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
TSSE : Lavf54.37.100
Stream #0:0 : Audio : mp3, 22050 Hz, mono, fltp
Stream mapping :
Stream #0:1 -> #0:0 (nellymoser -> libmp3lame)
Press [q] to stop, [?] for help
size= 567kB time=00:03:04.13 bitrate= 25.2kbits/s video:0kB audio:567kB subtitle:0 global headers:0kB muxing overhead 0.051503%This is the output of console for both video and audio file separately :-
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.C :\Users\ritika.thakur>ffmpeg -i v19.mp3
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib
— enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-
amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -
enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
[mp3 @ 0056e780] max_analyze_duration 5000000 reached at 5015510
Input #0, mp3, from 'v19.mp3' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
encoder : Lavf54.37.100
Duration : 00:02:25.14, start : 0.000000, bitrate : 32 kb/s
Stream #0:0 : Audio : mp3, 22050 Hz, mono, s16, 32 kb/s
At least one output file must be specifiedC :\Users\ritika.thakur>ffmpeg -i 164_29.flv
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable-pthreads —enable-runtime-cpudetect —enable-avisynth —enable-bzlib
— enable-frei0r —enable-libass —enable-libopencore-amrnb —enable-libopencore-
amrwb —enable-libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut -enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger -
enable-libspeex —enable-libtheora —enable-libutvideo —enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx —enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283 kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
At least one output file must be specifiedIf you see the duration of video is of 3:04 but audio extracted from it is of 2:25 only.
Actually i am using ffmpeg overlay to show two videos side by side in our debate project for the client. Now ffmpeg takes audio from first video by default. But we want the audio from both videos together as a debate going on. Hence I thought of a solution to extract audio from both videos and merge them and than apply them to the overlayed video. This will all work perfectly only if I get the complete audio from the video file i.e. of equal duration.
For more information i am writing here the overlay command we are using :-**ffmpeg -i 164_29.flv -vf "[in] scale=359:320, pad=2*iw+6:ih
[left]; movie=164_30.flv, scale=359:320 [right]; [left][right]
overlay=365:0 [out]" -b:v 3600k -y a1.flv**
**This is the console output of this overlay command:-**C :\Users\ritika.thakur>ffmpeg -i 164_29.flv -vf "[in] scale=359:320, pad=2*iw+6
:ih [left] ; movie=164_30.flv, scale=359:320 [right] ; [left][right] overlay=365:0
[out]" -b:v 3600k -y a1.flv
ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 25 2012 12:23:20 with gcc 4.7.2 (GCC)
configuration : —disable-static —enable-shared —enable-gpl —enable-version3
—disable- pthreads —enable-runtime-cpudetect —enable- avisynth
—enable-bzlib —enable
-frei0r
—enable-libass —enable-libopencore-amrnb —enable-libopencore-amrwb
—enable- libfreetype —enable-libgsm —enable-libmp3lame —enable-libnut
—enable-libopenjpeg —enable-libopus —enable-librtmp —enable-libschroedinger
— enable-
libspeex —enable-libtheora —enable- libutvideo
—enable-libvo-aacenc —
enable-libvo-amrwbenc —enable-libvorbis —enable-libvpx
—enable-libx264 —enab
le-libxavs —enable-libxvid —enable-zlib
libavutil 52. 9.100 / 52. 9.100
libavcodec 54. 77.100 / 54. 77.100
libavformat 54. 37.100 / 54. 37.100
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 23.102 / 3. 23.102
libswscale 2. 1.102 / 2. 1.102
libswresample 0. 17.101 / 0. 17.101
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '164_29.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
Duration : 00:03:04.08, start : 0.000000, bitrate : 283 kb/s
Stream #0:0 : Video : flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1 : Audio : nellymoser, 22050 Hz, mono, flt
Output #0, flv, to 'a1.flv' :
Metadata :
canSeekToEnd : false
createdby : FMS 4.0
creationdate : Tue Jan 08 00:26:19 2013
encoder : Lavf54.37.100
Stream #0:0 : Video : flv1 ([2][0][0][0] / 0x0002), yuv420p, 724x320, q=2-31,
3600 kb/s, 1k tbn, 1k tbc
Stream #0:1 : Audio : mp3 ([2][0][0][0] / 0x0002), 22050 Hz, mono, fltp
Stream mapping :
Stream #0:0 -> #0:0 (flv -> flv)
Stream #0:1 -> #0:1 (nellymoser -> libmp3lame)
Press [q] to stop, [?] for help
frame= 83 fps=0.0 q=4.1 size= 343kB time=00:00:07.01 bitrate= 401.2kbits/s
frame= 149 fps=149 q=2.3 size= 861kB time=00:00:14.87 bitrate= 473.9kbits/s
frame= 223 fps=148 q=2.0 size= 1492kB time=00:00:22.00 bitrate= 555.4kbits/s
frame= 308 fps=153 q=2.0 size= 2195kB time=00:00:28.64 bitrate= 627.8kbits/s
frame= 391 fps=156 q=2.0 size= 2858kB time=00:00:34.06 bitrate= 687.4kbits/s
frame= 478 fps=159 q=2.0 size= 3541kB time=00:00:39.55 bitrate= 733.4kbits/s
frame= 547 fps=156 q=2.0 size= 4293kB time=00:00:46.80 bitrate= 751.5kbits/s
frame= 645 fps=161 q=2.0 size= 4896kB time=00:00:51.63 bitrate= 776.8kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 16 times
frame= 731 fps=162 q=2.0 size= 5418kB time=00:00:56.61 bitrate= 784.0kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 49 times
frame= 794 fps=158 q=2.0 size= 5802kB time=00:01:02.37 bitrate= 762.1kbits/s
frame= 886 fps=160 q=2.0 size= 6363kB time=00:01:07.00 bitrate= 778.0kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 29 times
frame= 954 fps=158 q=2.0 size= 6785kB time=00:01:13.31 bitrate= 758.2kbits/s
frame= 1056 fps=162 q=2.0 size= 7377kB time=00:01:16.94 bitrate= 785.4kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 30 times
frame= 1130 fps=161 q=2.0 size= 7789kB time=00:01:22.19 bitrate= 776.3kbits/s
frame= 1217 fps=162 q=2.0 size= 8372kB time=00:01:27.68 bitrate= 782.1kbits/s
frame= 1306 fps=163 q=2.0 size= 9074kB time=00:01:32.86 bitrate= 800.5kbits/s
frame= 1393 fps=163 q=1.6 size= 9700kB time=00:01:38.41 bitrate= 807.3kbits/s
frame= 1475 fps=163 q=2.0 size= 10278kB time=00:01:44.03 bitrate= 809.4kbits/s
frame= 1568 fps=164 q=2.0 size= 10825kB time=00:01:48.52 bitrate= 817.1kbits/s
frame= 1658 fps=165 q=2.0 size= 11439kB time=00:01:53.44 bitrate= 826.0kbits/s
frame= 1734 fps=165 q=2.0 size= 12027kB time=00:01:58.31 bitrate= 832.7kbits/s
frame= 1792 fps=162 q=2.0 size= 12579kB time=00:02:03.41 bitrate= 835.0kbits/s
frame= 1851 fps=160 q=2.0 size= 13284kB time=00:02:10.74 bitrate= 832.3kbits/s
frame= 1929 fps=160 q=2.0 size= 13922kB time=00:02:16.85 bitrate= 833.3kbits/s
frame= 2010 fps=160 q=2.0 size= 14652kB time=00:02:23.39 bitrate= 837.1kbits/s
frame= 2102 fps=161 q=2.0 size= 15329kB time=00:02:28.86 bitrate= 843.6kbits/s
frame= 2200 fps=162 q=2.0 size= 15963kB time=00:02:34.08 bitrate= 848.7kbits/s
frame= 2292 fps=163 q=2.0 size= 16554kB time=00:02:38.96 bitrate= 853.1kbits/s
frame= 2378 fps=163 q=2.0 size= 17157kB time=00:02:44.50 bitrate= 854.4kbits/s
frame= 2468 fps=164 q=2.0 size= 17826kB time=00:02:49.50 bitrate= 861.5kbits/s
frame= 2564 fps=165 q=2.0 size= 18489kB time=00:02:54.43 bitrate= 868.3kbits/s
Buffer queue overflow, dropping.
[Parsed_overlay_4 @ 0152ca80] Buffer queue overflow, dropping.
Last message repeated 15 times
frame= 2647 fps=165 q=2.0 size= 19079kB time=00:02:59.53 bitrate= 870.6kbits/s
frame= 2728 fps=165 q=2.0 Lsize= 19703kB time=00:03:04.13 bitrate= 876.6kbits/
s video:19006kB audio:567kB subtitle:0 global headers:0kB muxing overhead 0.663315%Everything is working fine except that we want audio from both videos playing together in final overlayed file. I would be highly grateful if you can help in this and let me know if its possible to do via ffmpeg or not.