@mux/ai 0.13.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1087,6 +1087,13 @@ async function getThumbnailUrls(playbackId, duration, options = {}) {
1087
1087
  return Promise.all(urlPromises);
1088
1088
  }
1089
1089
 
1090
+ // src/lib/mux-assets.ts
1091
+ function isAudioOnlyAsset(asset) {
1092
+ const hasAudioTrack = asset.tracks?.some((track) => track.type === "audio") ?? false;
1093
+ const hasVideoTrack = asset.tracks?.some((track) => track.type === "video") ?? false;
1094
+ return hasAudioTrack && !hasVideoTrack;
1095
+ }
1096
+
1090
1097
  // src/primitives/transcripts.ts
1091
1098
  function getReadyTextTracks(asset) {
1092
1099
  return (asset.tracks || []).filter(
@@ -1098,11 +1105,20 @@ function findCaptionTrack(asset, languageCode) {
1098
1105
  if (!tracks.length)
1099
1106
  return void 0;
1100
1107
  if (!languageCode) {
1101
- return tracks[0];
1108
+ const englishTrack = tracks.find(
1109
+ (track) => track.text_type === "subtitles" && track.language_code === "en"
1110
+ );
1111
+ return englishTrack ?? tracks[0];
1102
1112
  }
1103
- return tracks.find(
1113
+ const languageMatch = tracks.find(
1104
1114
  (track) => track.text_type === "subtitles" && track.language_code === languageCode
1105
1115
  );
1116
+ if (languageMatch)
1117
+ return languageMatch;
1118
+ if (isAudioOnlyAsset(asset) && tracks.length === 1) {
1119
+ return tracks[0];
1120
+ }
1121
+ return void 0;
1106
1122
  }
1107
1123
  function normalizeLineEndings(value) {
1108
1124
  return value.replace(/\r\n/g, "\n");