简体   繁体   English

FFMpeg 嵌入 .srt 文件到 hls stream 播放列表作为 WebVTT

[英]FFMpeg embedding .srt file into hls stream playlist as WebVTT

I had an srt subtitle file see below.我有一个 srt 字幕文件,见下文。

1
00:00:06,840 --> 00:00:10,320
once long ago in the deep blue below

2
00:00:12,360 --> 00:00:14,370
Don't be silly, Gran Mother

3
00:00:14,870 --> 00:00:16,700
Everybody knows there's no such thing as

4
00:00:16,700 --> 00:00:17,200
Mermaids

5
00:00:17,620 --> 00:00:21,570
You wouldn't say that if you has meet one. You've meet a Mermaid

6
00:00:24,250 --> 00:00:25,180
This just came in

7
00:00:25,480 --> 00:00:26,630
I wanted to take priority

8
00:00:27,180 --> 00:00:28,500
And we followed stories like this before

9
00:00:28,640 --> 00:00:31,620
Would witches working mummies. No not like this

10
00:00:31,630 --> 00:00:33,190
Hundreds of people are testifying

11
00:00:33,370 --> 00:00:34,600
Welcome to Mississippi

12
00:00:42,390 --> 00:00:47,270
There's a powerful magic in you the spirit of the ocean

13
00:00:47,690 --> 00:00:53,940
Let me introduce you to your dreams, The Little Mermaid, off the Mississippi

14
00:01:01,880 --> 00:01:03,580
She was so beautiful

15
00:01:04,040 --> 00:01:05,270
And I know she was real

16
00:01:07,850 --> 00:01:08,550
I'm skeptical

17
00:01:13,460 --> 00:01:14,410
You shouldn't be here

18
00:01:17,560 --> 00:01:24,130
Mermaids do not exist

19
00:01:31,420 --> 00:01:34,300
Look isn't it beautiful? Sorry I have to go.

20
00:01:35,340 --> 00:01:48,570
Elizabeth, How can this be? It's Lock he knows i'm here he summoned me.

21
00:01:48,570 --> 00:01:50,570
We have to save here.

22
00:02:03,570 --> 00:02:05,570
Here soul is mine

23
00:02:05,570 --> 00:02:06,570
Take it

24
00:02:10,570 --> 00:02:12,570
It's the only way

25
00:02:15,000 --> 00:02:17,570
I believe

26
00:02:23,000 --> 00:02:25,570
Mississippi has always been magic

27
00:02:36,000 --> 00:02:38,000
Elizabeth please

If I use AWS Media convert to add this to my playlist it outputs the following.如果我使用 AWS Media convert 将其添加到我的播放列表中,它会输出以下内容。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:300
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:170,
masterCaptionsEnglish/English.vtt
#EXT-X-ENDLIST

And the WebVTT file looks like this. WebVTT 文件看起来像这样。

WEBVTT  #Elemental Media Engine(TM) 2.16.0.602399
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:191970

00:00:06.840 --> 00:00:10.320
once long ago in the deep blue below

00:00:12.360 --> 00:00:14.370
Don't be silly, Gran Mother

00:00:14.870 --> 00:00:16.700
Everybody knows there's no such thing as

00:00:16.700 --> 00:00:17.200
Mermaids

00:00:17.620 --> 00:00:21.570
You wouldn't say that if you has meet one. You've meet a Mermaid

00:00:24.250 --> 00:00:25.180
This just came in

00:00:25.480 --> 00:00:26.630
I wanted to take priority

00:00:27.180 --> 00:00:28.500
And we followed stories like this before

00:00:28.640 --> 00:00:31.620
Would witches working mummies. No not like this

00:00:31.630 --> 00:00:33.190
Hundreds of people are testifying

00:00:33.370 --> 00:00:34.600
Welcome to Mississippi

00:00:42.390 --> 00:00:47.270
There's a powerful magic in you the spirit of the ocean

00:00:47.690 --> 00:00:53.940
Let me introduce you to your dreams, The Little Mermaid, off the Mississippi

00:01:01.880 --> 00:01:03.580
She was so beautiful

00:01:04.040 --> 00:01:05.270
And I know she was real

00:01:07.850 --> 00:01:08.550
I'm skeptical

00:01:13.460 --> 00:01:14.410
You shouldn't be here

00:01:17.560 --> 00:01:24.130
Mermaids do not exist

00:01:31.420 --> 00:01:34.300
Look isn't it beautiful? Sorry I have to go.

00:01:35.340 --> 00:01:48.570
Elizabeth, How can this be? It's Lock he knows i'm here he summoned me.

00:01:48.570 --> 00:01:50.570
We have to save here.

00:02:03.570 --> 00:02:05.570
Here soul is mine

00:02:05.570 --> 00:02:06.570
Take it

00:02:10.570 --> 00:02:12.570
It's the only way

00:02:15.000 --> 00:02:17.570
I believe

00:02:23.000 --> 00:02:25.570
Mississippi has always been magic

00:02:36.000 --> 00:02:38.000
Elizabeth please

I am trying to replicate this with FFMpeg.我正在尝试使用 FFMpeg 来复制它。 I have tried the following command.我尝试了以下命令。

ffmpeg -i little-mermaid.mov -i little-mermaid.srt -c copy -c:s webvtt -start_number 0 -hls_time 10000 -f hls mermaid/Eng/master.m3u8

This creates a WebVTT file but it is completely wrong and out of sync.这会创建一个 WebVTT 文件,但它完全错误且不同步。 See below.见下文。

All the times have changed and it's removed the first two digits from each section.所有的时间都变了,它从每个部分中删除了前两位数字。

WEBVTT

00:06.882 --> 00:10.362
once long ago in the deep blue below

00:12.402 --> 00:14.412
Don't be silly, Gran Mother

00:14.912 --> 00:16.742
Everybody knows there's no such thing as

00:16.742 --> 00:17.242
Mermaids

00:00:17.620 -- 00:00:21.570
You wouldn't say that if you has meet one. You've meet a Mermaid

00:24.292 --> 00:25.222
This just came in

00:25.522 --> 00:26.672
I wanted to take priority

00:27.222 --> 00:28.542
And we followed stories like this before

00:28.682 --> 00:31.662
Would witches working mummies. No not like this

00:31.672 --> 00:33.232
Hundreds of people are testifying

00:33.412 --> 00:34.642
Welcome to Mississippi

00:42.432 --> 00:47.312
There's a powerful magic in you the spirit of the ocean

00:47.732 --> 00:53.982
Let me introduce you to your dreams, The Little Mermaid, off the Mississippi

01:01.922 --> 01:03.622
She was so beautiful

01:04.082 --> 01:05.312
And I know she was real

01:07.892 --> 01:08.592
I'm skeptical

01:13.502 --> 01:14.452
You shouldn't be here

01:17.602 --> 01:24.172
Mermaids do not exist

01:31.462 --> 01:34.342
Look isn't it beautiful? Sorry I have to go.

01:35.382 --> 01:48.612
Elizabeth, How can this be? It's Lock he knows i'm here he summoned me.

01:48.612 --> 01:50.612
We have to save here.

02:03.612 --> 02:05.612
Here soul is mine

02:05.612 --> 02:06.612
Take it

02:10.612 --> 02:12.612
It's the only way

02:15.042 --> 02:17.612
I believe

02:23.042 --> 02:25.612
Mississippi has always been magic

02:36.042 --> 02:38.042
Elizabeth please

I am trying to decide if it just makes sense to convert the.srt to WebVTT and use that file without encoding with FFMPEG just create a.m3u8 file with -hls_flag single_file that points to it but not sure what implementation this might cause.我正在尝试确定将 .srt 转换为 WebVTT 并使用该文件而不使用 FFMPEG 进行编码是否有意义,只需使用指向它的 -hls_flag single_file 创建一个 .m3u8 文件,但不确定这可能会导致什么实现。

Can anyone suggest how I could do this or where I might be going wrong?任何人都可以建议我如何做到这一点或我可能会出错的地方吗?

Here is the video file I am using if anyone wants to run the FFMPEG command above to test.如果有人想运行上面的 FFMPEG 命令进行测试,这是我正在使用的视频文件。

http://www.hd-trailers.net/movie/the-little-mermaid/ http://www.hd-trailers.net/movie/the-little-mermaid/

Thanks谢谢

There's nothing really wrong here.这里没有什么问题。 All media data has two timestamps associated with it - the decoding timestamp (dts) and the presentation timestamp (pts).所有媒体数据都有两个与之关联的时间戳——解码时间戳 (dts) 和呈现时间戳 (pts)。 For non-video streams, these are usually identical.对于非视频流,这些通常是相同的。 But since it's possible for video frames to refer to future frames for decoding purposes (B-frames), frames are stored in encoding/decoding order and not presentation order.但由于视频帧可能会引用未来的帧以用于解码目的(B 帧),因此帧以编码/解码顺序而不是呈现顺序存储。 So, the dts can be earlier than the pts.因此,dts 可以早于 pts。 In your video, this is the case, the first video frame has a pts of 0.000000s and a dts of -0.041708s .在您的视频中,情况就是这样,第一个视频帧的 pts 为0.000000s , dts 为-0.041708s Since MPEG-TS don't store negative timestamps, all timestamps are offset by 0.041708s forward, including subtitles.由于 MPEG-TS 不存储负时间戳,所有时间戳向前偏移0.041708s ,包括字幕。 Sync isn't broken by this.同步不会因此而中断。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM