[FFmpeg-devel] [PATCH 1/4] ffmpeg: re-copy codec parameters after encoding

Jon Toohill jtoohill at google.com
Wed Sep 28 21:29:00 EEST 2016


This preserves changes to fields of AVCodecParameters that
get updated during encoding, such as trailing_padding
(which may not be known until encoding is complete).
---
 ffmpeg.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/ffmpeg.c b/ffmpeg.c
index d0f247e..0cdc762 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -4255,6 +4255,21 @@ static int transcode(void)
 
     term_exit();
 
+    /* update output codec parameters after encoding */
+    for (i = 0; i < nb_output_streams; i++) {
+        ost = output_streams[i];
+        if (ost->encoding_needed) {
+            ret = avcodec_parameters_from_context(
+                output_files[ost->file_index]->ctx->streams[ost->index]->codecpar,
+                ost->enc_ctx);
+            if (ret < 0) {
+                av_log(ost, AV_LOG_ERROR, "Error copying final codec context: %s\n", av_err2str(ret));
+                if (exit_on_error)
+                    exit_program(1);
+            }
+        }
+    }
+
     /* write the trailer if needed and close file */
     for (i = 0; i < nb_output_files; i++) {
         os = output_files[i]->ctx;
-- 
2.8.0.rc3.226.g39d4020



More information about the ffmpeg-devel mailing list