]> git.sesse.net Git - ffmpeg/commitdiff
avformat/flvenc: add no_sequence_end flags for flvflags
authorSteven Liu <lingjiujianke@gmail.com>
Wed, 14 Sep 2016 02:00:52 +0000 (10:00 +0800)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 14 Sep 2016 13:50:07 +0000 (15:50 +0200)
when split flv file by flv format at first, and cat flvs file
into one flv file, the flv sequence end is be used,
then the whole flv have many flv sequence end TAG.
this flags can give user an option to ignore write sequence end TAG

Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavformat/flvenc.c

index 9080f58813f22584a60674413a5444ec3576a10a..99903f5525fec13d41a8c70dd1426330ac878c8a 100644 (file)
@@ -63,6 +63,7 @@ static const AVCodecTag flv_audio_codec_ids[] = {
 
 typedef enum {
     FLV_AAC_SEQ_HEADER_DETECT = (1 << 0),
+    FLV_NO_SEQUENCE_END = (1 << 1),
 } FLVFlags;
 
 typedef struct FLVContext {
@@ -527,13 +528,17 @@ static int flv_write_trailer(AVFormatContext *s)
     FLVContext *flv = s->priv_data;
     int i;
 
-    /* Add EOS tag */
-    for (i = 0; i < s->nb_streams; i++) {
-        AVCodecParameters *par = s->streams[i]->codecpar;
-        FLVStreamContext *sc = s->streams[i]->priv_data;
-        if (par->codec_type == AVMEDIA_TYPE_VIDEO &&
-                (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4))
-            put_avc_eos_tag(pb, sc->last_ts);
+    if (flv->flags & FLV_NO_SEQUENCE_END) {
+        av_log(s, AV_LOG_DEBUG, "FLV no sequence end mode open\n");
+    } else {
+        /* Add EOS tag */
+        for (i = 0; i < s->nb_streams; i++) {
+            AVCodecParameters *par = s->streams[i]->codecpar;
+            FLVStreamContext *sc = s->streams[i]->priv_data;
+            if (par->codec_type == AVMEDIA_TYPE_VIDEO &&
+                    (par->codec_id == AV_CODEC_ID_H264 || par->codec_id == AV_CODEC_ID_MPEG4))
+                put_avc_eos_tag(pb, sc->last_ts);
+        }
     }
 
     file_size = avio_tell(pb);
@@ -723,6 +728,7 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
 static const AVOption options[] = {
     { "flvflags", "FLV muxer flags", offsetof(FLVContext, flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" },
     { "aac_seq_header_detect", "Put AAC sequence header based on stream data", 0, AV_OPT_TYPE_CONST, {.i64 = FLV_AAC_SEQ_HEADER_DETECT}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" },
+    { "no_sequence_end", "disable sequence end for FLV", 0, AV_OPT_TYPE_CONST, {.i64 = FLV_NO_SEQUENCE_END}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "flvflags" },
     { NULL },
 };