
Recherche avancée
Médias (91)
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#4 Emo Creates
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#2 Typewriter Dance
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#1 The Wires
11 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
ED-ME-5 1-DVD
11 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (72)
-
Qu’est ce qu’un éditorial
21 juin 2013, parEcrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
Vous pouvez personnaliser le formulaire de création d’un éditorial.
Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...) -
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 ;
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
Sur d’autres sites (15193)
-
"moov atom not found" when using av_interleaved_write_frame but not avio_write
9 octobre 2017, par icStaticI am attempting to put together a class that can take arbitrary frames and construct a video from it using the ffmpeg 3.3.3 API. I’ve been struggling to find a good example for this as the examples still seem to be using deprecated functions, so I’ve attempted to patch this using the documentation in the headers and by referring to a few github repos that seem to be using the new version.
If I use av_interleaved_write_frame to write the encoded packets to the output then ffprobe outputs the following :
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000002760120] moov atom not found0
X:\Diagnostics.mp4: Invalid data found when processing inputffplay is unable to play the file generated using this method.
If I instead swap it out for a call to avio_write, ffprobe instead outputs :
Input #0, h264, from 'X:\Diagnostics.mp4':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 672x380 [SAR 1:1 DAR 168:95], 25 fps, 25 tbr, 1200k tbn, 50 tbcffplay can mostly play this file until it gets towards the end, when it outputs :
Input #0, h264, from 'X:\Diagnostics.mp4': 0KB sq= 0B f=0/0
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 672x380 [SAR 1:1 DAR 168:95], 25 fps, 25 tbr, 1200k tbn, 50 tbc
[h264 @ 000000000254ef80] error while decoding MB 31 22, bytestream -65
[h264 @ 000000000254ef80] concealing 102 DC, 102 AC, 102 MV errors in I frame
nan M-V: nan fd= 1 aq= 0KB vq= 0KB sq= 0B f=0/0VLC cannot play files from either method. The second method’s file displays a single black frame then hides the video output. The first does not display anything. Neither of them give a video duration.
Does anyone have any ideas what’s happening here ? I assume my solution is close to working as I’m getting a good chunk of valid frames coming through.
Code :
void main()
{
OutputStream Stream( "Output.mp4", 672, 380, 25, true );
Stream.Initialize();
int i = 100;
while( i-- )
{
//... Generate a frame
Stream.WriteFrame( Frame );
}
Stream.CloseFile();
}
OutputStream::OutputStream( const std::string& Path, unsigned int Width, unsigned int Height, int Framerate, bool IsBGR )
: Stream()
, FrameIndex( 0 )
{
auto& ID = *m_InternalData;
ID.Path = Path;
ID.Width = Width;
ID.Height= Height;
ID.Framerate.num = Framerate;
ID.Framerate.den = 1;
ID.PixelFormat = IsBGR ? AV_PIX_FMT_BGR24 : AV_PIX_FMT_RGB24;
ID.CodecID = AV_CODEC_ID_H264;
ID.CodecTag = 0;
ID.AspectRatio.num = 1;
ID.AspectRatio.den = 1;
}
CameraStreamError OutputStream::Initialize()
{
av_log_set_callback( &InputStream::LogCallback );
av_register_all();
avformat_network_init();
auto& ID = *m_InternalData;
av_init_packet( &ID.Packet );
int Result = avformat_alloc_output_context2( &ID.FormatContext, nullptr, nullptr, ID.Path.c_str() );
if( Result < 0 || !ID.FormatContext )
{
STREAM_ERROR( UnknownError );
}
AVCodec* Encoder = avcodec_find_encoder( ID.CodecID );
if( !Encoder )
{
STREAM_ERROR( NoH264Support );
}
AVStream* OutStream = avformat_new_stream( ID.FormatContext, Encoder );
if( !OutStream )
{
STREAM_ERROR( UnknownError );
}
ID.CodecContext = avcodec_alloc_context3( Encoder );
if( !ID.CodecContext )
{
STREAM_ERROR( NoH264Support );
}
ID.CodecContext->time_base = av_inv_q(ID.Framerate);
{
AVCodecParameters* CodecParams = OutStream->codecpar;
CodecParams->width = ID.Width;
CodecParams->height = ID.Height;
CodecParams->format = AV_PIX_FMT_YUV420P;
CodecParams->codec_id = ID.CodecID;
CodecParams->codec_type = AVMEDIA_TYPE_VIDEO;
CodecParams->profile = FF_PROFILE_H264_MAIN;
CodecParams->level = 40;
Result = avcodec_parameters_to_context( ID.CodecContext, CodecParams );
if( Result < 0 )
{
STREAM_ERROR( EncoderCreationError );
}
}
if( ID.IsVideo )
{
ID.CodecContext->width = ID.Width;
ID.CodecContext->height = ID.Height;
ID.CodecContext->sample_aspect_ratio = ID.AspectRatio;
ID.CodecContext->time_base = av_inv_q(ID.Framerate);
if( Encoder->pix_fmts )
{
ID.CodecContext->pix_fmt = Encoder->pix_fmts[0];
}
else
{
ID.CodecContext->pix_fmt = ID.PixelFormat;
}
}
//Snip
Result = avcodec_open2( ID.CodecContext, Encoder, nullptr );
if( Result < 0 )
{
STREAM_ERROR( EncoderCreationError );
}
Result = avcodec_parameters_from_context( OutStream->codecpar, ID.CodecContext );
if( Result < 0 )
{
STREAM_ERROR( EncoderCreationError );
}
if( ID.FormatContext->oformat->flags & AVFMT_GLOBALHEADER )
{
ID.CodecContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}
OutStream->time_base = ID.CodecContext->time_base;
OutStream->avg_frame_rate= av_inv_q(OutStream->time_base);
if( !( ID.FormatContext->oformat->flags & AVFMT_NOFILE ) )
{
Result = avio_open( &ID.FormatContext->pb, ID.Path.c_str(), AVIO_FLAG_WRITE );
if( Result < 0 )
{
STREAM_ERROR( FileNotWriteable );
}
}
Result = avformat_write_header( ID.FormatContext, nullptr );
if( Result < 0 )
{
STREAM_ERROR( WriteFailed );
}
ID.Output = std::make_unique( ID.CodecContext->width, ID.CodecContext->height, ID.CodecContext->pix_fmt );
ID.ConversionContext = sws_getCachedContext(
ID.ConversionContext,
ID.Width,
ID.Height,
ID.PixelFormat,
ID.CodecContext->width,
ID.CodecContext->height,
ID.CodecContext->pix_fmt,
SWS_BICUBIC,
NULL,
NULL,
NULL );
return CameraStreamError::Success;
}
CameraStreamError OutputStream::WriteFrame( FFMPEG::Frame* Frame )
{
auto& ID = *m_InternalData;
ID.Output->Prepare();
int OutputSliceSize = sws_scale( m_InternalData->ConversionContext, Frame->GetFrame()->data, Frame->GetFrame()->linesize, 0, Frame->GetHeight(), ID.Output->GetFrame()->data, ID.Output->GetFrame()->linesize );
ID.Output->GetFrame()->pts = ID.CodecContext->frame_number;
int Result = avcodec_send_frame( GetData().CodecContext, ID.Output->GetFrame() );
if( Result == AVERROR(EAGAIN) )
{
CameraStreamError ResultErr = SendAll();
if( ResultErr != CameraStreamError::Success )
{
return ResultErr;
}
Result = avcodec_send_frame( GetData().CodecContext, ID.Output->GetFrame() );
}
if( Result == 0 )
{
CameraStreamError ResultErr = SendAll();
if( ResultErr != CameraStreamError::Success )
{
return ResultErr;
}
}
FrameIndex++;
return CameraStreamError::Success;
}
CameraStreamError OutputStream::SendAll( void )
{
auto& ID = *m_InternalData;
int Result;
do
{
AVPacket TempPacket = {};
av_init_packet( &TempPacket );
Result = avcodec_receive_packet( GetData().CodecContext, &TempPacket );
if( Result == 0 )
{
av_packet_rescale_ts( &TempPacket, ID.CodecContext->time_base, ID.FormatContext->streams[0]->time_base );
TempPacket.stream_index = ID.FormatContext->streams[0]->index;
//avio_write( ID.FormatContext->pb, TempPacket.data, TempPacket.size );
Result = av_interleaved_write_frame( ID.FormatContext, &TempPacket );
if( Result < 0 )
{
STREAM_ERROR( WriteFailed );
}
av_packet_unref( &TempPacket );
}
else if( Result != AVERROR(EAGAIN) )
{
continue;
}
else if( Result != AVERROR_EOF )
{
break;
}
else if( Result < 0 )
{
STREAM_ERROR( WriteFailed );
}
} while ( Result == 0);
return CameraStreamError::Success;
}
CameraStreamError OutputStream::CloseFile()
{
auto& ID = *m_InternalData;
while( true )
{
//Flush
int Result = avcodec_send_frame( ID.CodecContext, nullptr );
if( Result == 0 )
{
CameraStreamError StrError = SendAll();
if( StrError != CameraStreamError::Success )
{
return StrError;
}
}
else if( Result == AVERROR_EOF )
{
break;
}
else
{
STREAM_ERROR( WriteFailed );
}
}
int Result = av_write_trailer( ID.FormatContext );
if( Result < 0 )
{
STREAM_ERROR( WriteFailed );
}
if( !(ID.FormatContext->oformat->flags& AVFMT_NOFILE) )
{
Result = avio_close( ID.FormatContext->pb );
if( Result < 0 )
{
STREAM_ERROR( WriteFailed );
}
}
return CameraStreamError::Success;
}Note I’ve simplified a few things and inlined a few bits that were elsewhere. I’ve also removed all the shutdown code as anything that happens after the file is closed is irrelevant.
Full repo here : https://github.com/IanNorris/Witness If you clone this the issue is with the ’Diagnostics’ output, the Output file is fine. There are two hardcoded paths to X :.
-
avformat/dashenc : Set VP9 codec string with profile, level and bitdepth
23 avril 2018, par Karthick Jeyapal -
ffmpeg says : "option framerate not found"
29 novembre 2018, par JasonGood afternoon.
I’ve been trying to use ffmpeg to split a .mpeg into a sequence of .jpeg images. Please note that this is the inverse problem of the one specified here, but the problem I’m facing is not the same as the problem the author of that thread is facing.
Specifically, I have tried all the following mpeg codecs available in my ffmpeg installation :
DEV D ffv1 FFmpeg video codec #1
DEVSD ffvhuff Huffyuv FFmpeg variant
DEVSDT mpeg1video MPEG-1 video
D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
D V D mpeg2_crystalhd MPEG-2 Video (CrystalHD acceleration)
DEVSDT mpeg2video MPEG-2 video
DEVSDT mpeg4 MPEG-4 part 2
D V D mpeg4_crystalhd MPEG-4 Part 2 (CrystalHD acceleration)
D V DT mpeg4_vdpau MPEG-4 part 2 (VDPAU)
D VSDT mpegvideo MPEG-1 video
D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
D VSDT mpegvideo_xvmc MPEG-1/2 video XvMC (X-Video Motion Compensation)
DEVSD msmpeg4 MPEG-4 part 2 Microsoft variant version 3
D V D msmpeg4_crystalhd MPEG-4 Part 2 Microsoft variant version 3 (CrystalHD acceleration)
D VSD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1
DEVSD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2I’ve tried supplying ffmpeg with all different codecs to try to split an input .mpeg video file with 2548 frames into 2548 .jpegs, by using the -vcodec option :
ffmpeg -r 2548 -i frames.mpeg frames_%06d.jpg -vcodec $codec
where
$codec
is any codec among the ones listed above, e.g.ffv1
,mpeg4
, etc. However, all my efforts result in the following error :[NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
[NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
[NULL @ 0x1948f20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
[NULL @ 0x1948f20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
[NULL @ 0x1948f20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of range
[NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of range
[NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
Option framerate not found.Which is weird, because I’ve actually specified the frame rate parameter through the -r switch. I googled a bit and it appears that this error was mentioned approximately a year and a half ago on the ffmpeg bug tracker but that information makes little sense to me because it’s relevant to the devs. Curiously, if I interchange the position of the parameters and put -r after -i or even after -vcodec, the error message changes to :
[NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
[NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
[NULL @ 0x24abf20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
[NULL @ 0x24abf20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
[NULL @ 0x24abf20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of range
[NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of range
[NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
[NULL @ 0x24b23c0] Value 4686111960511545344.000000 for parameter 'b' out of range
[NULL @ 0x24b23c0] Value 4683532506232782848.000000 for parameter 'ab' out of range
[NULL @ 0x24b23c0] Value 4705844345939427328.000000 for parameter 'bt' out of range
[NULL @ 0x24b23c0] Value 4617315517961601024.000000 for parameter 'me_method' out of range
[NULL @ 0x24b23c0] Value 4622945017495814144.000000 for parameter 'g' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'qmin' out of range
[NULL @ 0x24b23c0] Value 4629418941960159232.000000 for parameter 'qmax' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'qdiff' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'wpredp' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bug' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'er' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'ec' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'ildctcmp' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'subq' out of range
[NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'ibias' out of range
[NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'pbias' out of range
[NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'lmin' out of range
[NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'lmax' out of range
[NULL @ 0x24b23c0] Value 4696130710463840256.000000 for parameter 'flags2' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'threads' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'nssew' out of range
[NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'profile' out of range
[NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'level' out of range
[NULL @ 0x24b23c0] Value 4623507967449235456.000000 for parameter 'skipcmp' out of range
[NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'mblmin' out of range
[NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'mblmax' out of range
[NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mepc' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bidir_refine' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'cqp' out of range
[NULL @ 0x24b23c0] Value 4627730092099895296.000000 for parameter 'keyint_min' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'refs' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'directpred' out of range
[NULL @ 0x24b23c0] Value 4618441417868443648.000000 for parameter 'sc_factor' out of range
[NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mv0_threshold' out of range
[NULL @ 0x24b23c0] Value 4630826316843712512.000000 for parameter 'b_sensitivity' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'compression_level' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_prediction_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_prediction_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'prediction_order_method' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_partition_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_partition_order' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'ticks_per_frame' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_primaries' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_trc' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'colorspace' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'aq_mode' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'rc_lookahead' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_type' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_passes' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'thread_type' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'request_sample_fmt' out of range
frames.mpeg: could not find codec parametersI’m at a loss as to what to do with this problem, and am looking for some assistance.
Kind regards,
Jason