summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorSteven Liu <lingjiujianke@gmail.com>2016-09-14 10:00:52 +0800
committerMichael Niedermayer <michael@niedermayer.cc>2016-09-14 15:50:07 +0200
commitc8528e54e57810535b94ccecbc9c711d67dd710f (patch)
tree75f2407b7417945e996c4c40107753ce10c35601 /libavformat
parente85c4a470651b58963095eb4dafb709313f33474 (diff)
avformat/flvenc: add no_sequence_end flags for flvflags
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>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/flvenc.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 9080f58813..99903f5525 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -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 },
};