> From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> on behalf of Soft Works 
> <softwo...@hotmail.com>
> Sent: Tuesday, July 19, 2016 3:33 AM
> To: FFmpeg development discussions and patches
> Subject: [FFmpeg-devel] [PATCH] avformat/matroskaenc: Write duration early 
> during mkv_write_header (Rev #3)
> 
> From 7d6d6a7775fef707ea1e8e705acc3362f20b6b89 Mon Sep 17 00:00:00 2001
>  From: softworkz <softwo...@hotmail.com>
>  Date: Sun, 17 Jul 2016 04:19:41 +0200
>  Subject: [PATCH] avformat/matroskaenc: Write duration early during 
> mkv_write_header (Rev #3)
> 
>  Rev #2: Fixes doubled header writing, checked FATE running without errors
>  Rev #3: Fixed coding style
> 
>  This commit addresses the following scenario:
> 
>  we are using ffmpeg to transcode or remux mkv (or something else) to mkv. 
> The result is being streamed on-the-fly to an HTML5 clie> nt (> streaming 
> starts while ffmpeg is still running). The problem here is that the client is 
> unable to detect the duration because the > duration is only written to the 
> mkv at the end of > the transcoding/remoxing process. In matroskaenc.c, the 
> duration is only written>  during > mkv_write_trailer but not during 
> mkv_write_header.> 
> 
>  The approach:
> 
>  FFMPEG is currently putting quite some effort to estimate the durations of 
> source streams, but in many cases the source stream durati> ons > are still 
> left at 0 and these durations are nowhere mapped to or used for output 
> streams. As much as I would have liked to deduct o> r > estimate output 
> durations based on input stream durations - I realized that this is a hard 
> task (as Nicolas already mentioned in a > previous conversation). It would 
> involve changes to the duration ca> lculation/estimation/deduction for input 
> streams and propagating>  these > durations to output streams or the output 
> context in a correct way.> 
>  So I looked for a simple and small solution with better chances to > get 
> accepted. In webmdashenc.c I found that > a duration is writte> n > during 
> write_header and this duration is taken from the streams' me> tadata, so I 
> decided for a similar approach.> 
> 
>  And here's what it does:
> 
>  At first it is checking the duration of the AVFormatContext. In typical 
> cases th> is value is not set, but: It is set in cases where the > user has 
> specified a recording_time or an end_time via the -t or -to parameters.> 
>  Then it is looking for a DURATION metadata field in the metadata of the 
> output c> ontext (AV> FormatContext::metadata). This would only exi> st > in 
> case the user has explicitly specified a metadata DURATION value from the 
> com> mand line.> 
>  Then it is iterating all streams > looking for a "DURATION" metadata (this 
> works u> nless the > option "-map_metadata -1" has been specified) > and 
> determines the maximum value.> 
>  The precendence is as follows: 1.>  Use durat> ion of AVFormatContext - 2. 
> Use explicitly specified metadata duration value - 3. Use maximum (> mapped) 
> metadata duration over al> l streams.> 
> 

Hi, 

I wanted to kindly ask if there are any objections regarding this patch and if 
I could/should do anything else to get this merged?

Thank you very much,

softworkz
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to