LiveStreams

یک منبع liveStream حاوی اطلاعاتی در مورد جریان ویدیویی است که شما در حال انتقال به YouTube هستید. این جریان محتوایی را فراهم می کند که برای کاربران YouTube پخش می شود. پس از ایجاد، یک منبع liveStream می تواند به یک یا چند منبع liveBroadcast متصل شود.

مواد و روش ها

API از روش های زیر برای منابع liveStreams پشتیبانی می کند:

list
فهرستی از جریان‌های ویدیویی را برمی‌گرداند که با پارامترهای درخواست API مطابقت دارند. اکنون آن را امتحان کنید .
insert
یک جریان ویدیویی ایجاد می کند. این استریم به شما امکان می‌دهد ویدیوی خود را به YouTube ارسال کنید، که سپس می‌تواند ویدیو را برای مخاطبان شما پخش کند. اکنون آن را امتحان کنید .
update
یک جریان ویدیویی را به روز می کند. اگر ویژگی هایی که می خواهید تغییر دهید نمی توانند به روز شوند، باید یک جریان جدید با تنظیمات مناسب ایجاد کنید. اکنون آن را امتحان کنید .
delete
یک جریان ویدیویی را حذف می کند. اکنون آن را امتحان کنید .

نمایندگی منابع

ساختار JSON زیر فرمت یک منبع liveStreams را نشان می دهد:

{
 
"kind": "youtube#liveStream",
 
"etag": etag,
 
"id": string,
 
"snippet": {
   
"publishedAt": datetime,
   
"channelId": string,
   
"title": string,
   
"description": string,
   
"isDefaultStream": boolean
 
},
 
"cdn": {
   
"ingestionType": string,
   
"ingestionInfo": {
     
"streamName": string,
     
"ingestionAddress": string,
     
"backupIngestionAddress": string
   
},
   
"resolution": string,
   
"frameRate": string
 
},
 
"status": {
   
"streamStatus": string,
   
"healthStatus": {
     
"status": string,
     
"lastUpdateTimeSeconds": unsigned long,
     
"configurationIssues": [
       
{
         
"type": string,
         
"severity": string,
         
"reason": string,
         
"description": string
       
}
     
]
   
}
 
},
 
"contentDetails": {
   
"closedCaptionsIngestionUrl": string,
   
"isReusable": boolean
 
}
}

خواص

جدول زیر ویژگی های ظاهر شده در این منبع را تعریف می کند:

خواص
kind string
نوع منبع API را مشخص می کند. مقدار youtube#liveStream خواهد بود.
etag etag
Etag این منبع
id string
شناسه ای که YouTube برای شناسایی منحصر به فرد جریان اختصاص می دهد.
snippet object
شی snippet حاوی جزئیات اولیه در مورد جریان، از جمله کانال، عنوان و توضیحات آن است.
snippet. publishedAt datetime
تاریخ و ساعتی که جریان ایجاد شد. مقدار در قالب ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ) مشخص شده است.
snippet. channelId string
شناسه‌ای که YouTube برای شناسایی منحصربه‌فرد کانالی که جریان را ارسال می‌کند، استفاده می‌کند.
snippet. title string
عنوان جریان مقدار باید بین 1 تا 128 کاراکتر باشد.
snippet. description string
توضیحات جریان مقدار نمی تواند بیشتر از 10000 کاراکتر باشد.
snippet. isDefaultStream boolean
این ویژگی در تاریخ 1 سپتامبر 2020 یا پس از آن منسوخ خواهد شد. در آن زمان، وقتی کانالی برای پخش زنده فعال شود، YouTube ایجاد یک جریان پیش‌فرض و پخش پیش‌فرض را متوقف می‌کند. لطفاً برای جزئیات بیشتر به اطلاعیه منسوخ شدن مراجعه کنید.
این ویژگی نشان می دهد که آیا این جریان، جریان پیش فرض کانال است یا خیر.

نحوه کار جریان های پیش فرض

هنگامی که یک کانال YouTube برای پخش زنده فعال است، YouTube یک جریان پیش فرض و یک پخش پیش فرض برای کانال ایجاد می کند. این استریم نحوه ارسال ویدیوی زنده توسط مالک کانال به یوتیوب را مشخص می‌کند و پخش به این صورت است که بینندگان چگونه می‌توانند جریان پیش‌فرض را ببینند. مالک کانال می‌تواند از روش‌های liveStreams.list و liveBroadcasts.list برای شناسایی این منابع استفاده کند.

جریان پیش‌فرض یک کانال به‌طور نامحدود وجود دارد، زمان شروع یا پایان مرتبط با آن ندارد و نمی‌توان آن را حذف کرد. مالک کانال فقط باید شروع به ارسال بیت های ویدیو کند و جریان به طور خودکار ادامه می یابد.

هنگامی که یک جریان به پایان می رسد، YouTube پخش کامل شده را به یک ویدیوی YouTube تبدیل می کند و به ویدیو یک شناسه ویدیوی YouTube اختصاص می دهد. پس از تکمیل تبدیل، ویدیو در لیست ویدیوهای آپلود شده کانال قرار می گیرد. این ویدئو بلافاصله پس از پایان پخش در دسترس نیست و مدت تاخیر مربوط به طول واقعی پخش است.
cdn object
شی cdn تنظیمات شبکه تحویل محتوای پخش زنده (CDN) را تعریف می کند. این تنظیمات جزئیاتی را در مورد نحوه پخش محتوای خود در YouTube ارائه می دهد.
cdn. format string
این دارایی از 18 آوریل 2016 منسوخ شده است و از 17 آگوست 2020 دیگر پشتیبانی نمی‌شود. درخواست‌هایی که تا آن تاریخ همچنان از این دارایی استفاده می‌کنند ناموفق خواهند بود.

در عوض، از ویژگی های cdn.frameRate و cdn.resolution برای تعیین نرخ فریم و وضوح به طور جداگانه استفاده کنید.
cdn. ingestionType string
روش یا پروتکل مورد استفاده برای انتقال جریان ویدئو.

مقادیر معتبر برای این ویژگی عبارتند از:
  • dash
  • hls
  • rtmp (که شامل RTMPS است)
cdn. ingestionInfo object
شی ingestionInfo حاوی اطلاعاتی است که YouTube ارائه می دهد و برای انتقال جریان خود به YouTube نیاز دارید.
cdn.ingestionInfo. streamName string
نام جریانی که YouTube به جریان ویدیو اختصاص می دهد.
cdn.ingestionInfo. ingestionAddress string
اگر از RTMP، DASH، یا HLS استفاده می‌کنید، نشانی اینترنتی انتقال اصلی که باید برای پخش جریانی ویدیو در YouTube استفاده کنید. شما باید ویدیو را به این URL پخش کنید.

بسته به اینکه از کدام برنامه یا ابزاری برای رمزگذاری جریان ویدیوی خود استفاده می کنید، ممکن است لازم باشد URL و نام جریان را به طور جداگانه وارد کنید یا ممکن است لازم باشد آنها را در قالب زیر به هم متصل کنید:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo. backupIngestionAddress string
نشانی اینترنتی انتقال پشتیبان که در صورت استفاده از RTMP، DASH یا HLS باید برای پخش جریانی ویدیو در YouTube استفاده کنید. شما این امکان را دارید که محتوایی را که به ingestionAddress ارسال می کنید به این URL به طور همزمان پخش کنید.
cdn.ingestionInfo. rtmpsIngestionAddress string
نشانی اینترنتی انتقال اصلی که در صورت استفاده از RTMPS باید برای پخش جریانی ویدیو در YouTube استفاده کنید. شما باید ویدیو را به این URL پخش کنید.

بسته به اینکه از کدام برنامه یا ابزاری برای رمزگذاری جریان ویدیوی خود استفاده می کنید، ممکن است لازم باشد URL و نام جریان را به طور جداگانه وارد کنید یا ممکن است لازم باشد آنها را در قالب زیر به هم متصل کنید:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo. rtmpsBackupIngestionAddress string
نشانی اینترنتی انتقال پشتیبان که در صورت استفاده از RTMPS باید برای پخش جریانی ویدیو در YouTube استفاده کنید.
cdn. resolution string
وضوح داده های ویدئویی ورودی.

مقادیر معتبر برای این ویژگی عبارتند از:
  • 240p
  • 360p
  • 480p
  • 720p
  • 1080p
  • 1440p
  • 2160p
  • variable : از این تنظیم برای نشان دادن اینکه YouTube باید به طور خودکار وضوح ویدیوی پخش شده شما را تشخیص دهد استفاده کنید. همچنین باید cdn.frameRate را روی variable تنظیم کنید.
    برای تنظیمات رمزگذار توصیه شده به مرکز راهنمایی YouTube مراجعه کنید.
cdn. frameRate string
نرخ فریم داده های ویدئویی ورودی.

مقادیر معتبر برای این ویژگی عبارتند از:
  • 30fps
  • 60fps
  • variable : از این تنظیم برای نشان دادن اینکه YouTube باید به طور خودکار نرخ فریم ویدیوی پخش شده شما را تشخیص دهد، استفاده کنید. همچنین باید cdn.resolution روی variable تنظیم کنید.
    برای تنظیمات رمزگذار توصیه شده به مرکز راهنمایی YouTube مراجعه کنید.
status object
شی status حاوی اطلاعاتی درباره وضعیت پخش زنده است.
status. streamStatus string
وضعیت جریان

مقادیر معتبر برای این ویژگی عبارتند از:
  • active - جریان در حالت فعال است، به این معنی که کاربر داده ها را از طریق جریان دریافت می کند.
  • created – جریان ایجاد شده است اما تنظیمات CDN معتبری ندارد.
  • error - یک شرط خطا در جریان وجود دارد.
  • inactive - جریان در حالت غیرفعال است که به این معنی است که کاربر داده ها را از طریق جریان دریافت نمی کند.
  • ready – جریان دارای تنظیمات CDN معتبر است.
status. healthStatus object
این شی حاوی اطلاعاتی درباره وضعیت سلامت پخش زنده است که می تواند برای شناسایی، تشخیص و حل مشکلات پخش استفاده شود.
status.healthStatus. status string
کد وضعیت این جریان.

مقادیر معتبر برای این ویژگی عبارتند از:
  • good - هیچ مشکلی در پیکربندی وجود ندارد که شدت آن warning یا بدتر باشد.
  • ok - هیچ مشکلی در پیکربندی وجود ندارد که شدت آن error باشد.
  • bad - جریان دارای مشکلاتی است که شدت آنها error است.
  • noData – سرورهای پخش زنده YouTube هیچ اطلاعاتی در مورد وضعیت سلامت جریان ندارند.
status.healthStatus. lastUpdateTimeSeconds unsigned long
آخرین باری که وضعیت سلامت جریان به‌روزرسانی شد. این مقدار یک مهر زمانی یونیکس را در چند ثانیه منعکس می کند.
status.healthStatus. configurationIssues[] list
این شی حاوی لیستی از مشکلات پیکربندی است که بر جریان تأثیر می گذارد.
status.healthStatus.configurationIssues[]. type string
نوع خطای مؤثر بر جریان را شناسایی می کند.
مشکلات پیکربندی
audioBitrateHigh
دلیل: تنظیمات صدا را بررسی کنید
شرح: نرخ بیت فعلی جریان صوتی %(actual) بالاتر از میزان بیت توصیه شده است. توصیه می کنیم از نرخ بیت جریان صوتی %(expected)s استفاده کنید.
audioBitrateLow
دلیل: تنظیمات صدا را بررسی کنید
شرح: نرخ بیت فعلی جریان صوتی (%(actual)s) کمتر از میزان بیت توصیه شده است. توصیه می کنیم از نرخ بیت جریان صوتی %(expected)s استفاده کنید.
audioBitrateMismatch
دلیل: جریان ثانویه را بررسی کنید
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو دارای نرخ بیت‌های صوتی متفاوتی هستند. باید جریان‌ها را طوری پیکربندی کنید که نرخ بیت صوتی یکسانی داشته باشند.
audioCodec
دلیل: تنظیمات صدا را بررسی کنید
شرح: جریان صوتی با یک کدک پشتیبانی نشده کدگذاری شده است. لطفاً کدک صوتی را برای پخش روی یک کدک پشتیبانی شده (AAC، MP3) تنظیم کنید.
audioCodecMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو از کدک‌های صوتی متفاوتی استفاده می‌کنند. شما باید جریان ها را برای استفاده از کدک صوتی یکسان پیکربندی کنید.
audioSampleRate
دلیل: تنظیمات صدا را بررسی کنید
شرح: نرخ نمونه فعلی %(actual) است. نرخ نمونه پیشنهادی 44.1 کیلوهرتز و 48 کیلوهرتز است.
audioSampleRateMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو دارای نرخ‌های نمونه صوتی متفاوتی هستند. شما باید جریان ها را طوری پیکربندی کنید که نرخ نمونه صوتی یکسانی داشته باشند.
audioStereoMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو از کانال‌های صوتی مختلفی استفاده می‌کنند. باید استریم ها را طوری پیکربندی کنید که کانال صوتی یکسانی داشته باشند.
audioTooManyChannels
دلیل: تنظیمات صدا را بررسی کنید
شرح: صدا بیش از دو کانال دارد، اما تنها یک کانال (مونو) یا دو (استریو) پشتیبانی می‌شود. لطفا تعداد کانال های صوتی را تصحیح کنید.
badContainer
دلیل: تنظیمات بد ویدیو
شرح: لطفاً قالب ظرف ویدیو را تغییر دهید. قالب فعلی ظرف برای این پیکربندی صحیح نیست.
bitrateHigh
دلیل: تنظیمات ویدیو را بررسی کنید
شرح: نرخ بیت فعلی جریان (%(actual)s) بالاتر از نرخ بیت توصیه شده است. توصیه می‌کنیم از نرخ بیت جریان %(expected)s استفاده کنید.
bitrateLow
دلیل: خروجی ویدیو کم است
شرح: نرخ بیت فعلی جریان (%(actual)s) کمتر از نرخ بیت توصیه شده است. توصیه می‌کنیم از نرخ بیت جریان %(expected)s استفاده کنید.
framerateMismatch
دلیل: جریان ثانویه را بررسی کنید
شرح: در پیکربندی فعلی، جریان اصلی و پشتیبان ویدیو دارای نرخ فریم متفاوتی هستند. باید استریم ها را طوری پیکربندی کنید که نرخ فریم یکسانی داشته باشند.
frameRateHigh
دلیل: فریم بالا
شرح: نرخ فریم فعلی خیلی بالاست. لطفاً نرخ فریم را روی %(framerate)s فریم در ثانیه یا کمتر تنظیم کنید.
gopMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو فرکانس‌های فریم کلیدی متفاوتی دارند. باید استریم ها را طوری پیکربندی کنید که فرکانس فریم کلیدی یکسانی داشته باشند.
gopSizeLong
دلیل: تنظیمات بد ویدیو
شرح: لطفاً از فرکانس فریم کلیدی چهار ثانیه یا کمتر استفاده کنید. در حال حاضر، فریم های کلیدی اغلب به اندازه کافی ارسال نمی شوند، که باعث بافر می شود. فرکانس فعلی فریم کلیدی %(actual_gop).1f ثانیه است. توجه داشته باشید که خطاهای دریافت می‌تواند باعث نادرست بودن اندازه‌های GOP (گروهی از تصاویر) شود.
gopSizeOver
دلیل: تنظیمات ویدیو را بررسی کنید
شرح: لطفاً از فرکانس فریم کلیدی چهار ثانیه یا کمتر استفاده کنید. در حال حاضر، فریم های کلیدی اغلب به اندازه کافی ارسال نمی شوند، که می تواند باعث بافر شود. فرکانس فعلی فریم کلیدی %(actual_gop).1f ثانیه است. توجه داشته باشید که خطاهای دریافت می‌تواند باعث نادرست بودن اندازه‌های GOP (گروهی از تصاویر) شود.
gopSizeShort
دلیل: تنظیمات ویدیو را بررسی کنید
شرح: اندازه GOP (گروه تصاویر) بسیار کوچک است که می تواند کیفیت تصویر را کاهش دهد. فرکانس پیشنهادی فریم کلیدی چهار ثانیه است. فرکانس فعلی فریم کلیدی %(actual_gop).1f ثانیه است. توجه داشته باشید که خطاهای بلع می تواند باعث اندازه نادرست GOP شود.
multipleAudioStreams
دلیل: تنظیمات صدا را بررسی کنید
شرح: جریان انتقال حاوی چند جریان صوتی است، اما باید فقط یک جریان صوتی داشته باشد.
multipleVideoStreams
دلیل: تنظیمات بد ویدیو
شرح: جریان انتقال حاوی چندین جریان ویدیویی است، اما باید فقط یک جریان ویدیویی داشته باشد.
noAudioStream
دلیل: بی صدا
شرح: جریان دریافتی حاوی هیچ جریان صوتی نیست، اما باید دقیقاً یک جریان صوتی داشته باشد.
noVideoStream
دلیل: ویدیویی وجود ندارد
شرح: جریان انتقال حاوی هیچ جریان ویدیویی نیست، اما باید دقیقاً یک جریان ویدیویی داشته باشد.
openGop
دلیل: تنظیمات بد ویدیو
شرح: لطفاً پیکربندی رمزگذار ویدیوی خود را به "گروه بسته تصاویر (GOP) تغییر دهید. به نظر می رسد روی "open GOP" تنظیم شده است که YouTube از آن پشتیبانی نمی کند.
resolutionMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان اصلی و پشتیبان ویدیو دارای وضوح‌های متفاوتی هستند. باید استریم ها را طوری پیکربندی کنید که وضوح یکسانی داشته باشند.
videoBitrateMismatch
دلیل: جریان ثانویه را بررسی کنید
شرح: در پیکربندی فعلی، جریان های اصلی و پشتیبان ویدیو دارای نرخ بیت متفاوتی هستند. باید جریان‌ها را طوری پیکربندی کنید که نرخ بیت یکسانی داشته باشند.
videoCodec
دلیل: تنظیمات بد ویدیو
شرح: ویدیو با یک کدک پشتیبانی نشده کدگذاری شده است. لطفاً کدک ویدیوی پخش جریانی را روی یک کدک پشتیبانی شده (H.264) تنظیم کنید.
videoCodecMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو از کدک‌های ویدیویی متفاوتی استفاده می‌کنند. باید استریم ها را طوری پیکربندی کنید که کدک های ویدیویی یکسانی داشته باشند.
videoIngestionStarved
دلیل: خروجی ویدیو کم است
شرح: YouTube ویدئوی کافی برای حفظ جریان روان را دریافت نمی کند. به این ترتیب، بینندگان بافر را تجربه خواهند کرد.
videoInterlaceMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو دارای ترکیب‌های متفاوتی هستند. شما باید استریم ها را طوری پیکربندی کنید که در هم آمیختگی یکسانی داشته باشند.
videoProfileMismatch
دلیل: جریان ثانویه بد
شرح: در پیکربندی فعلی، جریان‌های اصلی و پشتیبان ویدیو نمایه‌های متفاوتی دارند. باید استریم ها را طوری پیکربندی کنید که نمایه یکسانی داشته باشند.
videoResolutionSuboptimal
دلیل: وضوح را بررسی کنید
شرح: لطفا وضوح ویدیو را بررسی کنید. وضوح فعلی (%(actual_w)dx%(actual_h)d) است که بهینه نیست.
videoResolutionUnsupported
دلیل: وضوح پشتیبانی نشده
شرح: باید وضوح ویدیو را تغییر دهید. وضوح فعلی (%(actual_w)dx%(actual_h)d) است که برای این پیکربندی پشتیبانی نمی‌شود. وضوح تصویر مورد انتظار (%(expected_w)dx%(expected_h)d) است.
status.healthStatus.configurationIssues[]. severity string
نشان می دهد که این مشکل چقدر برای جریان است.

مقادیر معتبر برای این ویژگی عبارتند از:
  • info - این ویدیو برای بینندگان پخش می شود بدون اینکه تأثیر منفی روی عملکرد داشته باشد.
  • warning - ویدیو برای بینندگان پخش می شود، اما عملکرد مطلوب نیست.
  • error - ویدیو را نمی توان برای بینندگان پخش کرد.
status.healthStatus.configurationIssues[]. reason string
شرح مختصری از موضوع. سند Configuration Issues for LiveStream Resources دلیل مرتبط با هر نوع مشکل پیکربندی را مشخص می کند.
status.healthStatus.configurationIssues[]. description string
شرح مفصلی از موضوع. در صورت امکان، توضیحات اطلاعاتی در مورد نحوه حل مشکل ارائه می دهد. سند Configuration Issues for LiveStream Resources همه انواع مشکلات پیکربندی و توضیحات مربوط به آنها را فهرست می کند.
contentDetails object
شیء content_details حاوی اطلاعاتی درباره جریان است، از جمله نشانی اینترنتی دریافت زیرنویس‌های بسته.
contentDetails. closedCaptionsIngestionUrl string
نشانی اینترنتی انتقال که در آن شرح‌های بسته این جریان ارسال می‌شود.
contentDetails. isReusable boolean
نشان می دهد که آیا جریان قابل استفاده مجدد است یا خیر، به این معنی که می توان آن را به چندین پخش متصل کرد. اگر پخش در زمان‌های مختلف اتفاق بیفتد، معمولاً پخش‌کننده‌ها از یک جریان برای بسیاری از پخش‌های مختلف استفاده مجدد می‌کنند.

اگر این مقدار را روی false تنظیم کنید، جریان قابل استفاده مجدد نخواهد بود، به این معنی که فقط می‌توان آن را به یک پخش متصل کرد. جریان‌های غیرقابل استفاده مجدد به روش‌های زیر با جریان‌های قابل استفاده مجدد متفاوت هستند:
  • یک جریان غیرقابل استفاده مجدد فقط می تواند به یک پخش متصل شود.
  • یک جریان غیرقابل استفاده مجدد ممکن است با یک فرآیند خودکار پس از پایان پخش حذف شود.
  • اگر متد را فراخوانی کنید و پارامتر mine را روی true تنظیم کنید، روش liveStreams.list جریان‌های غیرقابل استفاده مجدد را فهرست نمی‌کند. تنها راه استفاده از آن روش برای بازیابی منبع برای یک جریان غیرقابل استفاده مجدد، استفاده از پارامتر id برای شناسایی جریان است.