[FFmpeg-cvslog] dashenc: calculate stream bitrate from first segment if not available

Peter Große git at videolan.org
Tue Sep 26 20:31:16 EEST 2017


ffmpeg | branch: master | Peter Große <pegro at friiks.de> | Mon Jan 30 13:49:44 2017 +0100| [9df9309d233f59d9706444a1e24ac24139f2640d] | committer: Martin Storsjö

dashenc: calculate stream bitrate from first segment if not available

Bandwidth information is required in the manifest, but not always
provided by the demuxer. In that case calculate the bandwith based
on the size and duration of the first segment.

Signed-off-by: Peter Große <pegro at friiks.de>
Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9df9309d233f59d9706444a1e24ac24139f2640d
---

 libavformat/dashenc.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 98722cd24e..21acb9006c 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -834,6 +834,16 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
             if (ret < 0)
                 break;
         }
+
+        if (!os->bit_rate) {
+            // calculate average bitrate of first segment
+            int64_t bitrate = (int64_t) range_length * 8 * AV_TIME_BASE / (os->max_pts - os->start_pts);
+            if (bitrate >= 0) {
+                os->bit_rate = bitrate;
+                snprintf(os->bandwidth_str, sizeof(os->bandwidth_str),
+                     " bandwidth=\"%d\"", os->bit_rate);
+            }
+        }
         add_segment(os, filename, os->start_pts, os->max_pts - os->start_pts, start_pos, range_length, index_length);
         av_log(s, AV_LOG_VERBOSE, "Representation %d media segment %d written to: %s\n", i, os->segment_index, full_path);
     }



More information about the ffmpeg-cvslog mailing list