Mẫu Segment

Một phần của tài liệu đồ án mpeg dash – chuẩn công nghệ mới nhất hỗ trợ streaming thích ứng động qua http (Trang 50 - 56)

Mẫu Segment được định nghĩa bởi phần tử SegmentTemplate. Trong trường hợp này, định danh cụ thể được thay thế bằng giá trị động được chỉ định để Segment, để tạo ra một danh sách các Segment.

Bảng 2.9. Ngữ nghĩa của phần tử SegmentTemplate Tên phần tử hoặc

thuộc tính

Sử dụng Mô tả

SegmentTemplate Chỉ định thông tin mẫu Segment.

MultipleSegment BaseInformation

Cung cấp cho Multiple Segment nhiều thông tin cơ bản.

@media O Chỉ định mẫu được tạo bởi Media Segment List.

@index O Xác định các mẫu để tạo ra các danh sách Index Segment. Nếu không $Number$ cũng không phải nhận dạng $Time$, điều này cung cấp các URL một chỉ số

Representation (Representation Index). @initialization O Xác định các mẫu để tạo ra các

Initialization Segment. Không $Number$ nhận dạng $Time$ cũng không được bao gồm.

@bitstreamSwitching O Xác định các mẫu để tạo ra các Bitstream Switching Segment. Không $Number$ cũng không phải nhận dạng $Time$ được bao gồm.

Chú thích:

CM=Conditionally Mandatory (điều kiện bắt buột) Các phần tử: <minOccurs>...<maxOccurs> (N=unbounded)

Phần tử tô đậm; thuộc tính là không tô đậm và đi trước là một @.

Cấu trúc XML

<!-- Segment Template -->

<xs:complexType name="SegmentTemplateType">

<xs:complexContent>

<xs:extension base="MultipleSegmentBaseType">

<xs:attribute name="media" type="xs:string"/>

<xs:attribute name="index" type="xs:string"/>

<xs:attribute name="initialization" type="xs:string" />

<xs:attribute name="bitstreamSwitching" type="xs:string" />

</xs:extension>

</xs:complexContent> </xs:complexType>

Template-based Segment URL construction

Mỗi thuộc tính SegmentTemplate@media, SegmentTemplate@index, thuộc tính

SegmentTemplate@initialization và thuộc tính

SegmentTemplate@bitstreamSwitching chứa đựng 1 chuỗi mà có thể chứa đựng một hoặc nhiều định danh như đã liệt kê trong bảng 2.16.

Trong mỗi URL, các định danh từ Bảng 2.16 sẽ được thay thế bởi tham số thay thế quy định tại Bảng 2/16. Phù hợp với định danh là trường hợp nhạy cảm. Nếu URL có chứa $unescaped$ biểu tượng mà không kèm theo một định danh hợp lệ thì kết quả của sự hình thành URL là không xác định. Trong trường hợp này, đó là mong rằng các DASH Client bỏ qua các yếu tố Representation có chứa toàn bộ và chế biến của MPD tiếp tục, nhưng Representation đã không có mặt. Định dạng của các định danh cũng được quy định trong Bảng 2.16. (adsbygoogle = window.adsbygoogle || []).push({});

Mỗi định danh có thể được thêm hậu tố, bên trong ký tự ‘$’ kèm theo, với một thẻ định dạng bổ sung phù hợp với thẻ định dạng printf như được định nghĩa trong IEEE 1.003,1-2.008 [10] sau này mẫu thử nghiệm:

Các thông số width là một số nguyên không dấu cung cấp số lượng tối thiểu các ký tự được in. Nếu giá trị được in ngắn hơn con số này, kết quả sẽ được đệm bằng số không. Giá trị không được cắt ngắn ngay cả khi kết quả là lớn hơn.

Trình diễn đa phương tiện được giữ bản quyền tác giả, mà việc ứng dụng các kết quả trong quá trình thay thế trong Segment URLs hợp lệ.

Những chuỗi bên ngoài định danh chỉ được chứa các ký tự được cho phép trong URLs theo RFC 1738.

Bảng 2.10. Định danh cho mẫu URL

$<Định danh>$ Tham số thay đổi Định dạng

$$ Là một trình tự bỏ qua, tức là "$ $" được thay thế bằng một "$"

Không áp dụng.

$Representation ID$

Định danh này được thay thế bằng giá trị của các thuộc tính

Representation@id của

Representation chứa đựng

Các thẻ định dạng không được có mặt.

$Number$ Định danh này được thay thế bằng

number của Segment tương ứng.

Các thẻ định dạng không được có mặt. Nếu không định dạng thẻ có mặt, một thẻ định dạnh mặc định với width=1sẽ được sử dụng $Bandwidth$ Định danh này được thay thế với giá

trị của thuộc tính Representation@bandwidth. Các thẻ định dạng không được có mặt. Nếu không định dạng thẻ có mặt, một thẻ định dạnh mặc định với width=1sẽ được sử dụng.

$Time$ Định danh này được thay thế với giá trị của thuộc tính

SegmentTimeline@t cho Segment

được truy cập.

Mỗi $Number$ hoặc $Time$ có thể được sử dụng nhưng không dùng cả 2 trong cùng một thời điểm.

Các thẻ định dạng không được có mặt. Nếu không định dạng thẻ có mặt, một thẻ định dạnh mặc định với width=1sẽ được sử dụng. e) Segment information

Segment Information cung cấp các thông tin sau:

• Việc có hay không thông tin Iniitialization, Index and Bitstream Switching Segment.

• HTTP-URL và có thể là một byte cho mỗi Segment truy cập trong mỗi Representation,

• Tất cả các Segment URLs hợp lệ tuyên bố chứa MPD,

• Cho các dịch vụ với các MPD@type='dynamic', Segment sẵn sàng thời gian bắt đầu và thời gian kết thúc của mỗi Segment,

• Thời gian trình diễn đa phương tiện xấp xỉ thời gian bắt đầu của mỗi phân đoạn đa phương tiện bên trong khoảng thời gian trình diễn đa phương tiện.

Initialization Segment information

Mỗi Representation đã giao cho một Initialization Segment. (adsbygoogle = window.adsbygoogle || []).push({});

Sự hiện diện của Initialization Segment được chỉ định bởi sự hiện diện của SegmentBase.Initialization, SegmentList.Initialization.

Yếu tố SegmentTemplate.Initialization hoặc SegmentTemplate@initialization mà có thể chứa URL và thông tin phạm vi byte hoặc các quy định xây dựng URL cho Initialization Segment.

Nếu không phải là yếu tố Initialization cũng không phải thuộc tính SegmentTemplate@initialization có mặt cho một Representation. Sau đó mỗi phân đoạn đa phương tiện trong Representation phải tự khởi tạo.

Đối với các dịch vụ với MPD@type='dynamic', Segment sẵn sàng có thời gian bắt đầu cho Initialization Segment là tổng giá trị của MPD@availabilityStartTime và thời gian PeriodStart của Period chứa và Segment sẵn sang thời gian cho Initialization Segment là Segment lớn nhất, sẵn sàng kết thúc thời gian lớn nhất của

bất kỳ phân đoạn đa phương tiện ở Representation này. Cho Segment sẵn sàng của đa phương tiện.

Media Segment information

Mỗi trình diễn đã chỉ định một danh sách các phân đoạn đa phương tiện liên tiếp. Mỗi mục trong danh sách của một phân đoạn đa phương tiện đã giao cho các thông số sau:

• Một phân đoạn đa phương tiện URL hợp lệ và có thể một loạt byte, • Số lượng cho phân đoạn đa phương tiện trong một trình diễn,

• Thời gian bắt đầu MPD của phân đoạn đa phương tiện trong trình diễn cung cấp một thời gian trình bày bắt đầu gần đúng của phân đoạn này,

• MPD thời gian cho phân đoạn đa phương tiện cung cấp một thời gian trình bày gần đúng của phân đoạn này.

Các tham số này được quy định bởi các phần tử SegmentTemplate hoặc SegmentList. Để có được ít nhất một mục trong danh sách các Media Segments, một trong những điều sau đây sẽ được áp dụng:

• Nếu yếu tố SegmentTemplate xây dựng dựa trên Segment URL Mẫu trong Template-based Segment URL construction được áp dụng với số lượng Media Segment trong danh sách Media Segment. Con số đầu tiên trong danh sách được xác định bởi giá trị của các thuộc tính Segment Template@ startNumber nếu có, hoặc là 1 trong trường hợp thuộc tính này không phải là hiện tại.

• Nếu một hoặc nhiều yếu tố SegmentList có mặt chúng chứa chính chúng, một danh sách các yếu tố SegmentURL cho một danh sách liên tục của Media Segment URLs. Con số đầu tiên trong danh sách được xác định bằng giá trị của thuộc tính SegmentList@startNumber, nếu có, hoặc là 1 trong trường hợp thuộc tính này không phải là hiện tại. Trình tự của các yếu tố SegmentList nhiều lần trong một Representation được kết quả trong Media Segment List với những con số liên tiếp.

• Không có ở trên: Trong trường hợp này, chỉ có một Media Segment đơn sẽ có mặt với URL được cung cấp bởi một yếu tố BaseURL và các yếu tố SegmentBase có thể có mặt.

Thời gian bắt đầu MPD liên quan đến sự bắt đầu của Representation cung cấp bởi MPD. Thời gian bắt đầu MPD và thời gian MPD là gần đúng và không phản ánh thời gian Media Presentation.

Đối với nguồn gốc của thời gian bắt đầu MPD và thời gian của mỗi Media Segment trong danh sách các Media Segment, Số Media Segment và thông tin sau được sử dụng.

• Nếu không thuộc tính @duration cũng không phải yếu tố SegmentTimeline có mặt, sau đó là Representation cần có chứa chính xác một Media Segment. Thời gian bắt đầu MPD là 0 và thời gian MPD thu được trong cùng một cách như đối với Media Segment cuối cùng trong Representation.

• Nếu thuộc tính @duration có mặt, sau đó thời gian bắt đầu MPD của Media Segment được xác định như (Number-NumberStart-1) lần giá trị của thuộc tính @duration với NumberStart các giá trị của thuộc tính @startNumber. Thời gian MPD của Media Segment là giá trị của thuộc tính @duration, trừ khi cho Media Segment là mới nhất trong Representation.

• Nếu thuộc tính @duration không có mặt và các yếu tố SegmentTimeline có mặt sau đó áp dụng để xác định thời gian bắt đầu và thời gian của mỗi Media Segment trong danh sách Media Segment.

• Để xác định thời gian của duy nhất hoặc Media Segment cuối cùng của bất kỳ Representation trong một Period, MPD bao gồm đầy đủ thông tin để xác định thời gian của Period chứa đựng.

Vídụ, các MPD@mediaPresentationDuration, hoặc Period@duration, hoặc Period@start tiếp theo có thể có mặt.

Đối với các dịch vụ với MPD@type='dynamic', Segment sẵn có thời gian bắt đầu của một Media Segment là tổng giá trị của MPD@availabilityStartTime, thời gian PeriodStart của Period, thời gian bắt đầu MPD và thời gian MPD của Media Segment. Segment sẵn có thời gian kết thúc của một Media Segment là tổng thời gian Segment sẵn sàng bắt đầu, thời gian MPD của Media Media Segment và giá trị của các thuộc tính MPD@timeShiftBufferDepth.

MPD bao gồm thông tin URL cho tất cả các Segment với thời gian bắt đầu sẵn sàng ít hơn cả (i) kết thúc của trình diễn phương tiện và (ii) tổng hợp của thời điểm gần nhất mà phiên bản này của MPD là có sẵn trên máy chủ và giá trị của MPD@minimumUpdatePeriod.

Index Segment information

Mỗi Segment thường đã phân thông tin Segment Index có thể được cung cấp trong một Segment Index được khai báo rõ ràng.

• Bởi sự hiện diện của một yếu tố RepresentationIndex cung cấp Segment Index cho toàn bộ Representation, hoặc

• Bởi sự hiện diện của ít nhất một trong hai thuộc tính @index và @indexRange trong các yếu tố SegmentList. SegmentURL, hoặc

• Bởi sự hiện diện của thuộc tính SegmentTemplate@index. Nếu chỉ $Number$ hoặc $Time$ có mặt cấu trúc trong Template-based Segment URL được áp dụng với số lượng thiết lập số lượng Media Segment tương ứng. Nếu không có mặt, thuộc tính SegmentTemplate@index tạo thành một tham chiếu đến Representation Index.

• Các thuộc tính @indexRange cũng có thể được sử dụng để cung cấp phạm vi byte cho một chỉ số trong một Media Segment, nơi này được cho phép bởi các định dạng Media Segment. Trong trường hợp này các thuộc tính @index sẽ không có mặt và phạm vi được chỉ định phải nằm hoàn toàn trong bất kỳ phạm vi byte quy định cho Media Segment.

• Sự sẵn có của Index Segment là đồng nhất sẵn có Media Segments chúng tương ứng với nhau. (adsbygoogle = window.adsbygoogle || []).push({});

Bitstream Switching Segment information

Mỗi Representation đã phân công nhiều nhất một Bitstream Switching Segment. Bitstream Switching Segment là chỉ có liên quan trong trường hợp cờ @bitstreamSwitching được thiết lập 'true' và có thể cho phép việc tạo ra một chuỗi Segment phù hợp cho Segments từ các Representation khác nhau.

Sự hiện diện của một Bitstream Switching Segment được chỉ định bởi sự hiện diện của các yếu tố BitstreamSwitching hoặc SegmentTemplate@bitstreamSwitching mà có thể chứa các URL và thông tin phạm vi byte hoặc các quy định xây dựng cho URL.

Nếu không phải là yếu tố Bitstream Switching cũng không phải thuộc tính SegmentTemplate@bitstreamSwitching có mặt cho một Representation và cờ @bitstreamSwitching được thiết lập 'true', không có các phân đoạn chuyển dòng bit.

Thời gian sẵn sàng Segment của Bitstream Switching Segment là giống với một trong những quy định cho Segment trong Initialization Segment information.

Một phần của tài liệu đồ án mpeg dash – chuẩn công nghệ mới nhất hỗ trợ streaming thích ứng động qua http (Trang 50 - 56)