diff options
author | Steven Liu <lq@chinaffmpeg.org> | 2016-11-08 19:27:21 +0800 |
---|---|---|
committer | Steven Liu <lq@chinaffmpeg.org> | 2016-11-10 10:30:48 +0800 |
commit | 863ebe6f83de6e884a4b1870231678c9259f3c90 (patch) | |
tree | ecc0bf3447831ca61f3c83c9ec4aa44a4779ffbd /tests | |
parent | 2bc66d9e432005c71c17565c28496be5308e023b (diff) | |
download | ffmpeg-863ebe6f83de6e884a4b1870231678c9259f3c90.tar.gz |
avformat/flvenc: add add_keyframe_index option
Add keyframe index metadata
Used to facilitate seeking; particularly for HTTP pseudo streaming.
1. read live streaming or file by sequence
2. if use add_keyframe_index option, add a mark flag at the position,
use to insert new context at the last step.
3. add the keyframes *offset* and *timestamp* into a list
4. if use add_keyframe_index option, shift the metadata data from
mark flag offset
5. insert the keyframes *offset* and *timestamp* from the list by
sequence
6. free the list
7. end.
Add FATE test case;
Reviewed-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Steven Liu <liuqi@gosun.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile | 1 | ||||
-rwxr-xr-x | tests/fate-run.sh | 4 | ||||
-rw-r--r-- | tests/fate/flvenc.mak | 11 | ||||
-rw-r--r-- | tests/ref/fate/flv-add_keyframe_index | 12 |
4 files changed, 28 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile index 8e810ff195..07e839e316 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -132,6 +132,7 @@ include $(SRC_PATH)/tests/fate/fifo-muxer.mak include $(SRC_PATH)/tests/fate/filter-audio.mak include $(SRC_PATH)/tests/fate/filter-video.mak include $(SRC_PATH)/tests/fate/flac.mak +include $(SRC_PATH)/tests/fate/flvenc.mak include $(SRC_PATH)/tests/fate/gapless.mak include $(SRC_PATH)/tests/fate/gif.mak include $(SRC_PATH)/tests/fate/h264.mak diff --git a/tests/fate-run.sh b/tests/fate-run.sh index c640cc5794..29a36cea3a 100755 --- a/tests/fate-run.sh +++ b/tests/fate-run.sh @@ -129,6 +129,10 @@ framecrc(){ ffmpeg "$@" -flags +bitexact -fflags +bitexact -f framecrc - } +ffmetadata(){ + ffmpeg "$@" -flags +bitexact -fflags +bitexact -f ffmetadata - +} + framemd5(){ ffmpeg "$@" -flags +bitexact -fflags +bitexact -f framemd5 - } diff --git a/tests/fate/flvenc.mak b/tests/fate/flvenc.mak new file mode 100644 index 0000000000..3881bcd105 --- /dev/null +++ b/tests/fate/flvenc.mak @@ -0,0 +1,11 @@ +tests/data/add_keyframe_index.flv: TAG = GEN +tests/data/add_keyframe_index.flv: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data + $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \ + -f lavfi -i "sws_flags=+accurate_rnd+bitexact;testsrc=r=7:n=2:d=20" -sws_flags '+accurate_rnd+bitexact' -metadata "encoder=Lavf" -pix_fmt yuv420p -c:v flv1 -g 7 -f flv -flags +bitexact \ + -flvflags add_keyframe_index -idct simple -dct int -y $(TARGET_PATH)/tests/data/add_keyframe_index.flv 2> /dev/null; + +FATE_AFILTER-$(call ALLYES, FLV_MUXER FLV_DEMUXER AVDEVICE TESTSRC_FILTER LAVFI_INDEV FLV_ENCODER) += fate-flv-add_keyframe_index +fate-flv-add_keyframe_index: tests/data/add_keyframe_index.flv +fate-flv-add_keyframe_index: CMD = ffmetadata -flags +bitexact -i $(TARGET_PATH)/tests/data/add_keyframe_index.flv + + diff --git a/tests/ref/fate/flv-add_keyframe_index b/tests/ref/fate/flv-add_keyframe_index new file mode 100644 index 0000000000..1c4da65d90 --- /dev/null +++ b/tests/ref/fate/flv-add_keyframe_index @@ -0,0 +1,12 @@ +;FFMETADATA1 +hasVideo=true +hasKeyframes=true +hasAudio=false +hasMetadata=true +canSeekToEnd=true +datasize=629776 +videosize=629381 +audiosize=0 +lasttimestamp=20 +lastkeyframetimestamp=19 +lastkeyframelocation=597963 |