From 3e8c96a695dca831cf3d6df3ed2f8d59a76c216a Mon Sep 17 00:00:00 2001 From: "Daniel J. Lewis" Date: Fri, 13 Jun 2025 16:42:47 -0400 Subject: [PATCH 1/2] Reorganized example documents and files --- {chapters => docs/examples/chapters}/example.json | 0 {chapters => docs/examples/chapters}/exampleComplex.json | 0 {chapters => docs/examples/chapters}/jsonChapters.md | 0 {license => docs/examples/license}/license.md | 0 {license => docs/examples/license}/licenses.json | 0 {license => docs/examples/license}/licenseslugs.txt | 0 {license => docs/examples/license}/v4v-4.0.md | 0 {location => docs/examples/location}/location.md | 0 {publishers => docs/examples/publishers}/publishers.md | 0 {transcripts => docs/examples/transcripts}/example.html | 0 {transcripts => docs/examples/transcripts}/example.json | 0 {transcripts => docs/examples/transcripts}/example.srt | 0 {transcripts => docs/examples/transcripts}/example.vtt | 0 {transcripts => docs/examples/transcripts}/transcripts.md | 0 {value => docs/examples/value}/blip-0010.md | 0 {value => docs/examples/value}/lnaddress.md | 0 {value => docs/examples/value}/value.md | 0 {value => docs/examples/value}/valueslugs.txt | 0 18 files changed, 0 insertions(+), 0 deletions(-) rename {chapters => docs/examples/chapters}/example.json (100%) rename {chapters => docs/examples/chapters}/exampleComplex.json (100%) rename {chapters => docs/examples/chapters}/jsonChapters.md (100%) rename {license => docs/examples/license}/license.md (100%) rename {license => docs/examples/license}/licenses.json (100%) rename {license => docs/examples/license}/licenseslugs.txt (100%) rename {license => docs/examples/license}/v4v-4.0.md (100%) rename {location => docs/examples/location}/location.md (100%) rename {publishers => docs/examples/publishers}/publishers.md (100%) rename {transcripts => docs/examples/transcripts}/example.html (100%) rename {transcripts => docs/examples/transcripts}/example.json (100%) rename {transcripts => docs/examples/transcripts}/example.srt (100%) rename {transcripts => docs/examples/transcripts}/example.vtt (100%) rename {transcripts => docs/examples/transcripts}/transcripts.md (100%) rename {value => docs/examples/value}/blip-0010.md (100%) rename {value => docs/examples/value}/lnaddress.md (100%) rename {value => docs/examples/value}/value.md (100%) rename {value => docs/examples/value}/valueslugs.txt (100%) diff --git a/chapters/example.json b/docs/examples/chapters/example.json similarity index 100% rename from chapters/example.json rename to docs/examples/chapters/example.json diff --git a/chapters/exampleComplex.json b/docs/examples/chapters/exampleComplex.json similarity index 100% rename from chapters/exampleComplex.json rename to docs/examples/chapters/exampleComplex.json diff --git a/chapters/jsonChapters.md b/docs/examples/chapters/jsonChapters.md similarity index 100% rename from chapters/jsonChapters.md rename to docs/examples/chapters/jsonChapters.md diff --git a/license/license.md b/docs/examples/license/license.md similarity index 100% rename from license/license.md rename to docs/examples/license/license.md diff --git a/license/licenses.json b/docs/examples/license/licenses.json similarity index 100% rename from license/licenses.json rename to docs/examples/license/licenses.json diff --git a/license/licenseslugs.txt b/docs/examples/license/licenseslugs.txt similarity index 100% rename from license/licenseslugs.txt rename to docs/examples/license/licenseslugs.txt diff --git a/license/v4v-4.0.md b/docs/examples/license/v4v-4.0.md similarity index 100% rename from license/v4v-4.0.md rename to docs/examples/license/v4v-4.0.md diff --git a/location/location.md b/docs/examples/location/location.md similarity index 100% rename from location/location.md rename to docs/examples/location/location.md diff --git a/publishers/publishers.md b/docs/examples/publishers/publishers.md similarity index 100% rename from publishers/publishers.md rename to docs/examples/publishers/publishers.md diff --git a/transcripts/example.html b/docs/examples/transcripts/example.html similarity index 100% rename from transcripts/example.html rename to docs/examples/transcripts/example.html diff --git a/transcripts/example.json b/docs/examples/transcripts/example.json similarity index 100% rename from transcripts/example.json rename to docs/examples/transcripts/example.json diff --git a/transcripts/example.srt b/docs/examples/transcripts/example.srt similarity index 100% rename from transcripts/example.srt rename to docs/examples/transcripts/example.srt diff --git a/transcripts/example.vtt b/docs/examples/transcripts/example.vtt similarity index 100% rename from transcripts/example.vtt rename to docs/examples/transcripts/example.vtt diff --git a/transcripts/transcripts.md b/docs/examples/transcripts/transcripts.md similarity index 100% rename from transcripts/transcripts.md rename to docs/examples/transcripts/transcripts.md diff --git a/value/blip-0010.md b/docs/examples/value/blip-0010.md similarity index 100% rename from value/blip-0010.md rename to docs/examples/value/blip-0010.md diff --git a/value/lnaddress.md b/docs/examples/value/lnaddress.md similarity index 100% rename from value/lnaddress.md rename to docs/examples/value/lnaddress.md diff --git a/value/value.md b/docs/examples/value/value.md similarity index 100% rename from value/value.md rename to docs/examples/value/value.md diff --git a/value/valueslugs.txt b/docs/examples/value/valueslugs.txt similarity index 100% rename from value/valueslugs.txt rename to docs/examples/value/valueslugs.txt From 00c5af1cb990d8c08f021dfd3dbb763b73e5b21a Mon Sep 17 00:00:00 2001 From: "Daniel J. Lewis" Date: Fri, 13 Jun 2025 17:07:38 -0400 Subject: [PATCH 2/2] Updated internal links --- docs/examples/chapters/jsonChapters.md | 259 +++++++++++------------ docs/examples/license/license.md | 29 +-- docs/examples/publishers/publishers.md | 49 ++--- docs/examples/transcripts/transcripts.md | 43 ++-- docs/examples/value/blip-0010.md | 87 +++----- docs/examples/value/value.md | 90 ++------ docs/tags/chapters.md | 2 +- docs/tags/chat.md | 2 +- docs/tags/license.md | 4 +- docs/tags/location.md | 23 +- docs/tags/medium.md | 2 +- docs/tags/publisher.md | 2 +- docs/tags/social-interact.md | 2 +- docs/tags/transcript.md | 2 +- docs/tags/value-recipient.md | 2 +- docs/tags/value.md | 2 +- podcasting2.0.md | 95 ++++----- 17 files changed, 306 insertions(+), 389 deletions(-) diff --git a/docs/examples/chapters/jsonChapters.md b/docs/examples/chapters/jsonChapters.md index d00ddc4..b5365d4 100644 --- a/docs/examples/chapters/jsonChapters.md +++ b/docs/examples/chapters/jsonChapters.md @@ -1,34 +1,29 @@ ## JSON Chapters Format + Version 1.2 - Updated on 2021.04.15 -

- This is the initial spec for a json chapters format that can be referenced in an RSS feed using the `` tag of -the "podcast" namespace. This file can reside on any publicly accessible url. See the podcast namespace documentation for +the "podcast" namespace. This file can reside on any publicly accessible url. See the podcast namespace documentation for details on the format of the tag. -This type of file should be served with a Content-type of 'application/json+chapters'. Chapter order is assumed to be +This type of file should be served with a Content-type of 'application/json+chapters'. Chapter order is assumed to be in ascending order based on the `startTime`. -
- ## "Chapters" Object The chapters object is a simple JSON object with only 2 required properties: - - `version` (required - string) The version number of the format being used - - `chapters` (required - array) An array of chapter objects defined below +- `version` (required - string) The version number of the format being used +- `chapters` (required - array) An array of chapter objects defined below #### Optional Attributes: - - `author` (optional - string) The name of the author of this podcast episode. - - `title` (optional - string) The title of this podcast episode. - - `podcastName` (optional - string) The name of the podcast this episode belongs to. - - `description` (optional - string) A description of this episode. - - `fileName` (optional - string) The name of the audio file these chapters apply to. - - `waypoints` (optional - boolean) If this property is present, the locations in a chapter object should be displayed with a route between locations. - -
+- `author` (optional - string) The name of the author of this podcast episode. +- `title` (optional - string) The title of this podcast episode. +- `podcastName` (optional - string) The name of the podcast this episode belongs to. +- `description` (optional - string) A description of this episode. +- `fileName` (optional - string) The name of the audio file these chapters apply to. +- `waypoints` (optional - boolean) If this property is present, the locations in a chapter object should be displayed with a route between locations. ## The "Chapter" Object @@ -36,27 +31,23 @@ The "chapter" object takes this basic form: ```json { - "startTime": 94, - "title": "Donation Segment" + "startTime": 94, + "title": "Donation Segment" } ``` There is only one required attribute: - - `startTime` (required - float) The starting time of the chapter, expressed in seconds with float precision for fractions of a second. - -
+- `startTime` (required - float) The starting time of the chapter, expressed in seconds with float precision for fractions of a second. #### Optional Attributes: - - `title` (optional - string) The title of this chapter. - - `img` (optional - string) The url of an image to use as chapter art. - - `url` (optional - string) The url of a web page or supporting document that's related to the topic of this chapter. - - `toc` (optional - boolean) If this property is present and set to false, this chapter should not display visibly to the user in either the table of contents or as a jump-to point in the user interface. It should be considered a "silent" chapter marker for the purpose of meta-data only. If this property is set to `true` or not present at all, this should be considered a normal chapter for display to the user. The name "toc" is short for "table of contents". - - `endTime` (optional - float) The end time of the chapter, expressed in seconds with float precision for fractions of a second. - - `location` (optional - object) This object defines an optional location that is tied to this chapter. It follows the structure of the [location](https://github.com/Podcastindex-org/podcast-namespace/blob/main/location/location.md) tag in the XML namespace. - -
+- `title` (optional - string) The title of this chapter. +- `img` (optional - string) The url of an image to use as chapter art. +- `url` (optional - string) The url of a web page or supporting document that's related to the topic of this chapter. +- `toc` (optional - boolean) If this property is present and set to false, this chapter should not display visibly to the user in either the table of contents or as a jump-to point in the user interface. It should be considered a "silent" chapter marker for the purpose of meta-data only. If this property is set to `true` or not present at all, this should be considered a normal chapter for display to the user. The name "toc" is short for "table of contents". +- `endTime` (optional - float) The end time of the chapter, expressed in seconds with float precision for fractions of a second. +- `location` (optional - object) This object defines an optional location that is tied to this chapter. It follows the structure of the [location](https://github.com/Podcastindex-org/podcast-namespace/blob/main/location/location.md) tag in the XML namespace. ## The Location Object: @@ -64,24 +55,22 @@ The "location" object takes this basic form: ```json { - "name": "Eiffel Tower, Paris", - "geo": "geo:48.858093,2.294694" + "name": "Eiffel Tower, Paris", + "geo": "geo:48.858093,2.294694" } ``` -It is intended to provide for rich location-based experiences tied to a point of time within a podcast episode, or other feed based media. For example, a "walking tour" may include latitude and longitude waypoints along side the image within chapters markers as someone listens to the tour podcast. This -would allow apps to show a map with markers within the UI as the tour progresses. Or, perhaps a "History of the Middle East" podcast might expose a map to highlight where certain landmarks are when being discussed. +It is intended to provide for rich location-based experiences tied to a point of time within a podcast episode, or other feed based media. For example, a "walking tour" may include latitude and longitude waypoints along side the image within chapters markers as someone listens to the tour podcast. This +would allow apps to show a map with markers within the UI as the tour progresses. Or, perhaps a "History of the Middle East" podcast might expose a map to highlight where certain landmarks are when being discussed. There are two required attributes: - - `name` (required - string) A human readable place name. - - `geo` (required - string) A simple latitude,longitude given in geoURI format, conformant to [RFC 5870](https://tools.ietf.org/html/rfc5870). +- `name` (required - string) A human readable place name. +- `geo` (required - string) A simple latitude,longitude given in geoURI format, conformant to [RFC 5870](https://tools.ietf.org/html/rfc5870). #### Optional Attributes: - - `osm` (optional - string) An OpenStreetMaps query string. Please see the [location](https://github.com/Podcastindex-org/podcast-namespace/blob/main/location/location.md) XML tag specification for full details. - -
+- `osm` (optional - string) An OpenStreetMaps query string. Please see the [location](../../tags/location.md) XML tag specification for full details. ## Basic example @@ -89,122 +78,116 @@ Here is what a very basic chapters file may look like: ```json { - "version": "1.2.0", - "chapters": - [ - { - "startTime": 0, - "title": "Intro" - }, - { - "startTime": 168, - "title": "Hearing Aids", - "img": "https://example.com/images/hearing_aids.jpg" - }, - { - "startTime": 260, - "title": "Progress Report" - }, - { - "startTime": 410, - "title": "Namespace", - "img": "https://example.com/images/namepsace_example.jpg", - "url": "https://github.com/Podcastindex-org/podcast-namespace" - }, - { - "startTime": 3990, - "title": "Just Break Up", - "img": "https://example.com/images/justbreakuppod.png" - }, - { - "startTime": 5510, - "title": "The Big Players" - }, - { - "startTime": 5854, - "title": "Spread the Word" - }, - { - "startTime": 6089, - "title": "Outro" - } - ] + "version": "1.2.0", + "chapters": [ + { + "startTime": 0, + "title": "Intro" + }, + { + "startTime": 168, + "title": "Hearing Aids", + "img": "https://example.com/images/hearing_aids.jpg" + }, + { + "startTime": 260, + "title": "Progress Report" + }, + { + "startTime": 410, + "title": "Namespace", + "img": "https://example.com/images/namepsace_example.jpg", + "url": "https://github.com/Podcastindex-org/podcast-namespace" + }, + { + "startTime": 3990, + "title": "Just Break Up", + "img": "https://example.com/images/justbreakuppod.png" + }, + { + "startTime": 5510, + "title": "The Big Players" + }, + { + "startTime": 5854, + "title": "Spread the Word" + }, + { + "startTime": 6089, + "title": "Outro" + } + ] } ``` In this simple form, the chapter objects are treated as sequential just based on their index as a function of being -ordered in ascending fashion based on their `startTime`. In a very simple example such as this nothing is present except the `startTime`, +ordered in ascending fashion based on their `startTime`. In a very simple example such as this nothing is present except the `startTime`, `title`, and a few bits of optional meta-data. -

- ## More complex example In this more robust example, we can bring in more meta-data about the podcast episode, and provide a way for this file to exist more easily in a web -context for something like an embedded HTML5 player on a website. Also there is an example of a "silent" chapter that has no presence in the visible +context for something like an embedded HTML5 player on a website. Also there is an example of a "silent" chapter that has no presence in the visible chapter list, but allows for different artwork to be shown: ```json { - "version": "1.2.0", - "author": "John Doe", - "title": "Episode 7 - Making Progress", - "podcastName": "John's Awesome Podcast", - "chapters": - [ - { - "startTime": 0, - "title": "Intro" - }, - { - "startTime": 168, - "title": "Hearing Aids" - }, - { - "startTime": 260, - "title": "Progress Report" - }, - { - "startTime": 410, - "title": "Namespace", - "img": "https://example.com/images/namepsace_example.jpg", - "url": "https://github.com/Podcastindex-org/podcast-namespace" - }, - { - "startTime": 3990, - "title": "Just Break Up", - "img": "https://example.com/images/justbreakuppod.png", - "url": "https://twitter.com/justbreakuppod" - }, - { - "startTime": 4826, - "img": "https://example.com/images/parisfrance.jpg", - "toc": false, - "location": { - "name": "Eiffel Tower, Paris", - "geo": "geo:42.3417649,-70.9661596" - } - }, - { - "startTime": 5510, - "title": "The Big Players" - }, - { - "startTime": 5854, - "title": "Spread the Word" - }, - { - "startTime": 6089, - "title": "Outro" - } - ] + "version": "1.2.0", + "author": "John Doe", + "title": "Episode 7 - Making Progress", + "podcastName": "John's Awesome Podcast", + "chapters": [ + { + "startTime": 0, + "title": "Intro" + }, + { + "startTime": 168, + "title": "Hearing Aids" + }, + { + "startTime": 260, + "title": "Progress Report" + }, + { + "startTime": 410, + "title": "Namespace", + "img": "https://example.com/images/namepsace_example.jpg", + "url": "https://github.com/Podcastindex-org/podcast-namespace" + }, + { + "startTime": 3990, + "title": "Just Break Up", + "img": "https://example.com/images/justbreakuppod.png", + "url": "https://twitter.com/justbreakuppod" + }, + { + "startTime": 4826, + "img": "https://example.com/images/parisfrance.jpg", + "toc": false, + "location": { + "name": "Eiffel Tower, Paris", + "geo": "geo:42.3417649,-70.9661596" + } + }, + { + "startTime": 5510, + "title": "The Big Players" + }, + { + "startTime": 5854, + "title": "Spread the Word" + }, + { + "startTime": 6089, + "title": "Outro" + } + ] } ``` -

- ## Note about privacy -Clearly, when pulling in web based data there is the chance that this functionality could be used for tracking. As a safeguard against that, apps -using chapters are encouraged to prompt the user to acknowledge whether they trust the podcast in question before displaying the content. Trusted +Clearly, when pulling in web based data there is the chance that this functionality could be used for tracking. As a safeguard against that, apps +using chapters are encouraged to prompt the user to acknowledge whether they trust the podcast in question before displaying the content. Trusted podcasts can then be remembered for the future. diff --git a/docs/examples/license/license.md b/docs/examples/license/license.md index d8b5abb..d7f2d4d 100644 --- a/docs/examples/license/license.md +++ b/docs/examples/license/license.md @@ -31,22 +31,23 @@ This matter is very complex so this specification only intends to scratch its su ## Specification -- **\[License Slug from [License List](/license/licenseslugs.txt) or Custom Liense name]** +- **\[License Slug from [License List](licenseslugs.txt) or Custom Liense name]** - Channel (optional | single) + Channel (optional | single) - Item (optional | single) + Item (optional | single) - This element allows a podcaster to specify a license for a podcast or an episode. + This element allows a podcaster to specify a license for a podcast or an episode. - - `url` (required): This is the url to the license file. + - `url` (required): This is the url to the license file. - Examples: - - `(CC BY-ND 4.0)` - - `(CC BY-NC-ND 4.0)` - - `© My Company 2021 - All Rights Reserved` - - - Discussion here: - - (https://github.com/Podcastindex-org/podcast-namespace/issues/177) - - (https://podcastindex.social/web/statuses/105839486748529374) \ No newline at end of file + Examples: + + - `(CC BY-ND 4.0)` + - `(CC BY-NC-ND 4.0)` + - `© My Company 2021 - All Rights Reserved` + + Discussion here: + + - (https://github.com/Podcastindex-org/podcast-namespace/issues/177) + - (https://podcastindex.social/web/statuses/105839486748529374) diff --git a/docs/examples/publishers/publishers.md b/docs/examples/publishers/publishers.md index afa10bd..7c9bd46 100644 --- a/docs/examples/publishers/publishers.md +++ b/docs/examples/publishers/publishers.md @@ -1,30 +1,31 @@ # The Publisher Medium + v1.0 - April 5, 2024
-Below, you will find implementation details about using the `publisher` value in the [``](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) tag to +Below, you will find implementation details about using the `publisher` value in the [``](../../tags/medium.md) tag to create "publisher feeds".
## Overview -The idea of a "publisher" is that a single entity (person, organization, record label, etc) might be the responsible -party which produces multiple podcast feeds. In such a case it would be useful to be able to see all of a -publisher's podcasts collected in a single place. For instance, a news organization might produce 12 different -podcast feeds. Or, a music artist might produce 3 albums of music using the `` tag of `music`. In -those cases, having a high level feed that references these other feeds would make it easier for podcast apps to +The idea of a "publisher" is that a single entity (person, organization, record label, etc) might be the responsible +party which produces multiple podcast feeds. In such a case it would be useful to be able to see all of a +publisher's podcasts collected in a single place. For instance, a news organization might produce 12 different +podcast feeds. Or, a music artist might produce 3 albums of music using the `` tag of `music`. In +those cases, having a high level feed that references these other feeds would make it easier for podcast apps to associate those feeds with a particular publishing entity. -Likewise, it is helpful if the produced feeds link back to the "publisher feed" so that podcast apps can walk back -up the chain from a podcast feed to it's publisher in order to find other relevant content from that publishing -entity. For instance, a listener may subscribe to a music album by an artist and want to find their other +Likewise, it is helpful if the produced feeds link back to the "publisher feed" so that podcast apps can walk back +up the chain from a podcast feed to it's publisher in order to find other relevant content from that publishing +entity. For instance, a listener may subscribe to a music album by an artist and want to find their other albums and singles. -When a publisher feed links to it's "child" feeds, and those "child" feeds link back to their "parent" publisher -feeds, this provides a two-way validation that a feed is indeed a valid part of a publishing entities portfolio of -content. If a feed links to a publisher feed without the publisher feed referencing it, that association should be +When a publisher feed links to it's "child" feeds, and those "child" feeds link back to their "parent" publisher +feeds, this provides a two-way validation that a feed is indeed a valid part of a publishing entities portfolio of +content. If a feed links to a publisher feed without the publisher feed referencing it, that association should be discarded.
@@ -33,14 +34,14 @@ discarded. A publisher feed must have the following parts in it's ``: -1. A [``](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) tag with a value of `publisher`. -2. A valid [``](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid). -3. One or more [``](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#remoteItem) tags that link to podcast feeds. +1. A [``](../../tags/medium.md) tag with a value of `publisher`. +2. A valid [``](../../tags/guid.md). +3. One or more [``](../../tags/remote-item.md) tags that link to podcast feeds. ### Example The following example shows a publisher feed that links to all of the feeds published by the "AgileSet Media" entity. -This feed also makes use of the [``](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person) tag to define a responsible person at the +This feed also makes use of the [``](../../tags/person.md) tag to define a responsible person at the publishing entity. ```xml @@ -70,16 +71,16 @@ publishing entity. ## Linking to Publisher Feeds -While not strictly required, adding a reference to the publisher feed from the "child" feeds is a good idea, as it -makes discovery of your other content much easier. Podcast apps can see this linkage and "walk back up the chain" -to your publisher feed and then recommend your other podcast content to a listener. To do this, you will need to -add a `` tag in the `` of the "child" feed that will contain a `` link to -the +While not strictly required, adding a reference to the publisher feed from the "child" feeds is a good idea, as it +makes discovery of your other content much easier. Podcast apps can see this linkage and "walk back up the chain" +to your publisher feed and then recommend your other podcast content to a listener. To do this, you will need to +add a `` tag in the `` of the "child" feed that will contain a `` link to +the publisher feed. ### Example -The following example snippet shows a podcast feed produced by "AgileSet Media" that links to the publisher feed +The following example snippet shows a podcast feed produced by "AgileSet Media" that links to the publisher feed example above. ```xml @@ -93,7 +94,7 @@ example above. 469b403f-db2d-574c-9db9-96dbb3f6561c podcast - + <![CDATA[Runnin']]> @@ -102,4 +103,4 @@ example above. -``` \ No newline at end of file +``` diff --git a/docs/examples/transcripts/transcripts.md b/docs/examples/transcripts/transcripts.md index 9ed9ad2..2488e39 100644 --- a/docs/examples/transcripts/transcripts.md +++ b/docs/examples/transcripts/transcripts.md @@ -2,13 +2,13 @@ This is the initial spec for the podcast transcript format. There are four possible formats detailed below. -Some transcript implementations are done in-browser. [CORS headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) -are required to make these files available from other websites. [A CORS tester is available here](https://cors-test.codehappy.dev/), +Some transcript implementations are done in-browser. [CORS headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) +are required to make these files available from other websites. [A CORS tester is available here](https://cors-test.codehappy.dev/), to ensure that transcripts are available within browser-based players. -* **Want to support only one format?** WebVTT is used by Apple Podcasts for ingest, and also natively supported by web browsers. Because the WebVTT format is the most flexible, it's an ideal choice if you can only support one format. +- **Want to support only one format?** WebVTT is used by Apple Podcasts for ingest, and also natively supported by web browsers. Because the WebVTT format is the most flexible, it's an ideal choice if you can only support one format. -The examples given below are just for convenience. In production you should ensure you are conforming to the actual spec for each format as defined in its own documentation. +The examples given below are just for convenience. In production you should ensure you are conforming to the actual spec for each format as defined in its own documentation. ## WebVTT @@ -21,7 +21,8 @@ While there is no defined maximum line-length, to ensure that displaying WebVTT The full specification includes formatting features; these are typically not used in podcasting applications. #### Snippet: -``` + +```vtt WEBVTT 00:00:00.000 --> 00:00:05.000 @@ -46,13 +47,13 @@ And the enhanced monetization options are a game-changer. Couldn't agree more, Tom. The future looks bright. ``` -Example file: [example.vtt](example.vtt) +Example file: [example.vtt](example.vtt) #### Web browser support example This example code will add an audio player on a web page, and display the accompanying WebVTT file as the audio plays. (Note that this basic code will not show speaker names). -``` +```html