[FFmpeg-devel] [PATCH v2 3/3] avformat/movenc: add support for fragmented TTML muxing

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri Dec 8 14:15:32 EET 2023


Jan Ekström:
> From: Jan Ekström <jan.ekstrom at 24i.com>
> 
> Attempts to base the fragmentation timing on other streams
> as most receivers expect media fragments to be more or less
> aligned.
> 
> Currently does not support fragmentation on subtitle track
> only, as the subtitle packet queue timings would have to be
> checked in addition to the current fragmentation timing logic.
> 
> Signed-off-by: Jan Ekström <jan.ekstrom at 24i.com>
> ---
>  libavformat/movenc.c                        |    9 -
>  libavformat/movenc_ttml.c                   |  157 ++-
>  tests/fate/mov.mak                          |   21 +
>  tests/ref/fate/mov-mp4-fragmented-ttml-dfxp | 1197 +++++++++++++++++++
>  tests/ref/fate/mov-mp4-fragmented-ttml-stpp | 1197 +++++++++++++++++++

Am I the only one who thinks that this is a bit excessive?

>  5 files changed, 2568 insertions(+), 13 deletions(-)
>  create mode 100644 tests/ref/fate/mov-mp4-fragmented-ttml-dfxp
>  create mode 100644 tests/ref/fate/mov-mp4-fragmented-ttml-stpp
> 
> diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
> index 6cb493ceab..5c44299196 100644
> --- a/tests/fate/mov.mak
> +++ b/tests/fate/mov.mak
> @@ -143,6 +143,27 @@ FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, TTML SUBRIP, MP4 MOV, SRT_DEMUXER TTML
>  fate-mov-mp4-ttml-stpp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml -time_base:s 1:1000" "-map 0 -c copy" "-of json -show_entries packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
>  fate-mov-mp4-ttml-dfxp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml -time_base:s 1:1000 -tag:s dfxp -strict unofficial" "-map 0 -c copy" "-of json -show_entries packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
>  
> +FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, TTML SUBRIP, MP4 MOV, LAVFI_INDEV SMPTEHDBARS_FILTER SRT_DEMUXER MPEG2VIDEO_ENCODER TTML_MUXER RAWVIDEO_MUXER) += fate-mov-mp4-fragmented-ttml-stpp
> +fate-mov-mp4-fragmented-ttml-stpp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 \
> +  "-map 1:v -map 0:s \
> +   -c:v mpeg2video -b:v 2M -g 48 -sc_threshold 1000000000 \
> +   -c:s ttml -time_base:s 1:1000 \
> +   -movflags +cmaf" \
> +  "-map 0:s -c copy" \
> +  "-select_streams s -of csv -show_packets -show_data_hash crc32" \
> +  "-f lavfi -i smptehdbars=duration=70:size=320x180:rate=24000/1001,format=yuv420p" \
> +  "" "" "rawvideo"

Would it speed the test up if you used smaller dimensions or a smaller
bitrate?
Anyway, you probably want the "data" output format instead of rawvideo.

> +
> +FATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, TTML SUBRIP, ISMV MOV, LAVFI_INDEV SMPTEHDBARS_FILTER SRT_DEMUXER MPEG2VIDEO_ENCODER TTML_MUXER RAWVIDEO_MUXER) += fate-mov-mp4-fragmented-ttml-dfxp
> +fate-mov-mp4-fragmented-ttml-dfxp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt ismv \
> +  "-map 1:v -map 0:s \
> +   -c:v mpeg2video -b:v 2M -g 48 -sc_threshold 1000000000 \
> +   -c:s ttml -tag:s dfxp -time_base:s 1:1000" \
> +  "-map 0:s -c copy" \
> +  "-select_streams s -of csv -show_packets -show_data_hash crc32" \
> +  "-f lavfi -i smptehdbars=duration=70:size=320x180:rate=24000/1001,format=yuv420p" \
> +  "" "" "rawvideo"
> +
>  # FIXME: Uncomment these two tests once the test files are uploaded to the fate
>  # server.
>  # avif demuxing - still image with 1 item.




More information about the ffmpeg-devel mailing list