As you probably know from my previous posts, MPEG is standardizing a way to deliver WebVTT files as streams (or tracks) in the ISO Base Media File Format (e.g. MP4 files). The standard is still at draft stage but I recently added VTT-in-MP4 support to GPAC (no playback support yet), as reported in the contribution below. Not that this support might change in the future depending on how the draft standard progresses, in particular in response to some comments we’ve made, as reported in the contribution referenced in this post.
MP4Box now supports basic operations on WebVTT files according to the ISO/IEC 14496-30 DIS and ISO/IEC 14496-12:2012/DAM2. Different files have been tested (regular movie files, chapter files with nested cues, metadata files with XML, and some files with invalid syntax). Here are the basic operations:
Operation |
Command line example |
Notes |
WebVTT Import | MP4Box -add file.vtt file.mp4 | Adds a track to the given file:
|
MP4Box -add file.vtt:lang=en:text_layout=800x600x100x100 file.mp4 |
Sets the language and track layout information | |
MP4Box -add file.vtt:delay=1000 file.mp4 |
Adds an edit list | |
MP4Box -add file.vtt:dur=20 file.mp4 |
Import only a certain duration of the input file | |
SRT Import as WebVTT track | MP4Box -add file.srt:FMT=VTT file.mp4 | Forces the import of SRT files to generate a WebVTT track instead of a 3GPP Timed Text track |
WebVTT Export | MP4Box –raw <trackId> file.mp4 | Exports a WebVTT file where consecutive cues from different samples and with the same id, settings and payload are merged |
MP4Box –raw <trackId>:vttnomerge file.mp4 | Dump samples as-is w/o merge, and with empty samples | |
MP4Box –raws <trackId>:<sampleNumber> file.mp4 | Exports only one VTT sample | |
File Editing |
MP4Box –split-chunk start:end file.mp4 |
Split a track into 2 files |
MP4Box –cat file1.mp4 –cat file2.mp4 file3.mp4 |
Concatenation of tracks (second header is ignored) | |
DASH |
MP4Box –frag 1000 file.mp4 |
|
MP4Box –dash 1000 file.mp4 |
Fragments and segments the file and produces an MPD containing:
<Representation id=”1″ mimeType=”video/mp4″ codecs=”wvtt” width=”800″ height=”600″ startWithSAP=”1″ bandwidth=”1939″> |
[textimport http://biblio.telecom-paristech.fr/cgi-bin/ws/biblio.cgi?type=standardisation&etat=submitted&id=13808]
[textimport http://biblio.telecom-paristech.fr/cgi-bin/ws/biblio.cgi?type=standardisation&etat=submitted&id=13809]
[slideshare id=20023436&doc=m29240-timedtextcomments-130426081135-phpapp02]
@Cyril – I was trying to use mp4box v0.5.0 for encapsulating WebVTT today but wasn’t able to make it work. Is it part of the mp4box codebase or waiting to be merged?
Hi Silvia,
WebVTT in MP4 is part of the MP4Box’s codebase but v0.5.0 is too old. You should get the nightly builds from: https://gpac.wp.imt.fr/downloads/gpac-nightly-builds/ Let me know if you still have problems.