Thông tin tài liệu:
Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn một số đặc tính của mô hình hệ thống Nex Gen Media Server - NGMS và nền tảng framework API đi kèm. Về mặt kỹ thuật, NGMS có thể được xem là 1 trong những hệ thống server xử lý và truyền tải media với nhiều mục đích khác nhau, hỗ trợ nhiều giao thức phổ biến hiện nay như RTSP, RTMP, HTTP Live của Apple hoặc MPEG-2 Transport Stream. Bên cạnh đó, NGMS còn đi kèm với khả năng mã hóa, chuyển đổi định dạng các...
Nội dung trích xuất từ tài liệu:
Tích hợp khả năng truyền tải video vào ứng dụng C/C++ Tích hợp khả năng truyền tải video vào ứng dụng C/C++Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn một số đặc tínhcủa mô hình hệ thống Nex Gen Media Server - NGMS và nền tảngframework API đi kèm. Về mặt kỹ thuật, NGMS có thể được xem là 1 trongnhững hệ thống server xử lý và truyền tải media với nhiều mục đích khácnhau, hỗ trợ nhiều giao thức phổ biến hiện nay như RTSP, RTMP, HTTPLive của Apple hoặc MPEG-2 Transport Stream. Bên cạnh đó, NGMS còn đikèm với khả năng mã hóa, chuyển đổi định dạng các luồng dữ liệu Live Video,qua đó các thiết bị thu phát phổ biến ngày nay như HD Player, hoặc điện thoạiiPhone có thể nhận được qua sóng 3G. Và tại bài thử nghiệm này, Quản Trị Mạngsẽ chủ yếu tập trung vào quá trình tích hợp hàm API để NGMS để giám sát, điềukhiển chức năng truyền tải dữ liệu từ ứng dụng viết bằng ngôn ngữ lập trình C trênnền tảng Ubuntu Linux 10.04.Việc trước tiên các bạn cần làm là download và tham khảo thông tin hướng dẫn cơbản - NGMS User Guide tại đây, và một số thiết lập liên quan tới API tại đây. Chúý rằng các bạn hãy download Package NGMS cài đặt dành cho Linux (trong bàithử nghiệm này là phiên bản NGMS v1.3.4), sau đó giải nén gói này vào thư mụctùy chọn trên phân vùng (tại đây là ~/ngmsStreaming).Các bước thiết lập cơ bản:Để tích hợp NGMS trực tiếp vào bất kỳ ứng dụng C nào, thì yếu tố quan trọngnhất là phải gán được ngms/include/ngmslib.h vào trong mã nguồn. Do vậy, khibắt tay vào việc xây dựng chương trình thì các bạn nên chuẩn bị sẵn thư việnngms/lib/libngms.so và ngms/lib/libxcode.so. Trên thực tế thì libngms.so lại phụthuộc vào libcrypto.so.Ví dụ, file makefile:#Example MakefileCC=gccCFLAGS=-ggdbINCLUDES+= -I ngms/includeLDFLAGS+= -L ngms/lib -lngms -xlcode -cryptoall: myapp%.o: %.c $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $ Open Network rtp://@:5004Tại đây, chức năng gọi hàm ngmslib_stream được coi là toán tử ngăn chặn, vànếu muốn làm gián đoạn quá trình truyền tải thì các bạn có thể gọi ngmslib_closetừ thread khác và việc gọi hàm ngmslib_stream sẽ kết thúc. Ví dụ tại đây, chúngta sẽ thêm một số chức năng hỗ trợ đối với dữ liệu video Flash nhúng bằng cáchgán thêm những dòng mã dưới đây:ngmsConfig.rtmplive = 1935;ngmsConfig.live = 8080;Sau đó, mở trình duyệt và gõ đường dẫn: http://127.0.0.1:8080/live, kết quả trả vềtừ hệ thống sẽ là trang web với video Flash đang được trình chiếu.Mặt khác, thay vì việc trình chiếu 1 file video Flash bất kỳ nào đó thì người sửdụng vẫn có thể thay đổi nguồn input của Live Video. Trong ví dụ này, tác giả tạora 2 ví dụ thay vì ứng dụng chính, trong đó 1 ví dụ sẽ trích xuất file video quacổng 5006, phần còn lại sẽ giám sát dữ liệu video trên cổng 5006 này, và sau đódẫn trở lại cổng 5004://ngmsConfig.inputs[0] = mediaTestFile.mp4;ngmsConfig.inputs[0] = rtp://127.0.0.1:5006;ngmsConfig.strfilters[0] = type=m2t;Trên đây là một số ví dụ khá cơ bản để tích hợp chức năng truyền tải video vàoứng dụng dựa trên mã nguồn C. Còn với ngôn ngữ C++, các bạn có thể bao quáttất cả các chức năng gọi hàm tới thư viện ngmslib bằng cách sử dụng từ khóa C.Bên cạnh đó, chúng ta còn có thể áp dụng tương tự với Java, nhưng để làm đượcnhư vậy thì hệ thống yêu cầu chức năng interface JNI để quản lý từng câu lệnhgọi hàm tới NGMS. Chúc các bạn thành công! ...