2017.03.25. 14:15 keltezéssel, Steven Liu írta:
refer to SPEC:
Annex E. The FLV File Format said:
E.3 TheFLVFileBody have a table:
Field            Type    Comment
PreviousTagSize0 UI32    Always 0

Signed-off-by: Steven Liu <l...@chinaffmpeg.org>
---
  libavformat/flvdec.c | 12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index cdcfb9c..94c9e28 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -709,6 +709,7 @@ static int flv_read_header(AVFormatContext *s)
      int flags;
      FLVContext *flv = s->priv_data;
      int offset;
+    int pre_tag_size = 0;
avio_skip(s->pb, 4);
      flags = avio_r8(s->pb);
@@ -719,7 +720,16 @@ static int flv_read_header(AVFormatContext *s)
offset = avio_rb32(s->pb);
      avio_seek(s->pb, offset, SEEK_SET);
-    avio_skip(s->pb, 4);
+
+    /* Annex E. The FLV File Format
+     * E.3 TheFLVFileBody
+     *     Field               Type    Comment
+     *     PreviousTagSize0    UI32    Always 0
+     * */
+    pre_tag_size = avio_rb32(s->pb);
+    if (pre_tag_size) {
+        av_log(s, AV_LOG_WARNING, "Read FLV header error, input file is not a 
standard flv format, first PreviousTagSize0 always is 0\n");
+    }
s->start_time = 0;
      flv->sum_flv_tag_size = 0;
I think this forgiving behaviour is better, than the earlier rigorous one. I agree that showing warning is more useful than returning error and stopping execution because if

PreviousTagSize0 is not zero that causes no harm.

bb

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

Reply via email to