במדריך הזה מתוארת התכונה 'אפשרויות נתמכות במניפסט' של Video Stitcher API. כך אפשר להתאים אישית את מניפסט הסרטון המחובר. אפשרויות המניפסט מוגדרות בבקשה ליצירת סשן. מידע נוסף:
- ניהול סשן בשידור חי
- ניהול סשן בשידור חי שהופעל על ידי Google Ad Manager
- ניהול סשן VOD
- ניהול סשן VOD שמופעל על ידי Google Ad Manager
לפני שמתחילים
חשוב להכיר את מושגי המבוא והטרמינולוגיה של Video Stitcher API. מידע נוסף מופיע בסקירה הכללית הטכנית.
מבוא
כברירת מחדל, קובץ המניפסט של הסרטון המחובר יכיל את אותן גרסאות רינדור של המדיה כמו קובץ המניפסט של סרטון המקור. מניפסט המקור יכול להכיל כמה גרסאות של מדיה שלא כל הנגנים יכולים להפעיל. לדוגמה, סרטון מקודד יכול להכיל קודקים של וידאו H.264 ו-H.265, אבל נגן במכשיר מסוים יכול להפעיל רק H.264.
אם מציינים אילו קודקים או קצבי העברת נתונים (bitrate) לכלול במניפסט הווידאו, אפשר לציין אילו עיבודים של הווידאו יוצגו במניפסט הווידאו המחובר.
אפשרויות למניפסט
אובייקט ManifestOptions מספק כמה אפשרויות להתאמה אישית של מניפסט הסרטון המחובר.
HLS
אפשר להתאים אישית את ההגדרות הבאות למניפסטים של סרטוני HLS שחוברו:
- סינון לפי קודקים
- הכללה של רזולוציות מסוימות של סרטונים בלבד
- הכללה רק של קצבי פריימים מסוימים
- הכללה של קצבי העברת נתונים מסוימים בלבד
- סדר העיבוד של הסרטונים
בקטעים הבאים נניח את מניפסט סרטון המקור הבא:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/hd/index.m3u8
סינון לפי קודקים
כדי לסנן את עיבוד הווידאו לפי קודקים, מגדירים את הקודקים בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק H.264 במניפסט המצורף, מגדירים את הקודק במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "codecs": "avc1.42e00a,mp4a.40.2", }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
הכללה של רזולוציות מסוימות של סרטונים בלבד
כדי לסנן את העיבוד של הסרטון לפי רזולוציית הסרטון, מגדירים את רזולוציית הסרטון בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק את רזולוציות הווידאו 1920x1080 ו-640x360 במניפסט המאוחד, צריך להגדיר את רזולוציות הווידאו במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "videoResolution": { "widthPixels": 1920, "heightPixels": 1080, }, }, { "videoResolution": { "widthPixels": 640, "heightPixels": 360, }, }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
הכללה רק של קצבי פריימים מסוימים
כדי לסנן עיבוד של סרטון לפי קצב פריימים, מגדירים את קצב הפריימים בשדה manifestOptions האופציונלי כשיוצרים סשן. לדוגמה, כדי להציג רק את קצבי הפריימים 25.0 במניפסט המאוחד, צריך להגדיר את קצב הפריימים במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "frameRate": 25.0 }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
הכללה של קצבי העברת נתונים מסוימים בלבד
כדי לסנן את העיבוד של הסרטון לפי קצב העברת נתונים (bitrate), מגדירים את קצב העברת הנתונים בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק שני קצבי העברת נתונים במניפסט המאוחד, מגדירים את קצבי העברת הנתונים במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 440000, }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
סידור לפי קצב העברת נתונים
יכול להיות שחלק מהנגנים רגישים לסדר של גרסאות העיבוד של הסרטון. אפשר להגדיר את סדר הגרסאות של הסרטון ל-ascending או ל-descending, כמו בדוגמה הבאה:
{ "manifestOptions": { "bitrateOrder": "ascending", }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
DASH
אפשר להתאים אישית את האפשרויות הבאות למניפסטים של סרטוני DASH שחוברו:
- סינון לפי קודקים
- הכללה של רזולוציות מסוימות של סרטונים בלבד
- הכללה רק של קצבי פריימים מסוימים
- הכללה של קצבי העברת נתונים מסוימים בלבד
- סדר העיבוד של הסרטונים
בקטעים הבאים נניח את מניפסט סרטון המקור הבא:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
סינון לפי קודקים
כדי לסנן את עיבוד הווידאו לפי קודקים, מגדירים את הקודקים בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק H.264 במניפסט המצורף, מגדירים את הקודק במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "codecs": "hvc1.1.4.L126.B0", }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
הכללה של רזולוציות מסוימות של סרטונים בלבד
כדי לסנן את העיבוד של הסרטון לפי רזולוציית הסרטון, מגדירים את רזולוציית הסרטון בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק רזולוציות של סרטון 640x360 במניפסט המחובר, צריך להגדיר את רזולוציית הסרטון במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "videoResolution": { "widthPixels": 640, "heightPixels": 360, }, }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
הכללה רק של קצבי פריימים מסוימים
כדי לסנן עיבוד של סרטון לפי קצב פריימים, מגדירים את קצב הפריימים בשדה manifestOptions האופציונלי כשיוצרים סשן. לדוגמה, כדי להציג רק את קצב הפריימים 25.0 במניפסט המחובר, מגדירים את קצב הפריימים במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "frameRate": 25.0 }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
הכללת קצבי העברת נתונים מסוימים
כדי לסנן את העיבוד של הסרטון לפי קצב העברת נתונים (bitrate), מגדירים את קצב העברת הנתונים בשדה האופציונלי manifestOptions כשיוצרים סשן. לדוגמה, כדי להציג רק שני קצבי העברת נתונים במניפסט המאוחד, מגדירים את קצבי העברת הנתונים במערך includeRenditions:
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 240000, }, ], }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
סידור לפי קצב העברת נתונים
יכול להיות שחלק מהנגנים רגישים לסדר של גרסאות העיבוד של הסרטון. אפשר להגדיר את סדר הגרסאות של הסרטון ל-ascending או ל-descending, כמו בדוגמה הבאה:
{ "manifestOptions": { "bitrateOrder": "descending", }, }
הפרטים הבאים יוצגו במניפסט המאוחד:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>