LiveStreams

Tài nguyên liveStream chứa thông tin về luồng video mà bạn đang truyền đến YouTube. Luồng cung cấp nội dung sẽ được phát đến người dùng YouTube. Sau khi được tạo, một tài nguyên liveStream có thể được liên kết với một hoặc nhiều tài nguyên liveBroadcast.

Phương pháp

API hỗ trợ các phương thức sau cho tài nguyên liveStreams:

list
Trả về danh sách luồng video khớp với thông số yêu cầu API. Thử ngay.
chèn
Tạo luồng video. Luồng phát cho phép bạn gửi video đến YouTube để có thể phát video đó cho khán giả. Thử ngay.
cập nhật
Cập nhật luồng video. Nếu không thể cập nhật các thuộc tính mà bạn muốn thay đổi thì bạn cần phải tạo một luồng mới có chế độ cài đặt phù hợp. Thử ngay.
xóa
Xoá luồng video. Thử ngay.

Biểu diễn tài nguyên

Cấu trúc JSON sau đây cho thấy định dạng của tài nguyên 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
 
}
}

Thuộc tính

Bảng sau đây xác định các thuộc tính xuất hiện trong tài nguyên này:

Thuộc tính
kind string
Xác định loại tài nguyên API. Giá trị sẽ là youtube#liveStream.
etag etag
Etag của tài nguyên này.
id string
Mã nhận dạng mà YouTube gán để nhận dạng duy nhất luồng.
snippet object
Đối tượng snippet chứa thông tin cơ bản về luồng, bao gồm kênh, tiêu đề và nội dung mô tả.
snippet.publishedAt datetime
Ngày và giờ tạo sự kiện trực tiếp. Giá trị này được chỉ định ở định dạng ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.channelId string
Mã nhận dạng mà YouTube sử dụng để nhận dạng duy nhất kênh đang truyền luồng.
snippet.title string
Tiêu đề của sự kiện trực tiếp. Giá trị phải dài từ 1 đến 128 ký tự.
snippet.description string
Phần mô tả của luồng. Giá trị này không được dài hơn 10.000 ký tự.
snippet.isDefaultStream boolean
Thuộc tính này sẽ ngừng hoạt động từ hoặc sau ngày 1 tháng 9 năm 2020. Tại thời điểm đó, YouTube sẽ ngừng tạo sự kiện phát trực tiếp mặc định và phát đi theo mặc định khi một kênh được bật tính năng phát trực tiếp. Vui lòng xem thông báo về việc ngừng cung cấp để biết thêm thông tin.
Thuộc tính này cho biết luồng này có phải là luồng mặc định cho kênh hay không.

Cách hoạt động của sự kiện phát trực tiếp mặc định

Khi một kênh YouTube được bật để phát trực tiếp, YouTube sẽ tạo một sự kiện phát trực tiếp mặc định và một chương trình phát sóng mặc định cho kênh đó. Luồng xác định cách chủ sở hữu kênh gửi video trực tiếp đến YouTube và chương trình phát sóng là cách người xem có thể xem luồng mặc định. Chủ sở hữu kênh có thể dùng các phương thức liveStreams.listliveBroadcasts.list để xác định những tài nguyên này.

Luồng mặc định của kênh tồn tại vô thời hạn, không có thời gian bắt đầu hoặc kết thúc và bị xoá. Chủ sở hữu kênh chỉ cần bắt đầu gửi các bit video và sự kiện phát trực tiếp sẽ tự động diễn ra.

Khi một sự kiện trực tiếp kết thúc, YouTube sẽ chuyển đổi video phát sóng hoàn chỉnh thành một video trên YouTube và gán cho video đó một mã video trên YouTube. Sau khi quá trình chuyển đổi hoàn tất, video sẽ được đưa vào danh sách video đã tải lên của kênh. Video sẽ không xuất hiện ngay sau khi chương trình phát sóng kết thúc và thời lượng trễ sẽ liên quan đến thời lượng thực tế của chương trình phát.
cdn object
Đối tượng cdn xác định chế độ cài đặt mạng phân phối nội dung (CDN) của sự kiện phát trực tiếp. Các chế độ này cung cấp thông tin chi tiết về cách bạn phát trực tiếp nội dung lên YouTube.
cdn.format string
Tài sản này không còn được dùng từ ngày 18 tháng 4 năm 2016 và sẽ không còn được hỗ trợ kể từ ngày 17 tháng 8 năm 2020. Các yêu cầu vẫn sử dụng thuộc tính này tính đến ngày đó sẽ không thực hiện được.

Thay vào đó, hãy sử dụng các thuộc tính cdn.frameRatecdn.resolution để chỉ định tốc độ khung hình và độ phân giải một cách riêng biệt.
cdn.ingestionType string
Phương thức hoặc giao thức dùng để truyền luồng video.

Các giá trị hợp lệ cho thuộc tính này là:
  • dash
  • hls
  • rtmp (bao gồm RTMPS)
cdn.ingestionInfo object
Đối tượng ingestionInfo chứa thông tin mà YouTube cung cấp rằng bạn cần truyền luồng của mình đến YouTube.
cdn.ingestionInfo.streamName string
Tên luồng mà YouTube chỉ định cho luồng video.
cdn.ingestionInfo.ingestionAddress string
URL truyền dẫn chính mà bạn nên sử dụng để truyền video lên YouTube nếu sử dụng RTMP, DASH hoặc HLS. Bạn phải truyền video trực tuyến đến URL này.

Tùy thuộc vào ứng dụng hoặc công cụ bạn sử dụng để mã hoá luồng video, bạn có thể cần nhập URL và luồng luồng riêng biệt hoặc có thể bạn cần nối các định dạng đó theo định dạng sau:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.backupIngestionAddress string
URL truyền dẫn dự phòng mà bạn nên dùng để phát video lên YouTube nếu sử dụng RTMP, DASH hoặc HLS. Bạn có thể chọn phát trực tuyến nội dung mà bạn đang gửi đến ingestionAddress cho URL này.
cdn.ingestionInfo.rtmpsIngestionAddress string
URL truyền dẫn chính mà bạn nên sử dụng để truyền video lên YouTube nếu sử dụng RTMPS. Bạn phải truyền trực tuyến video đến URL này.

Tùy thuộc vào ứng dụng hoặc công cụ bạn sử dụng để mã hóa luồng video của mình, bạn có thể cần nhập URL và tên luồng phát riêng biệt hoặc có thể cần nối các định dạng đó theo định dạng sau:
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.rtmpsBackupIngestionAddress string
URL truyền dẫn dự phòng mà bạn nên dùng để phát video lên YouTube nếu sử dụng RTMPS.
cdn.resolution string
Độ phân giải của dữ liệu video đến.

Các giá trị hợp lệ cho thuộc tính này là:
  • 240p
  • 360p
  • 480p
  • 720p
  • 1080p
  • 1440p
  • 2160p
  • variable: Sử dụng chế độ cài đặt này để cho biết rằng YouTube sẽ tự động phát hiện độ phân giải của video phát trực tiếp. Bạn cũng phải đặt cdn.frameRate thành variable.
    Hãy truy cập vào Trung tâm trợ giúp YouTube để xem các chế độ cài đặt bộ mã hoá đề xuất.
cdn.frameRate string
Tốc độ khung hình của dữ liệu video đến.

Các giá trị hợp lệ cho thuộc tính này là:
  • 30fps
  • 60fps
  • variable: Sử dụng chế độ cài đặt này để cho biết rằng YouTube sẽ tự động phát hiện tốc độ khung hình của video phát trực tiếp. Bạn cũng phải đặt cdn.resolution thành variable.
    Hãy truy cập vào Trung tâm trợ giúp YouTube để xem các chế độ cài đặt bộ mã hoá đề xuất.
status object
Đối tượng status chứa thông tin về trạng thái của sự kiện phát trực tiếp.
status.streamStatus string
Trạng thái của luồng.

Các giá trị hợp lệ cho tài sản này là:
  • active – Luồng ở trạng thái đang hoạt động, nghĩa là người dùng này đang nhận dữ liệu qua luồng.
  • created – Luồng đã được tạo nhưng chưa có tùy chọn cài đặt CDN hợp lệ.
  • error – Tình trạng lỗi tồn tại trên luồng.
  • inactive – Luồng ở trạng thái không hoạt động, tức là người dùng không nhận được dữ liệu qua luồng.
  • ready – Luồng có các tùy chọn cài đặt CDN hợp lệ.
status.healthStatus object
Đối tượng này chứa thông tin về tình trạng sức khỏe của buổi phát trực tiếp. Thông tin này có thể được dùng để xác định, chẩn đoán và giải quyết các vấn đề liên quan đến việc phát trực tiếp.
status.healthStatus.status string
Mã trạng thái của luồng này.

Các giá trị hợp lệ cho tài sản này là:
  • good – Không có vấn đề về cấu hình, trong đó mức độ nghiêm trọng từ warning trở xuống.
  • ok – Không có vấn đề về cấu hình, trong đó mức độ nghiêm trọngerror.
  • bad – Luồng có một số vấn đề, trong đó mức độ nghiêm trọngerror.
  • noData – Các máy chủ phụ trợ phát trực tiếp của YouTube không có thông tin nào về tình trạng sức khỏe của sự kiện trực tiếp đó.
status.healthStatus.lastUpdateTimeSeconds unsigned long
Lần gần đây nhất mà hệ thống cập nhật trạng thái hoạt động của luồng. Giá trị này phản ánh dấu thời gian UNIX tính bằng giây.
status.healthStatus.configurationIssues[] list
Đối tượng này chứa danh sách các vấn đề về cấu hình ảnh hưởng đến luồng.
status.healthStatus.configurationIssues[].type string
Xác định loại lỗi ảnh hưởng đến luồng.
Các vấn đề về chế độ cấu hình
audioBitrateHigh
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Tốc độ bit hiện tại của luồng âm thanh %(actual) cao hơn tốc độ bit đề xuất. Bạn nên dùng tốc độ bit là %(expected)s cho luồng âm thanh.
audioBitrateLow
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Tốc độ bit hiện tại của luồng âm thanh (%(actual)s) thấp hơn tốc độ nên dùng. Bạn nên dùng tốc độ bit là %(expected)s cho luồng âm thanh.
audioBitrateMismatch
Lý do:Kiểm tra luồng thứ hai
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có tốc độ bit âm thanh khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng tốc độ bit âm thanh.
audioCodec
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Luồng âm thanh được mã hóa bằng một bộ giải mã không được hỗ trợ. Vui lòng cài đặt một bộ giải mã được hỗ trợ (AAC, MP3) cho âm thanh của luồng.
audioCodecMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video sử dụng codec âm thanh khác nhau. Bạn cần phải định cấu hình các luồng tiếp để sử dụng cùng bộ mã hoá và giải mã âm thanh.
audioSampleRate
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Tốc độ lấy mẫu hiện tại là %(actual). Tốc độ lấy mẫu đề xuất là 44,1 kHz và 48 kHz.
audioSampleRateMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có tốc độ lấy mẫu âm thanh khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng tốc độ lấy mẫu âm thanh.
audioStereoMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Ở cấu hình hiện tại, luồng chính và luồng dự phòng của video sử dụng các kênh âm thanh khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng kênh âm thanh.
audioTooManyChannels
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Âm thanh có nhiều hơn hai kênh, nhưng chỉ hỗ trợ một kênh (đơn âm) hoặc hai kênh (âm thanh nổi). Vui lòng sửa số lượng kênh âm thanh.
badContainer
Lý do:Cài đặt video không đúng
Nội dung mô tả:Vui lòng thay đổi định dạng vùng chứa của video. Định dạng vùng chứa hiện tại không chính xác cho cấu hình này.
bitrateHigh
Lý do:Kiểm tra cài đặt video
Nội dung mô tả:Tốc độ bit hiện tại của luồng (%(actual)s) cao hơn tốc độ bit đề xuất. Bạn nên dùng tốc độ bit là %(expected)s cho luồng.
bitrateLow
Lý do:Đầu ra video thấp
Nội dung mô tả:Tốc độ bit hiện tại của luồng (%(actual)s) thấp hơn tốc độ nên dùng. Bạn nên dùng tốc độ bit là %(expected)s cho luồng.
framerateMismatch
Lý do:Kiểm tra luồng thứ hai
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có tốc độ khung hình khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng tốc độ khung hình.
frameRateHigh
Lý do:Tốc độ khung hình cao
Nội dung mô tả:Tốc độ khung hình hiện tại quá cao. Vui lòng đặt tốc độ khung hình thành %(framerate)s khung hình/giây hoặc thấp hơn.
gopMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có tần suất khung hình chính khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng tần suất khung hình chính.
gopSizeLong
Lý do:Cài đặt video không đúng
Nội dung mô tả:Vui lòng sử dụng tần suất khung hình chính từ 4 giây trở xuống. Hiện tại, khung hình chính không được gửi đủ thường xuyên, điều này sẽ gây nên hiện tượng giật. Tần suất của khung hình chính hiện tại là %(actual_gop).1f giây. Xin lưu ý rằng lỗi truyền dẫn có thể khiến GOP (nhóm hình ảnh) có kích thước sai.
gopSizeOver
Lý do:Kiểm tra cài đặt video
Nội dung mô tả:Vui lòng sử dụng tần suất khung hình chính từ 4 giây trở xuống. Hiện tại, các khung hình chính không được gửi đủ thường xuyên nên có thể gây ra hiện tượng giật. Tần suất của khung hình chính hiện tại là %(actual_gop).1f giây. Xin lưu ý rằng lỗi truyền dẫn có thể khiến GOP (nhóm hình ảnh) có kích thước sai.
gopSizeShort
Lý do:Kiểm tra cài đặt video
Nội dung mô tả:Kích thước GOP (nhóm hình ảnh) rất nhỏ nên có thể làm giảm chất lượng hình ảnh. Bốn giây là tần suất khung hình chính mà bạn nên dùng. Tần suất của khung hình chính hiện tại là %(actual_gop).1f giây. Xin lưu ý rằng lỗi truyền dẫn có thể khiến GOP có kích thước sai.
multipleAudioStreams
Lý do:Kiểm tra cài đặt âm thanh
Nội dung mô tả:Luồng truyền dẫn chứa nhiều luồng âm thanh, nhưng luồng truyền dẫn chỉ được chứa một luồng âm thanh.
multipleVideoStreams
Lý do:Cài đặt video không đúng
Nội dung mô tả:Luồng truyền dẫn chứa nhiều luồng video, nhưng luồng truyền dẫn chỉ được chứa một luồng video.
noAudioStream
Lý do:Không có âm thanh
Nội dung mô tả:Luồng truyền dẫn không chứa bất kỳ luồng âm thanh nào nhưng luồng truyền dẫn phải chứa chính xác một luồng âm thanh.
noVideoStream
Lý do:Không có video
Nội dung mô tả:Luồng truyền dẫn không chứa bất kỳ luồng video nào nhưng luồng truyền dẫn phải chứa chính xác một luồng video.
openGop
Lý do:Cài đặt video không đúng
Nội dung mô tả:Vui lòng thay đổi cấu hình bộ mã hoá video của bạn thành "nhóm hình ảnh (GOP) đã đóng". Có vẻ như video đó đã được đặt thành "GOP mở" mà YouTube không hỗ trợ.
resolutionMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có độ phân giải khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng độ phân giải.
videoBitrateMismatch
Lý do:Kiểm tra luồng thứ hai
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có tốc độ bit khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng tốc độ bit video.
videoCodec
Lý do:Cài đặt video không đúng
Nội dung mô tả:Video được mã hóa bằng codec không được hỗ trợ. Vui lòng đặt codec video cho luồng thành codec được hỗ trợ (H.264).
videoCodecMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video sử dụng codec video khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng codec video.
videoIngestionStarved
Lý do:Đầu ra video thấp
Nội dung mô tả:YouTube không nhận đủ video để duy trì phát trực tuyến mượt mà. Do đó, người xem sẽ cảm thấy video lưu vào bộ đệm.
videoInterlaceMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có chế độ xen kẽ khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng chế độ xen kẽ.
videoProfileMismatch
Lý do:Luồng thứ hai không đúng
Nội dung mô tả:Trong cấu hình hiện tại, luồng chính và luồng dự phòng của video có hồ sơ khác nhau. Bạn cần phải định cấu hình các luồng tiếp để có cùng cấu hình.
videoResolutionSuboptimal
Lý do:Kiểm tra độ phân giải
Nội dung mô tả:Vui lòng kiểm tra độ phân giải của video. Độ phân giải hiện tại là (%(actual_w)dx%(actual_h)d) nên không tối ưu.
videoResolutionUnsupported
Lý do:Độ phân giải không được hỗ trợ
Nội dung mô tả:Bạn cần thay đổi độ phân giải video. Độ phân giải hiện tại là (%(actual_w)dx%(actual_h)d) nên không được hỗ trợ cho cấu hình này. Độ phân giải video phù hợp là (%(expected_w)dx%(expected_h)d).
status.healthStatus.configurationIssues[].severity string
Cho biết mức độ nghiêm trọng của vấn đề đối với luồng.

Các giá trị hợp lệ cho thuộc tính này là:
  • info – Video được phát cho người xem mà không ảnh hưởng xấu đến hiệu suất.
  • warning – Video được phát cho người xem nhưng hiệu suất không tối ưu.
  • error – Không thể phát video cho người xem.
status.healthStatus.configurationIssues[].reason string
Thông tin mô tả ngắn gọn về vấn đề này. Tài liệu về Vấn đề cấu hình cho tài nguyên phát trực tiếp xác định lý do liên quan đến từng loại vấn đề về cấu hình.
status.healthStatus.configurationIssues[].description string
Thông tin mô tả chi tiết về vấn đề. Khi có thể, mô tả cung cấp thông tin về cách giải quyết vấn đề. Tài liệu về Vấn đề về cấu hình cho tài nguyên phát trực tiếp liệt kê tất cả các loại vấn đề về cấu hình và nội dung mô tả liên quan.
contentDetails object
Đối tượng content_details chứa thông tin về luồng, bao gồm cả URL truyền dẫn phụ đề.
contentDetails.closedCaptionsIngestionUrl string
URL truyền dẫn nơi phụ đề của sự kiện này được gửi đến.
contentDetails.isReusable boolean
Cho biết luồng có thể sử dụng lại hay không, có nghĩa là luồng có thể liên kết với nhiều thông báo. Thông thường, các đài truyền hình có thể sử dụng lại cùng một luồng cho nhiều chương trình phát sóng nếu những chương trình đó xuất hiện vào những thời điểm khác nhau.

Nếu bạn đặt giá trị này là false, thì luồng sẽ không thể tái sử dụng, tức là luồng chỉ có thể được liên kết với một chương trình phát sóng. Luồng không thể tái sử dụng khác với luồng có thể sử dụng lại ở những điểm sau:
  • Một luồng không thể tái sử dụng chỉ có thể được liên kết với một chương trình phát sóng.
  • Một sự kiện phát trực tiếp không thể sử dụng lại có thể bị một quy trình tự động xoá sau khi chương trình phát sóng kết thúc.
  • Phương thức liveStreams.list không liệt kê các luồng không thể tái sử dụng nếu bạn gọi phương thức này và đặt thông số mine thành true. Cách duy nhất để sử dụng phương thức đó nhằm truy xuất tài nguyên cho một luồng không thể tái sử dụng là sử dụng tham số id để xác định luồng.