1. Trang chủ
  2. » Công Nghệ Thông Tin

Tích hợp khả năng truyền tải video vào ứng dụng C/C++ doc

6 300 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 253,12 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ính của mô hình hệ thống Nex Gen Media Server - NGMS và nề

Trang 1

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í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 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ại iPhone có thể nhận được qua sóng 3G Và tại bài thử nghiệm này, Quản Trị Mạng

sẽ chủ yếu tập trung vào quá trình tích hợp hàm API để NGMS để giám sát, điều khiể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ên

nề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ài thử 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ục tù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ọng nhất là phải gán được ngms/include/ngmslib.h vào trong mã nguồn Do vậy, khi

bắ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ện

ngms/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:

Trang 2

#Example Makefile

CC=gcc

CFLAGS=-ggdb

INCLUDES+= -I ngms/include

LDFLAGS+= -L ngms/lib -lngms -xlcode -crypto

all: myapp

%.o: %.c

$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<

myapp: myapp.o

$(CC) -fpic -o myapp myapp.o $(LDFLAGS)

Và đây là mã nguồn của myapp.c:

/**

*

Trang 3

* Example myapp application

*

*/

typedef unsigned int uint32_t;

typedef unsigned long long uint64_t;

#include <stdio.h>

#include "ngmslib.h"

int main(int argc, char *argv[]) {

NGMSLIB_STREAM_PARAMS_T ngmsConfig;

NGMS_RC_T returnCode;

Trang 4

returnCode = ngmslib_open(&ngmsConfig);

if(NGMS_RC_OK != returnCode) {

fprintf(stderr, "ngmslib_open failed\n");

return -1;

}

ngmsConfig.inputs[0] = "mediaTestFile.mp4";

ngmsConfig.output = "rtp://127.0.0.1:5004";

returnCode = ngmslib_stream(&ngmsConfig);

if(NGMS_RC_OK != returnCode) {

Trang 5

fprintf(stderr, "ngmslib_open failed\n");

}

ngmslib_close(&ngmsConfig);

return 0;

}

Các đoạn mã nguồn trên sử dụng cấu trúc NGMSLIB_STREAM_PARAMS_T

để can thiệp và điều khiển thư viện ngms, yếu tố cần hoàn tất trước tiên chính là thủ tục gọi chức năng ngmslib_open Sau đó tiếp tục xây dựng các hệ thống tùy chọn để giám sát hoạt động của NGMS, và cuối cùng là sử dụng ngmslib_stream

để tạo file video output

Sau khi hoàn tất, chúng ta đã có thể sử dụng VLC Player để mở và xem video theo tùy chọn:

VLC Player -> Open Network rtp://@:5004

Tạ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_close

từ thread khác và việc gọi hàm ngmslib_stream sẽ kết thúc Ví dụ tại đây, chúng

ta 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ách gán thêm những dòng mã dưới đây:

ngmsConfig.rtmplive = "1935";

Trang 6

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ạo

ra 2 ví dụ thay vì ứng dụng chính, trong đó 1 ví dụ sẽ trích xuất file video qua

cổ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át tấ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 được

như vậy thì hệ thống yêu cầu chức năng interface JNI để quản lý từng câu lệnh gọi hàm tới NGMS Chúc các bạn thành công!

Ngày đăng: 07/03/2014, 01:20

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w