在 ISOBMFF (MP4) 中,什么原子(盒子)有字幕信息? 我有一个带有字幕的 MP4 文件。 使用FFMPEG,我在视频中输入字幕。
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" -c:v libx264 -c:a aac -strict experimental -b:a 192k output.mp4
这是我原来的 mp4 文件转储。 (Mp4dump的结果)
[ftyp] size=8+16
major_brand = mp42
minor_version = 0
compatible_brand = isom
compatible_brand = mp42
[moov] size=8+373326
[mvhd] size=12+96
timescale = 1000
duration = 1187027
duration(ms) = 1187027
[trak] size=8+157859
[tkhd] size=12+80, flags=3
enabled = 1
id = 1
duration = 1187019
width = 1280.000000
height = 720.000000
[mdia] size=8+157759
[mdhd] size=12+20
timescale = 30000
duration = 35610575
duration(ms) = 1187019
language = und
[hdlr] size=12+59
handler_type = vide
handler_name = ISO Media file produced by Google Inc.
[minf] size=8+157648
[dinf] size=8+28
[dref] size=12+16
[url ] size=12+0, flags=1
location = [local to file]
[stbl] size=8+157584
[stsd] size=12+140
entry_count = 1
[avc1] size=8+128
data_reference_index = 1
width = 1280
height = 720
compressor =
[avcC] size=8+42
Configuration Version = 1
Profile = High
Profile Compatibility = 0
Level = 31
NALU Length Size = 4
Sequence Parameter = [67 64 00 1f ac b4 02 80 2d d8 0b 50 10 10 14 00 00 0f a4 00 03 a9 80 3c 60 ca 80]
Picture Parameter = [68 ee 3c b0]
[stts] size=12+12
entry_count = 1
[stsc] size=12+1672
entry_count = 139
[stco] size=12+10228
entry_count = 2556
[stsz] size=12+142308
sample_size = 0
sample_count = 35575
[stss] size=12+3152
entry_count = 787
[vmhd] size=12+8, flags=1
graphics_mode = 0
op_color = 0000,0000,0000
[trak] size=8+215196
[tkhd] size=12+80, flags=3
enabled = 1
id = 2
duration = 1187027
width = 0.000000
height = 0.000000
[mdia] size=8+215096
[mdhd] size=12+20
timescale = 44100
duration = 52347904
duration(ms) = 1187027
language = eng
[hdlr] size=12+59
handler_type = soun
handler_name = ISO Media file produced by Google Inc.
[minf] size=8+214985
[dinf] size=8+28
[dref] size=12+16
[url ] size=12+0, flags=1
location = [local to file]
[stbl] size=8+214925
[stsd] size=12+93
entry_count = 1
[mp4a] size=8+81
data_reference_index = 1
channel_count = 2
sample_size = 16
sample_rate = 44100
[esds] size=12+41
[ESDescriptor] size=2+39
es_id = 2
stream_priority = 0
[DecoderConfig] size=2+31
stream_type = 5
object_type = 64
up_stream = 0
buffer_size = 0
max_bitrate = 0
avg_bitrate = 0
DecoderSpecificInfo = 12 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[Descriptor:06] size=2+1
[stts] size=12+12
entry_count = 1
[stsc] size=12+40
entry_count = 3
[stco] size=12+10228
entry_count = 2556
[stsz] size=12+204492
sample_size = 0
sample_count = 51121
[smhd] size=12+4
balance = 0
[udta] size=8+139
[meta] size=12+127
[hdlr] size=12+21
handler_type = mdir
handler_name =
[ilst] size=8+86
[.too] size=8+22
[data] size=8+14
type = 1
lang = 0
value = Google
[gsst] size=8+17
[gstd] size=8+23
[mdat] size=8+289495494
这是我的新mp4文件(包括字幕)(Mp4dump的结果)
[ftyp] size=8+24
major_brand = isom
minor_version = 200
compatible_brand = isom
compatible_brand = iso2
compatible_brand = avc1
compatible_brand = mp41
[free] size=8+0
[mdat] size=8+289904585
[moov] size=8+1267713
[mvhd] size=12+96
timescale = 1000
duration = 1187028
duration(ms) = 1187028
[trak] size=8+547052
[tkhd] size=12+80, flags=3
enabled = 1
id = 1
duration = 1187020
width = 1280.000000
height = 720.000000
[edts] size=8+28
[elst] size=12+16
entry_count = 1
entry/segment duration = 1187020
entry/media time = 2002
entry/media rate = 1
[mdia] size=8+546916
[mdhd] size=12+20
timescale = 30000
duration = 35610575
duration(ms) = 1187019
language = und
[hdlr] size=12+59
handler_type = vide
handler_name = ISO Media file produced by Google Inc.
[minf] size=8+546805
[vmhd] size=12+8, flags=1
graphics_mode = 0
op_color = 0000,0000,0000
[dinf] size=8+28
[dref] size=12+16
[url ] size=12+0, flags=1
location = [local to file]
[stbl] size=8+546741
[stsd] size=12+201
entry_count = 1
[avc1] size=8+189
data_reference_index = 1
width = 1280
height = 720
compressor = Lavc59.37.100 libx264
[avcC] size=8+48
Configuration Version = 1
Profile = High
Profile Compatibility = 0
Level = 31
NALU Length Size = 4
Sequence Parameter = [67 64 00 1f ac d9 40 50 05 bb 01 6a 02 02 02 80 00 01 f4 80 00 75 30 07 8c 18 cb]
Picture Parameter = [68 eb e3 cb 22 c0]
[colr] size=8+11
[pasp] size=8+8
[btrt] size=8+12
[stts] size=12+12
entry_count = 1
[stss] size=12+2036
entry_count = 508
[ctts] size=12+259772
entry_count = 32471
[stsc] size=12+28
entry_count = 2
[stsz] size=12+142308
sample_size = 0
sample_count = 35575
[stco] size=12+142300
entry_count = 35574
[trak] size=8+720439
[tkhd] size=12+80, flags=3
enabled = 1
id = 2
duration = 1187028
width = 0.000000
height = 0.000000
[edts] size=8+28
[elst] size=12+16
entry_count = 1
entry/segment duration = 1187027
entry/media time = 1024
entry/media rate = 1
[mdia] size=8+720303
[mdhd] size=12+20
timescale = 44100
duration = 52348928
duration(ms) = 1187050
language = eng
[hdlr] size=12+59
handler_type = soun
handler_name = ISO Media file produced by Google Inc.
[minf] size=8+720192
[smhd] size=12+4
balance = 0
[dinf] size=8+28
[dref] size=12+16
[url ] size=12+0, flags=1
location = [local to file]
[stbl] size=8+720132
[stsd] size=12+114
entry_count = 1
[mp4a] size=8+102
data_reference_index = 1
channel_count = 2
sample_size = 16
sample_rate = 44100
[esds] size=12+42
[ESDescriptor] size=5+37
es_id = 2
stream_priority = 0
[DecoderConfig] size=5+23
stream_type = 5
object_type = 64
up_stream = 0
buffer_size = 0
max_bitrate = 196932
avg_bitrate = 196932
DecoderSpecificInfo = 12 10 56 e5 00
[Descriptor:06] size=5+1
[btrt] size=8+12
[stts] size=12+12
entry_count = 1
[stsc] size=12+373096
entry_count = 31091
[stsz] size=12+204496
sample_size = 0
sample_count = 51122
[stco] size=12+142300
entry_count = 35574
[sgpd] size=12+14, version=1
grouping_type = roll
default_length = 2
entry_count = 1
entries:
( 0) [ff ff]
[sbgp] size=12+16
grouping_type = roll
entry_count = 1
[udta] size=8+90
[meta] size=12+78
[hdlr] size=12+21
handler_type = mdir
handler_name =
[ilst] size=8+37
[.too] size=8+29
[data] size=8+21
type = 1
lang = 0
value = Lavf59.27.100
我没有发现input.mp4文件和output.mp4文件的差异。 (确实副标题应用得很好。)
如字幕过滤器文档中所述,您使用的视频过滤器将“在输入视频之上绘制字幕”,这意味着字幕将被烧录到重新编码的视频中。
有一些方法可以在 mp4 中携带非烧录字幕,但烧录字幕不需要任何信息,因为它们现在只是视频中的像素。