diff --git a/libeplayer3-arm/container/container_ffmpeg.c b/libeplayer3-arm/container/container_ffmpeg.c index f987516..095d32a 100644 --- a/libeplayer3-arm/container/container_ffmpeg.c +++ b/libeplayer3-arm/container/container_ffmpeg.c @@ -28,7 +28,6 @@ #include #include -#include #include #include #include @@ -41,6 +40,7 @@ #include #include #include +#include #include @@ -463,6 +463,8 @@ static char *Codec2Encoding(int32_t codec_id, int32_t media_type, uint8_t *extra return "S_TEXT/SRT"; case AV_CODEC_ID_SUBRIP: return "S_TEXT/SUBRIP"; + case AV_CODEC_ID_WEBVTT: + return "D_WEBVTT/SUBTITLES"; default: ffmpeg_err("Codec ID %d (%.8lx) not found\n", codec_id, codec_id); // Default to injected-pcm for unhandled audio types. @@ -2538,7 +2540,8 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 #endif get_codecpar(stream)->codec_id != AV_CODEC_ID_SUBRIP && get_codecpar(stream)->codec_id != AV_CODEC_ID_TEXT && - get_codecpar(stream)->codec_id != AV_CODEC_ID_SRT) + get_codecpar(stream)->codec_id != AV_CODEC_ID_SRT && + get_codecpar(stream)->codec_id != AV_CODEC_ID_WEBVTT) { ffmpeg_printf(10, "subtitle with not supported codec codec_id[%u]\n", (uint32_t)get_codecpar(stream)->codec_id); } diff --git a/libeplayer3-arm/output/output_subtitle.c b/libeplayer3-arm/output/output_subtitle.c index 5810440..6d301ab 100644 --- a/libeplayer3-arm/output/output_subtitle.c +++ b/libeplayer3-arm/output/output_subtitle.c @@ -232,6 +232,10 @@ static int Write(Context_t *context, void *data) { fprintf(stderr, "{\"s_a\":{\"id\":%d,\"s\":%lld,\"e\":%lld,\"t\":\"%s\"}}\n", out->trackId, out->pts / 90, out->pts / 90 + out->durationMS, ass_get_text((char *)out->data)); } + else if (!strncmp("D_WEBVTT/SUBTITLES", Encoding, 18)) + { + fprintf(stderr, "{\"s_a\":{\"id\":%d,\"s\":%lld,\"e\":%lld,\"t\":\"%s\"}}\n", out->trackId, out->pts / 90, out->pts / 90 + out->durationMS, json_string_escape((char *)out->data)); + } else { subtitle_err("unknown encoding %s\n", Encoding);