1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

HỌP VÀ TRAO ĐỔI THÔNG TIN TRỰC TUYẾN

76 302 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 2,91 MB

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

Nội dung

̇ Trong quá trình h p, roomleader có th thêm thành viên.. 1-1 0-N Password UserName Depart ment UserPosit ion St atus id: UserID USER BeginPoint EndP oint ROOM-USER RoomID RoomName T o p

Trang 1

GI I THI U 1

PHÂN TÍCH VÀ THI T K 2

1 Phân tích 2

1.1 Phân tích yêu c u 2

1.2 Phân tích ch c n ng 2

1.2.1 Lên l ch h p (ch c n ng c a ng i qu n tr ) 2

1.2.2 C p nh t và hu l ch h p 2

1.2.3 Qu n lí ng i dùng 2

1.2.4 Cu c h p 2

1.2.5 Cu c i tho i 3

2 Thi t k 3

2.1 Thi t k c s d li u 3

2.1.1 S quan ni m d li u 3

2.1.2 Mô t các th c th 3

2.1.3 S quan h d li u 5

2.1.4 Mô t chi ti t các b ng 5

2.2 Thi t k x lý 7

2.2.1 Lên l ch h p 7

2.2.2 C p nh t l ch h p 7

2.2.3 Hu l ch h p 7

2.2.4 Qu n lý ng i dùng 7

2.2.5 Qu n lý cu c h p 8

2.2.6 Qu n lý cu c i tho i 9

K THU T VÀ CÔNG NGH 11

1 T ng quan 11

1.1 Khái ni m c b n 11

1.1.1 Nén không m t d li u 11

1.1.2 Nén m t d li u 11

1.1.3 So sánh gi a hai ki u nén 12

1.1.4 M t s khái ni m c b n trong vi c thu nh n, truy n và trình di n d li u âm thanh, hình nh 12 1.2 Gi i thi u JMF 14

1.2.1 C u trúc c p cao 15

1.2.2 B qu n lý 16

1.2.3 Các d ng c a d li u 17

1.2.4 nh d ng d li u 18

1.2.5 Các b i u khi n chu n 18

2 RTP và JMF 20

2.1 RTP 20

Trang 2

2.1.1 Gi i thi u 20

2.1.2 C u trúc RTP 20

2.2 Truy n d li u v i RTP 22

2.2.1 Thu nh n d li u v i RTP 22

2.2.2 Truy n d li u v i RTP 24

2.3 Thu nh n và trình di n d li u v i JMF 28

2.3.1 Thu nh n d li u v i JMF 28

2.3.2 Các thành ph n trình di n d li u 33

2.3.3 Trình di n d li u v i JMF 38

2.3.4 T o m t Player .38

3 K thu t nén và mã hóa d li u 43

3.1 Nén âm thanh 43

3.1.1 Gi i thi u m t s thu t toán nén âm thanh thông d ng 43

3.1.2 Thu t toán nén u-law và a-law 43

3.1.3 Các i m t ng ng gi a A-law và u-law 46

3.1.4 Các i m khác bi t gi a u-lau và A-law 46

3.2 Nén hình nh 46

3.2.1 Các nguyên t c c a nén nh 46

3.2.2 M t s thu t toán nén nh thông d ng 47

3.2.3 Gi i thi u thu t toán nén nh JPEG 47

3.2.4 Thu t toán mã hóa và gi i mã chu n JPEG 48

3.2.5 Thu t toán gi i mã tiêu chu n JPEG 50

3.3 Mã hoá d li u v i MD5 50

3.3.1 Khái ni m v mã b m 51

3.3.2 C u trúc c b n c a các thu t toán hàm b m 51

3.3.3 Thu t toán b m MD5 51

3.3.4 Mô hình ch ng th c m t kh u 52

TRI N KHAI VÀ CÀI T 53

1 Các ch c n ng dành cho ng i dùng 53

1.1 Giao di n chính sau khi ng nh p 53

1.2 T o và th c hi n cu c i tho i 53

1.2.1 T o cu c i tho i 53

1.2.2 Truy n âm thanh và hình nh 54

1.2.3 K t thúc i tho i 54

1.3 Th c hi n cu c h p 54

1.3.1 M cu c h p 54

1.3.2 Truy n âm thanh và hình nh 56

1.3.3 R i kh i cu c h p 56

1.4 Các ch c n ng khác 56

1.4.1 Xem danh sách nh ng thành viên trong cu c h p 56

2 Các ch c n ng dành cho ng i qu n lý h th ng: 57

2.1 Qu n lý thông qua ch ng trình: 57

Trang 3

2.1.1 Qu n lý cu c h p: 57

2.1.2 Qu n lý ng i dùng 59

2.2 Qu n lý thông qua giao th c HTTP 63

2.2.1 Màn hình ng nh p 63

2.2.2 Màn hình chính 63

2.2.3 Qu n lí ng i dùng 64

2.2.4 Qu n lí phòng h p 66

2.2.5 Qu n lý các cu c i tho i 69

3 ánh giá và h ng phát tri n 70

3.1 ánh giá 70

3.1.1 u i m 70

3.1.2 Khuy t i m 70

3.2 H ng phát tri n 71

Trang 5

Hi n nay, nhu c u giao ti p c a con ng i ngày càng l n Nh t là trong nh ng t ch c hay công ty, nhu c u trao đ i, th o lu n gi a nh ng ng i không cùng phòng ban r t l n Nh ng

cu c h p đông ng i hay nh ng cu c th o lu n nhóm th ng r t m t th i gian trong vi c đi

l i Thông th ng, các công ty hay s d ng nh ng t ng đài đi n tho i Nh ng vi c đó làm t n chi phí l p đ t t ng đài, h n n a kh n ng phát tri n thêm các tính n ng m i nh truy n t p tin, truy n hình nh, hay trao đ i là không th

V i h th ng m ng ngày càng phát tri n, khó kh n đó đ c gi i quy t b ng mô hình Net Conference D a trên mô hình đó, chúng tôi đ a ra m t gi i pháp đ gi i quy t các v n đ trên

Ph n m m h p và trao đ i thông tin tr c tuy n đ c thi t k đ ph c v cho các m c đích:

̇ Giao ti p, đ i tho i gi a hai ng i

̇ Giao ti p, đ i tho i gi a m t nhóm ng i (có lên l ch tr c)

̇ Trao đ i thông tin

Ph n m m này giúp cho nh ng nhân viên có th liên l c trong n i b công ty m t cách d dàng, h không c n đi l i hay m t c c phí đi n tho i mà v n có th nói chuy n, nhìn th y nhau Ph n m m đáp ng nhu c u c a nhân viên trong cùng m t công s mu n giao d ch, trao

đ i thông tin, tài li u, hình nh… ng th i giúp t o, qu n lý và trao đ i d li u âm thanh, hình

nh c a m t cu c h p Ph n m m đ m b o t t vi c truy n d li u âm thanh, hình nh nh n t microphone và WebCam Do các d li u đ u đ c nén tr c khi truy n, nên đ m b o vi c truy n v i th i gian th c ng th i, v i vi c nén các tín hi u âm thanh hình nh v n t n r t nhi u đ ng truy n khi truy n làm gi m chi phí trên m ng nên không làm ngh n m ng Ph n

m m có th truy n âm thanh và hình nh gi a hai ng i ho c gi a m t nhóm ng i Ngoài ra,

ph n m m có c các ch c n ng chat và g i t p tin gi a hai ng i ho c m t nhóm ng i Có

ch c n ng qu n lý t xa dành riêng cho ng i qu n tr qu n lý toàn b h th ng

Trang 6

Ph n m m xây d ng theo mô hình Client/Server

Yêu c u h th ng: do có truy n âm thanh và hình nh nên c n thi t ph i có microphone và WebCam

Trang 7

̇ Trong quá trình h p, roomleader có th thêm thành viên

̇ Ng i s d ng có th r i cu c h p trong khi đang h p

ch n đ i tho i không đ ng nh p, ho c đang đ i tho i v i ng i khác

̇ Khi b t đ u, đ i tho i m c đ nh là g i tin nh n, ng i s d ng có th dùng microphone ho c WebCam

̇ Trong quá trình h p ng i s d ng có th g i t p tin

1-1 0-N

Password UserName Depart ment UserPosit ion

St atus id: UserID

USER

BeginPoint EndP oint ROOM-USER

RoomID RoomName

T o pic

St art Point Deadline BeginPoint EndP oint id: RoomID ROOM

Conv erID BeginPoint EndP oint Voice Webcam id: Conv erID CONVERSAT ION 1-1

S đ 1

2.1.2 Mô t các th c th

̇ Th c th User

Department VarChar Phòng ban làm vi c UserPosition VarChar V trí công vi c

Trang 8

Status Char Tr ng thái hi n hành

Topic VarChar N i dung tiêu đ c a cu c h p

StartPoint DateTime Th i gian có th m cu c h p

Deadline DateTime H n chót đ m cu c h p

BeginPoint DateTime Th i gian b t đ u m cu c h p

EndPoint DateTime Th i gian k t thúc cu c h p

BeginPoint Date Th i gian b t đ u cu c đàm lu n

EndPoint Date Th i gian kêt thúc cu c đàm lu n

Voice Boolean Tr ng thái có chat voice hay không Webcam Boolean Tr ng thái dùng webcam hay không

B ng 3

L u ý

Trang 9

Các thông tin qu n lí tr ng thái đ i tho i hi n hành t ng t nh qu n lí trong cu c h p

đã đ c nêu trên

Voice và Webcam dùng đ l u thông tin có hay không s d ng các tín hi u âm thanh

và hình nh đ truy n

Cu c đ i tho i khi đ c m s ch có th i gian BeginPoint l u th i gian b t đ u Khi

cu c đ i tho i k t thúc thì EndPoint m i đ c gán vào đ l u th i đi m k t thúc

̇ Th c th Room-User

BeginPoint Date Th i gian b t đ u tham gia cu c h p EndPoint Date Th i gian thoát kh i cu c h p

Trang 10

UserPosition VarChar 50 V trí công vi c

Status Char 1 Tr ng thái hi n hành

StartPoint DateTime - Th i gian có th m cu c h p

Khoá ngo i tham chi u b ng User

Voice Boolean - Tr ng thái có truy n âm thanh

Pham The BaoDigitally signed by Pham The BaoDN: CN = Pham The Bao, C = VN

Reason: I am the author of this document

Date: 2006.08.03 15:48:42 +07'00'

Trang 11

b Ki m tra các thông tin b t bu c (g i thông báo n u thông tin không h p l )

c L u các thông tin này vào c s d li u

b Ti p nh n thông tin thay đ i, đ m b o các thông tin b t bu c (ki m tra các tr ng

b t bu c, g i thông báo n u thông tin không h p l )

̇ L y thông tin ng i c n thêm, b o đ m các thông tin b t bu c,

̇ L u thông tin trong CSDL

Trang 12

X lý các thao tác liên quan t i cu c h p bao g m m , đóng, đ ng nh p, thoát kh i

cu c h p; x lý truy n nh n hình nh, âm thanh; thêm b t ng i dùng trong cu c h p Toàn b các ch c n ng đ u do máy ch x lý khi nh n yêu c u t ng ng t máy tr m (có th t ng i dùng bình th ng hay t roomleader)

̇ X lý đ ng nh p cu c h p, ki m tra quy n c a ng i dùng vi c ki m tra này đ c

− Ng i dùng: ki m tra tr ng thái hi n hành c a cu c h p

a Order (cu c h p đã đ c t o và ch a m ) Thông báo cho ng i dùng bi t cu c h p ch a đ c m , quy n truy c p b

t ch i

a Meeting (cu c h p đang đ c h p)

M k t n i cho ng i dùng, c p nh t l i tr ng thái hi n hành cho ng i dùng

C p nh t l i b ng ROOM_USER trong c s d li u

G i thông báo đ n t t c ng i dùng trong cu c h p

b Finished (cu c h p đã k t thúc) Thông báo ng i dùng bi t cu c h p đã k t thúc, quy n truy c p b t ch i

− Nh ng ng i khác Thông báo quy n truy c p b t ch i vì ng i dùng không có quy n đ i v i cu c

h p

̇ X lý thoát kh i cu c h p

− Ch c n ng này ch đ c th c hi n v i các ng i dùng không là roomleader

(quy n này đã đ c ki m t i máy tr m)

− Thông báo cho roomleader

− Ng t k t n i c a ng i dùng C p nh t tr ng thái hi n hành c a ng i dùng

− C p nh t l i b ng ROOM_USER

Trang 13

̇ X lý truy n nh n các tín hi u âm thanh, hình nh

− M i máy s nh n đ c tín hi u âm thanh, hình nh t thi t b , chuy n đ nh d ng

d li u, r i truy n lên máy ch

− Máy ch nh n đ c d li u t máy tr m, truy n cho t t c nh ng ng i dùng đang có trong cu c h p

− Ng i dùng nh n đ c d li u, gi i nén và hi n th d li u ra

̇ X lý thêm ng i dùng khi đang h p

Ch c n ng ch đ c th c hi n d i quy n ng i qu n lý khi cu c h p đang đ c

h p Các b c ti n hành

Ki m tra tr ng thái ng i dùng đ c thêm vào

− Online (đang tr c tuy n):

- Thông báo và ch câu tr l i t phía ng i dùng đ c m i

- N u ng i dùng đ ng ý tham gia cu c h p, c p nh t l i tr ng thái hi n hành cho ng i dùng, c p nh t l i bang ROOM_USER Chuy n sang ph n x lý gia

nh p cu c h p cho ng i dùng v a thêm

- Ng c l i thông báo cho ng i qu n lý ng i dùng không đ ng ý

− Chat ( ang trong cu c đ i tho i):

- Thông báo l i m i cho ng i dùng

- N u đ c đ ng ý: x lý k t thúc cu c đ i tho i

- C p nh t l i tr ng thái hi n hành c a ng i dùng trong c s d li u (cho phép quy n đ ng nh p cho ng i dùng đ c m i vào cu c h p)

- X lý gia nh p cu c h p v i quy n ng i dùng cho ng i v a đ c m i

− JoinRoom( ang trong cu c h p) hay Offline (không tr c tuy n):

- Thông báo cho roomleader bi t ng i dùng không s n sàng

Ta g i user1 là ng i kh i t o đ i tho i, user2 là ng i nh n đ c l i m i:

- User1 g i l nh kh i t o đ i tho i kèm v i ng i dùng đ n máy ch

- Máy ch ki m tra tr ng thái c a user2: n u là “Online”, g i thông báo đ n

ng i dùng ch s ch p thu n N u không “Online” g i thông báo không t o

đ c đ i tho i tr v cho user1

- N u user2 không ch p nh n: g i thông báo không t o đ c đ i tho i cho user1

- N u user2 ch p nh n: user2 g i s c ng mà nó s nh n âm thanh và hình nh, user2 m k t n i ch , đ ng th i b t đ u ch các tín hi u âm thanh và hình nh t

Trang 14

- Máy ch g i l i cho user1 các thông tin v a nêu cùng IP c a user2

- User1 nh n đ c các thông tin c n thi t, nó s t o k t n i đ n user2, m k t n i

ch các tín hi u âm thanh và hình nh, cu i cùng là b t đ u cu c đ i tho i

̇ X lý truy n và nh n âm thanh, hình nh

Khi có tín hi u mu n s d ng âm thanh hay hình nh:

- H th ng s ki m tra thi t b , thông báo l i n u không tìm d c thi t b thích h p

- G i thông báo lên máy ch ,

- Nh n tín hi u t thi t b , chuy n đ nh d ng thích h p, r i truy n d li u cho ng i dùng còn l i

Ng i dùng khi nh n đ c tín hi u, chuy n đ nh d ng thích h p đ trình di n d

li u

Máy ch nh n đ c thông báo, c p nh t c s d li u

̇ K t thúc đ i tho i

Khi m t trong hai ng i k t thúc, cu c đ i tho i s đ c k t thúc

- G i thông báo lên máy ch

- G i thông báo cho ng i dùng còn l i

- K t thúc vi c truy n âm thanh/hình nh (n u còn)

- óng các k t n i

Ng i dùng còn l i khi nh n đ c thông báo k t thúc đ i tho i, đóng các k t n i

đ n ng i dùng kia i tho i k t thúc

Trang 15

Ch ng 2

K THU T VÀ CÔNG NGH

1 T ng quan

1.1 Khái ni m c b n

Vi c truy n d li u thông qua môi tr ng m ng g p m t khó kh n r t l n v b ng

thông và t c đ đ ng truy n, đ c bi t là đ i v i các d li u nh âm thanh và hình nh

Nh ng d li u liên t c này đòi h i cao v đ ng truy n đ đ m b o cho nó đ c truy n

m t cách hi u qu (không b gián đo n, ng t quãng, hay m t thông tin) Do đó vi c nén các

tính hi u âm thanh, hình nh tr c khi chúng đ c truy n lên m ng là m t yêu c u h t s c

c n thi t c cho vi c ti t ki m đ ng truy n c ng nh đ m b o ch t l ng c a vi c truy n

Các thu t toán c a nén không m t d li u th ng d a vào vi c thay th m t nhóm các

ký t trùng l p b i m t nhóm các ký t đ c bi t khác ng n h n mà không quan tâm t i ý

ngh a c a dòng bit d li u

Các ví d c a d ng nén không m t d li u là Run-Length Encoding (RLE), Huffman

Coding, Arithmetic coding, Shannon-Fano Coding,

1.1.2 Nén m t d li u

Nén m t d li u (lossy data compression) [3] là m t ph ng pháp nén mà sau khi nén

ho c gi i nén, d li u ta nh n đ c s khác v i d li u ban đ u Tuy nhiên, d li u này có

th s d ng t t trong các tr ng h p thích h p Ki u nén này thông th ng đ c s d ng

trên m ng Internet và đ c bi t trong quá trình truy n t i d li u âm thanh, hình nh Ki u

nén này t ng ph n v i nén không m t d li u Ph thu c vào đ nh d ng c a d li u mà

ph ng pháp nén này mà d li u khi ph c h i s b m t khác nhau, vì v y khi nén và gi i

nén càng nhi u l n s càng gây ra nhi u h h i v d li u Các ph ng pháp nén nh có

m t tín hi u g m có 4 b c, hình 1

Trang 16

Có nhi u gi i thu t đ c đ t ra đ đáp ng yêu c u gi m thi u kích th c c a t p tin

nh sao cho v n duy trì đ c ch t l ng m c đ ch p nh n đ c Nh ng gi i thu t này

đ u d a trên n n t ng là lo i b t nh ng màu mà m t ng i không ho c khó c m nh n

đ c, ch gi l i nh ng màu ch y u th c s nh h ng tích c c lên kh n ng c m nh n màu c a m t

i v i âm thanh, có nhi u chu n nén khác nhau nh : Windows Media, MP3(MPEG-1 Audio Layer-3) , Real G2, Liquid Audio, nh ng thông d ng nh t hi n nay là MP3 Nén theo chu n MP3, kích th c t p tin âm thanh có th đ c thu nh đi tám l n so v i kích th c ban đ u làm đ c nh v y, ng i ta s d ng m t k thu t g i là l y m u âm, th nghi m r i b b t nh ng âm đi u mà tai ng i không nghe đ c ho c kém nh y Do đó,

ch t l ng âm c a MP3 r t khó phân bi t v i âm c a đ a CD (Compact disc chu n) [4]

1.1.3 So sánh gi a hai ki u nén

Ph ng pháp nén m t d li u có ích h n nén không m t d li u m t vài đi m: ki u nén m t d li u s cho ra các t p tin nén có kích th c nh h n r t nhi u so v i b t c ki u nén không m t d li u nào

Các ph ng pháp nén m t d li u th ng đ c dùng cho nén âm thanh, hình nh ho c các đo n video Do d li u âm thanh có m t s âm v c tai ng i không nghe đ c và khi

b m t m t s d li u thì ta v n không phân bi t đ c gi a d li u đã b m t và d li u

ch a b m t i v i hình nh, lý do c ng t ng t

T s nén (t s gi a kích th c c a t p tin nén và t p tin ch a nén) c a ki u nén m t d

li u cho video thì cao h n so v i nén cho âm thanh Âm thanh có th đ c nén t i t l 10:1

và ch t l ng không kém h n bao nhiêu, video khi đ c nén v i t l m t mát không đáng

1.1.4 M t s khái ni m c b n trong vi c thu nh n, truy n và trình di n d li u âm thanh, hình nh

̇ Time-base Media (tín hi u đa truy n thông liên t c):

Trang 17

M t đ c đi m chính c a tín hi u đa truy n thông liên t c là yêu c u vi c phát và

x lí m t cách đ ng th i [1] M t khi b t đ u truy n m t lu ng tín hi u, c n đ t

đ c s gi i h n nghiêm kh c v th i gian trong c vi c nh n và hi n th d li u Vì

v y, tín hi u đa truy n thông liên t c - đ c xem là streaming media- ph i đ c

phát trên m t đ ng truy n n đ nh, cung c p kh n ng truy n và nh n trong m t khung th i gian nh t đ nh đ cho ra k t qu ch p nh n đ c Ví d , khi m t đo n phim đ c chi u, n u d li u không đ c phát đ nhanh, có th s xu t hi n các kho ng d ng ngoài ý mu n M c khác, n u d li u không đ c nh n và x lí m t cách nhanh chóng, thì đo n phim s xu t hi n nh ng đo n nh y do m t d li u hay

đo n nh b b qua do mu n đ t đ c t c đ hi n th v n có

̇ Content Type:

đ nh d ng mà d li u media (âm thanh và hình nh) đu c l u tr các d ng

Quicktime, MPEG (Motion Pictures Experts Group) hay WAV(Waveform Audio) Content type v b n ch t t ng t nh đ nh d ng t p tin nh ng ng i ta dung

thu t ng content type vì d li u media ch y u thu đ c t các ngu n tài

nguyên h n là t các t p tin c c b

̇ Media Stream:

Media stream là m t dòng d li u media thu đ c t m t t p tin c c b , t

m ng hay thu nh n đ c t camera ho c microphone Media stream th ng

bao g m nhi u kênh d li u đ c g i là các track Ví d nh m t t p tin d ng Quicktime có th bao g m các track âm thanh và track hình nh Các media stream ch a nhi u track th ng đ c g i là multiplexed hay complex

- Demultiplexing là quá trình tách các track riêng r ra kh i các lu ng

media ch a nhi u track

- D ng track đ c đ nh ngh a là lo i d li u mà nó ch a, nh là hình nh ho c

âm thanh nh d ng c a track cho bi t cách mà d li u c a track đ c xây d ng

- M t media stream đ c xác đ nh nh đ a ch và giao th c truy c p nó

Ch ng h n nh ng i ta dùng đ a ch URL(Uniform Resource Locator) đ xác đ nh

v trí c a t p tin Quicktime trên h th ng t xa hay c c b N u t p tin máy c c

b thì nó có th đ c truy c p b ng giao th c FILE Ng c l i n u nó n m máy ch web thì có th truy c p đ c b ng giao th c HTTP(Hyper Text Transfer Protocol)

M t media locator đ c dùng thay th cho URL khi đ a ch d ng URL không

X Push : máy ch s kh i đ ng d li u truy n và đi u khi n dòng d li u Ví

d nh RTP(Real-time Transport Protocol) là giao th c Push đ c s d ng

đ truy n thông media

̇ Trình di n các d li u media:

Trang 18

H u h t các d li u media đ c trình di n qua các thi t b nh loa hay màn

hình Ngoài ra, các lu ng d li u media có th đ c l u vào t p tin ho c truy n qua

m ng Các cách th c trình di n cho media đ c đ i di n nh m t data sink

̇ X lý d li u trình di n:

Trong h u h t tr ng h p, d li u trong lu ng media đ c x lí tr c khi bi u

di n cho ng i dùng Thông th ng, vi c x lí th c hi n nh sau:

X N u lu ng là đa thành ph n, thì c n ph i tách ra thành t ng track riêng

X N u các track này b nén thì ph i gi i nén ra

X N u c n thi t, m i track s đ c chuy n sang các đ nh d ng khác nhau

X Thu nh n t ng track âm thanh và hình nh

X Có th g n nh ng track này vào các b l c

X Các track này s đ c mã hóa

X Nh ng track sau khi nén s đ c k t h p và đ a vào m t lu ng media riêng

X Lu ng đa thành ph n này s l u xu ng t p tin

̇ B nén d li u (codecs) :

- Codec có nhi m v nén và gi i nén d li u media Khi m t track đ c mã

hóa, nó s chuy n sang d ng nén thích h p đ l u tr ho c truy n đi, khi gi i nén

nó s đ c chuy n sang d ng đ nh d ng không nén thích h p cho vi c bi u di n d

Renderer là thi t b trình di n d li u i v i âm thanh, thi t b trình di n là

lo i audio card mà có th phát ra âm thanh còn v i hình nh là màn hình máy tính

̇ Thu nh n các d li u media (Media Capture):

- D li u truy n thông đa liên t c có th đ c thu nh n t các thi t b bên ngoài

đ trình di n ho c thu l i Ví d nh âm thanh có th đ c thu nh n t microphone, video có th đ c thu nh n t m t camera

- M t thi t b có th thu nh n đ c nhi u lu ng d li u cùng lúc Ví d nh m t camera có th thu nh n đ c c âm thanh l n hình nh Các lu ng này đ c thu

nh n và đ c đi u khi n đ c l p ho c có th k t h p chúng thành m t

1.2 Gi i thi u JMF

Java Media Framework (JMF) là m t th vi n đ c vi t b ng ngôn ng Java c a hãng Sun, JMF cho phép các d li u nh âm thanh, hình nh hay các tín hi u đa truy n

Trang 19

có th thu nh n, trình di n, truy n d li u âm thanh và hình nh, ngoài ra JMF còn h tr chuy n mã gi a nhi u đ nh d ng d li u khác nhau

JMF cung c p m t giao th c truy n thông và m t ki n trúc th ng nh t đ qu n lý, x lý

và phân phát các tín hi u media liên t c JMF đ c thi t k thích h p v i h u h t các d ng

media chu n nh : AIFF (Audio Interchange File Format), AVI (Audio-Video Interleave),GSM (Global System for Mobile Communication), MIDI (Musical Instrument Digital Interface), MPEG, QuickTime và WAV,…

D a trên n n Java, JMF duy trì đ c kh n ng “vi t m t l n, ch y kh p n i” cho nh ng

nhà phát tri n mu n tích h p các tín hi u media nh âm thanh hình nh vào ng d ng Java

c a mình S b sung c a JMF có th n ng cao kh n ng c a các h đi u hành c s , trong khi ng i l p trình có th d dàng t o các ch ng trình Java v i các c ng giao ti p có th truy n t i đ c các tín hi u media liên t c b ng cách s d ng các hàm API(Application Program Interface) c a JMF

V i JMF, b n có th d dàng t o các ch ng trình ng d ng đ trình di n, thu gi , x

lý hay l u tr các tín hi u media liên t c JMF cho phép ng i l p trình có th t thêm vào

các x lý cho các d li u media thô, m r ng JMF đ h tr cho các content type và

đ nh d ng m i, t i u hóa vi c đi u khi n các đ nh d ng cung c p s n, và t o m t c ch trình di n m i

JMF c ng s d ng m t mô hình t ng t M t data source gi d li u c a dòng

tín hi u media nh m t cu n b ng và m t player cung c p ch c n ng x lý và c ch

đi u khi n nh là đ u VCR Vi c hi n th và thu nh n tín hi u âm thanh, hình nh v i JMF đòi h i các thi t b đ u vào và ra thích h p ch ng h n nh microphone, camera, loa

và monitor

Trang 20

Hình 3: Minh h a các b c thu nh n và trình di n d li u Datasource và player là nh ng ph n bên trong b API c p cao c a JMF dùng đ

qu n lý tín hi u thu nh n đ c, trình di n và x lý các tín hi u media liên t c JMF c ng cung c p m t b API c p th p cho vi c tích h p tín hi u media liên t c vào ng d ng Java

trong khi v n duy trì đ c s linh đ ng và kh n ng m r ng

Trang 21

̇ Manager: n m gi các c u trúc Player, Processors, DataSource và DataSink

̇ PackageManager: gi registry c a gói th vi n ch a các l p c a JMF nh là

Players, Processors, DataSources, và DataSinks

̇ CaptureDeviceManager : gi registry c a các bi n thi t b b t tín hi u

̇ PlugInManager : gi registry c a các thành ph n x lý c a JMF nh

Renderers

vi t m t ch ng trình JMF, ta c n dùng ph ng th c create c a Manager đ xây d ng các Players, Processors, DataSources, và DataSinks N u b n

c n b t d li u media t thi t b , b n c n dùng đ n đ i t ngCaptureDeviceManager đ dò tìm thi t b thích h p và truy c p các thông tin c a chúng N u b n mu n n m đ c các x lý nào đang đ c ti n hành trên d li u media, dùng l p PlugInManager đ xác đ nh nh ng plug-in nào đã đ c đ ng kí

N u b n m r ng ch c n ng c a JMF b ng cách thi hành m t plug-in m i và đ ng

kí nó v i PlugInManager đ nó có hi u l c trong các API plug-in c a Processors

s d ng các Player, Processor, DataSource, hay DataSink t đ nh ngh a

ch c n đ ng kí nó v i PackageManager.

1.2.3 Các d ng c a d li u

JMF đ nh ngh a 2 d ng ngu n d li u đ c bi t : cloneable và merging

̇ D li u d ng cloneable có th đ c s d ng đ t o ra b n clone cho c pull và push datasource t o đ c d li u d ng cloneable g i ph ng th c

createCloneableDataSource c a Manager đ i v i DataSource c n

t o M t khi DataSource đã đ c x lý qua ph ng th c

createCloneableDataSource, ta ch nên thao tác trên b n clone m i đ c

t o

- D li u ngu n cloneable th c thi giao di n SourceCloneable v i ph ng

th c createClone B ng cách s d ng hàm createClone b n có th t o ra

nhi u b n clone t d li u mà đ c dùng đ t o ra d li u Cloneable Các b n clone

đó có th đ c qu n lý thông qua b n cloneable đ c dùng đ t o ra chúng Khi g i các hàm connect, disconnect, start, hay stop lên b n cloneable, ph ng

ph i có cùng đ nh d ng

Trang 22

1.2.4 nh d ng d li u

nh d ng d li u media đ c xác đ nh b i đ i t ng Format, hình 5 Ph n đ nh d ng này không mang thông tin tham s mã hóa c ng nh l ng th i gian, nó ch mang thông tin tên đ nh d ng mã hóa và d ng d li u thích h p v i ki u đ nh d ng đó

JMF m r ng đ i t ng Format đ xác đ nh t ng đ nh d ng âm thanh và hình nh riêng bi t

Hình 5: C u trúc các l p Format

i t ng AudioFormat gi các đ c tính riêng bi t cho các đ nh d ng âm thanh nh rate, s kênh v.v… i t ng VideoFormat gi các thông tin v d li u hình nh M t vài đ i t ng Format đ c h tr b i VideoFormat đ di n t các tính ch t c a các

1.2.5 Các b đi u khi n chu n

JMF cung c p các đi u khi n chu n :

Trang 23

Hình 6: C u trúc các Control

M t s Control chính, hình 6:

CachingControl cho phép hi n th ti n trình download N u m t Player hay Processor mu n t ng thu t đ c ti n trình download, nó ph i th c thi giao ti p này GainControl cung c p kh n ng hi u ch nh m c đ âm thanh nh l n, nh , ho c

ng t tín hi u ra c a m t Player hay Processor Nó còn h tr c ch l ng nghe s thay đ i m c đ âm thanh

i t ng DataSink hay Multiplexer đ c d li u t m t DataSource và ghi

nó lên m t ngu n khác ch ng h n nh m t t p tin Hai đ i t ng này th c thi giao di n StreamWriterControl Control này cho phép ng i dùng gi i h n dung l ng c a dòng d li u đ c t o

M t TrackControl là m t d ng c a FormatControl, nó cung c p c ch ki m

soát ti n trình x lý c a Processor trên m t track c a d li u media V i ph ng th c TrackControl, ta có th xác đ nh rõ đ c nh ng chuy n bi n đ nh d ng trên nh ng track riêng l và ch n các plug-in Effect, Codec, hay Renderer đ s d ng trong Processor

Trang 24

Vi c truy n media qua m ng đòi h i m ng ph i có b ng thông cao Vì d li u r t d b

m t nên kho ng th i gian trì hoãn đ nh n đ c d li u l n i u này r t khác v i vi c

nh n các d li u t nh qua t p tin – đòi h i t t c các d li u ph i đ n đ c đích Vì th , các giao th c dùng cho vi c truy n t p tin thì r t khó s d ng đ c cho vi c truy n tín hi u

media

HTTP và FTP là hai giao th c đ c d a trên TCP (Transmission Control Protocol) là

m t giao th c c a t ng transport đ c thi t k v i đ tin c y cao dùng cho m ng có b ng thông th p Theo giao th c này, khi m t d li u b m t ho c b th t l c, nó s ph i đ c truy n l i Do đó, UDP th ng đ c dùng cho vi c truy n các d li u media liên t c theo

th i gian th c

RTP - m t giao th c đ c đ nh ngh a b i t ch c IETF RFC 1889 - là giao th c đ c

đ nh ngh a riêng cho vi c truy n các d li u âm thanh và hình nh RTP th ng đ c dùng thông qua UDP

Hình 7: C u trúc RTP

RTP có th đ c dùng v i c d ch v m ng unicast và multicast i v i unicast nó s

g i m t b n sao d li u đ c l p t ngu n đ n đ a ch đích i v i multicast d li u t

ngu n s đ c g i ch m t l n và m ng s ch u trách nhi m truy n các d li u này đ n các

Là m t máy tr m, máy ch hay m t ng i s d ng tham gia trong session i

t ng tham gia trong m t session có th g m có ng i nh n, ng i g i, ho c c hai

M i lo i d li u media đ c truy n trong m t session khác nhau Ví d nh n u

c tín hi u âm thanh và hình nh cùng đ c truy n, m t session s truy n audio, m t

Trang 25

session khác s truy n video i u này giúp cho participant có th ch n l a lo i

d li u h mu n nh n

DataPackets

D li u media đ c truy n đi b ng m t lo t các gói Các gói này đ c b t đ u t

m t ngu n đ c g i là RTPStream M i gói d li u RTP bao g m hai ph n : ph n

header và ph n d li u th c

Hình 8: nh d ng c a RTP data-packet header

RTCP (RTP Control Protocol) Các gói d li u đi u khi n

Ngoài các d li u đ c g i trong m t session, các RTCP c ng đ c g i m t cách

đ nh k cho t t c participant trong m t session Các gói này ch a thông tin v

ch t l ng c a d ch v , ngu n d li u đ c truy n trên c ng d li u, và các th ng kê v

Các participant s g i đ nh k m t b n báo cáo nh n cho t t c các máy

M t b n báo cáo nh n ch a thông tin v s gói d li u b m t, s th t l n nh t c a các gói d li u đã nh n đ c, m t timestamp dùng đ c tính kho ng th i gian trì hoãn gi a ng i g i và ng i nh n

Gói RTCP đ u tiên trong packet ghép ph i là m t b ng t ng thu t, th m chí n u không có d li u nào đ c g i thì m t b n t ng thu t r ng s đ c g i

T t c các packet RTCP ghép ph i có m t source description (SDES) đ nh n

d ng ngu n d li u, đ a ch email, tên ng d ng, ho c m t thông đi p đ mô t tr ng

thái hi n th i c a ngu n d li u

Khi ngu n d li u không ho t đ ng, nó g i m t gói RTCP BYE Gói này có th

đ a ra lý do vì sao ngu n d li u r i b phiên truy n nh n

Bit 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 16 7 8 9 0 1 2 3 4 5 6 7 8 9 0 31

Timestamp Synchronization Source (SSRC) Content Source (CSRC)

(0-15)

Trang 26

2.2 Truy n d li u v i RTP

JMF cho phép vi c hi n th và truy n lu ng d li u RTP thông qua API đ c đ nh ngh a trong gói javax.media.rtp, javax.media.rtp.event, và javax media.rtp.rtcp

n gi n, ta có th dùng RTP API đ truy n, thu nh n, ho c ch a lu ng d li u media

trên m ng Lu ng RTP đ c truy n qua m ng có th l y t m t t p tin h c m t thi t b

Lu ng này sau khi đ c nh n v có th đ c hi n th , l u tr ho c c hai

Quá trình truy n d li u v i RTP đ c chia thành hai giai đo n:

T p tin

Trang 27

Hình 11: Mô hình thu nh n d li u

M i lu ng nh n đ c t SessionManager s đ c trình di n b ng m t Player khác nhau Ta có th t o m t Player cho m t RTP stream thông qua ph ng th c createPlayer c a Manager B n có th :

̇ S d ng MediaLocator đ t o m t Player b ng cách g i Manager createPlayer(MediaLocator)

̇ T o m t Player cho t ng ReceiveStream b ng cách l y DataSource t

lu ng và gán nó vào Manager.createPlayer (DataSource)

N u s d ng MediaLocator đ t o Player, ta ch có th trình di n đ c lu ng RTP đ u tiên đ n session N u ta mu n trình di n nhi u lu ng RTP trong m t session, ta

c n s d ng tr c ti p SessionManager và kh i t o Player cho m i ReceiveStream

T o Player cho m t RTP Session

Khi s d ng MediaLocator đ t o Player cho m t RTP session, Manager s

t o m t Player cho lu ng đ u tiên vào session Player này sinh ra s ki n

RealizeCompleteEvent khi d li u đ n session

m t RealizedPlayer s khóa vô th i h n các ho t đ ng khác

Ví d 1: t o m t Player cho m t RTP session

String url= "rtp://224.144.251.104:49150/audio/1";

MediaLocator mrl= new MediaLocator(url);

Player player = Manager.createPlayer(mrl);

public synchronized void controllerUpdate(ControllerEvent e) {

if(e instanceof RealizeCompleteEvent) {

Trang 28

T o m t RTP Player cho m i ReceiveStream m i

trình di n t t c các ReceiveStream trong session, b n c n t o m t Player

riêng cho m i lu ng Khi m t lu ng m i đ c t o, SessionManager s sinh ra s ki n NewReceiveStreamEvent Thông th ng, b n nên đ ng kí m t ReceiveStream Listener và t o m t Player cho m i ReceiveStream m i t o Player, b n

l y DataSource t ReceiveStream và gán vào Manager.createPlayer

t o m t Player cho m i ReceiveStream m i trong session ta ph i:

̇ Thi t l p m t RTP session:

- T o m t SessionManager Ví d , t o m t com.sun.media rtp.RTPSessionMgr

̇ L y RTP DataSource t ReceiveStream b ng cách g i getDataSource

ây là m t PushBufferDataSource v i m t đ nh d ng riêng c a RTP

DataSource dsource = stream.getDataSource();

̇ Gán DataSource cho Manager.createPlayer đ t o Player i v i Player đ c t o thành công, thì c n ph i có m t plug-in phù h p cho vi c gi i mã

d li u đã chuy n theo đ nh d ng RTP

newplayer = Manager.createPlayer(dsource);

2.2.2 Truy n d li u v i RTP

truy n m t lu ng RTP, s d ng m t Processor đ t o ra DataSource đ c

mã hóa theo chu n RTP và xây d ng SessionManager ho c DataSink đ ki m soát vi c truy n tín hi u

D li u vào c a DataSource có th là d li u đã đ c l u tr (t p tin) hay d li u

tr c ti p l y đ c t m t thi t b i v i d li u đ c l u tr , s d ng m t MediaLocator đ xác đ nh t p tin khi t o Processor i v i d li u l y đ c t

Trang 29

thi t b , d li u thu đ c s làm d li u nh p cho Processor, nh đã trình bày trong

ki m soát quá trình truy n thông

N u dùng MediaLocator đ xây d ng RTP DataSink, ta ch có th truy n

đ c lu ng đ u tiên trong DataSource N u mu n truy n đ ng th i nhi u lu ng trong

m t phiên RTP và hi n th thông s th ng kê phiên, c n s d ng tr c ti p đ i t ng SessionManager

B t k cách mà ta dùng đ truy n lu ng d li u RTP, ta đ u ph i làm :

̇ T o m t Processor v i DataSource đ i di n cho d li u c n truy n

̇ Thi t l p Processor đ xu t ra d li u theo đ nh d ng RTP

̇ L y d li u xu t t Processor nh là DataSource

Thi t l p Processor

thi t l p đ c Processor cho vi c xu t d li u theo đ nh d ng RTP, ta thi t l p

đ nh d ng RTP cho các t ng track và ch đ nh chu i đ nh d ng d li u xu t

Các đ nh d ng track đ c thi t l p thông qua TrackControl c a t ng track và

ph ng th c setFormat đ ch đ nh đ nh d ng RTP M t đ nh d ng RTP đ c ch đ nh

b ng cách dùng chu i đ nh d ng t ng ng c a t ng lo i đ nh d ng, ví d nh

“AudioFormat.GSM_RTP” Processor s t đ ng t i nh ng plug-in c n thi t cho đ nh

d ng ta dùng N u không tìm th y plug-in thích h p s phát sinh ra l i

UnSupportedFormatException

nh d ng d li u xu t đ c thi t l p thông qua ph ng th c setOutputContentDescriptor N u không đòi h i d li u đa lu ng đ c bi t nào, chu i đ nh d ng d li u xu t s đ c gán "ContentDescriptor.RAW" Các lu ng d

li u âm thanh và hình nh không th đ c chen vào N u các track c a Processor thu c các đ nh d ng media khác nhau, m i lu ng đó s đ c truy n trong các phiên RTP riêng r

L y d li u xu t c a Processor

Khi đ nh d ng c a m t track c a Processor đã đ c thi t l p và Processor đã

đ c nh n, ta có th t o ra DataSource dùng đ xu t cho Processor Ta có th nh n d

li u xu t ra c a Processor d i d ng DataSource b ng ph ng th c getDataOutput D li u tr v có th là PushBufferDataSource ho c PullBufferDataSource, tu thu c vào ngu n c a d li u

D li u xu t đ c n i v i SessionManager qua ph ng th c createSendStream i t ng SessionManager ph i đ c kh i t o tr c khi t o

lu ng g i d li u

N u DataSource ch a nhi u SourceStreams, m i SourceStreams s đ c

g i đi trên m t lu ng RTP riêng r trong cùng m t phiên hay trong nhi u phiên khác nhau

N u DataSource ch a nh ng lu ng âm thanh và hình nh, các phiên RTP riêng r ph i

đ c t o cho t ng dòng âm thanh và hình nh Ta c ng có th t o ra các b n sao c a

Trang 30

DataSource và g i các b n sao này nh là các luông RTP riêng r trên cùng m t phiên hay trên các phiên khác nhau

T o m t createSendStream trên SessionManager v a m i xây d ng

và kh i t o v i tham s là DataSource và ch s lu ng B qu n lý phiên s

t o m t SendStream cho SourceStream ch đ nh

Kh i đ ng phiên b ng ph ng th c SessionManager.startSession

Ki m soát quá trình truy n thông b ng các ph ng th c c a đ i t ngSendStream M t SendStreamListener có th đ c đ ng kí đ l ng nghe các s ki n c a SendStream

T o lu ng g i d li u

Tr c khi b qu n lý phiên có th truy n d li u, nó c n đ c bi t n i mà d li u đ c

l y đ truy n đi Khi xây d ng m t SendStream, ta c n ch cho SessionManager

ph n DataSource mà nó s l y d li u Vì DataSource có th ch a nhi u lu ng, ta

c n ch rõ ch s c a lu ng ta c n truy n trong phiên này Ta có th t o ra nhi u SendStream khác nhau b ng createSendStream vói nhi u DataSource khác nhau hay v i các ch s lu ng khác nhau

B qu n lý phiên s truy v n đ nh d ng c a SourceStream đ xác đ nh xem d ng

payload c a đ nh d ng này đã đ c đ ng kí hay ch a N u đ nh d ng c a d li u không

ph i là đ nh d ng RTP ho c d ng payload không th xác đ nh đ c cho đ nh d ng RTP, h

th ng s phát sinh l i UnSupportedFormatException v i thông đi p t ng ng

Các payload đ ng có th đ c k t h p v i đ nh d ng RTP b ng ph ng th c SessionManager.addFormat

S d ng d li u ngu n d ng Clonable

R t nhi u k ch b n s d ng RTP bao g m vi c g i m t lu ng lên nhi u phiên RTP và

vi c chuy n mã m t lu ng d li u thành nhi u đ nh d ng và g i chúng lên nhi u phiên RTP Khi c n ph i g i m t lu ng đã đ c đ nh d ng lên nhi u phiên RTP, ta c n t o nhi u

b n clone cho DataSource l y đ c t b thu nh n d li u Processor i u này đ c

th c hi n b ng cách t o m t cloneable DataSource thông qua Manager b ng hàm

getClone M t Processor có th đ c t o ra t t ng cloneable DataSource, t các

track đ c đ nh d ng theo ki u mong mu n c a nó và t các lu ng d li u đ c g i t m t phiên RTP

S d ng d li u ngu n d ng Merging

N u mu n tr n các lu ng media c a cùng m t d ng (nh âm thanh) thành m t lu ng t

m t ngu n, ta c n s d ng m t RTP mixer N u các lu ng d li u có ngu n g c t

Trang 31

nhi u DataSource, ta c n t o các MergingDataSource t các DataSource và dùng SessionManager đ t o lu ng d li u

Ki m soát lu ng g i d li u

S d ng các ph ng th c RTPStream start và stop đ ki m soát m t SendStream b t đ u truy n d li u thì m i SendStream c n ph i đ c b t đ u

Vi c b t đ u và k t thúc m t SendStream c ng gây tác đ ng lên DataSource

c a nó Tuy nhiên, n u DataSource đ c kh i đ ng đ c l p trong khi SendStream đang d ng d li u s b m t (PushBufferDataSource) hay không đ c kéo (PullBuffer DataSource) b i b qu n lý phiên Trong kho ng th i gian này, không có lu ng d li u nào đ c truy n trên m ng

Ví d 3: nh n tín hi u âm thanh mono và g i nó lên m t phiên RTP

AudioFormat format = new AudioFormat(AudioFormat.ULAW,

//lúc này, vi c t o processor đã thành công

// Realize processer và khóa đ n khi nó đ c configure processor.configure();

boolean encodingOk = false;

// Duy n và ch nh các đ nh d ng các track sang d ng ULAW_RTP

for (int i = 0; i < track.length; i++) {

Trang 32

// block until realized

// get the output datasource of the processor and exit

Trang 33

• Xác đ nh v trí c a thi t b b ng đ i t ng CaptureDeviceManager

• T o đ i t ng CaptureDeviceInfo cho thi t b

• L y đ i t ng MediaLocator t đ i t ng CaptureDeviceInfo c a thi t b và dùng nó đ t o DataSource

• T o Player hay Processor t DataSource

• Kh i đ ng Player hay Processor và b t đ u ti n trình thu d li u

N u s d ng Player ta ch có th phát l i d li u media, còn đ x lý hay l u tr thì

ph i dùng Processor.

2.3.1.1 Truy c p thi t b thu nh n tín hi u

Ta truy c p đ n các thi t b thu nh n tín hi u b ng CaptureDeviceManager

CaptureDeviceManager là registry ch y u cho t t c các thi t b đ c JMF nh n

d ng Ta có th li t kê các thi t b nh n đ c b ng ph ng th c CaptureDeviceManager getDeviceList

M i thi t b đ c đ i di n b i m t đ i t ng CaptureDeviceInfo l y

đ c CaptureDeviceInfo cho m t thi t b , ta g i ph ng th c getDevice c a

đ i t ng CaptureDeviceManager:

CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("deviceName");

2.3.1.2 Thu nh n d li u media

l y đ c d li u media t m t thi t b , c n l y đ c đ i t ng

MediaLocator c a thi t b t đ i t ng CaptureDeviceInfo c a nó Ta c ng

có th ho c dùng MediaLocator đ t o ra m t Player hay Processor, ho c dùng MediaLocator đ t o ra m t DataSource nh là đ u vào cho Player hay Processor

kh i đ ng ti n trình thu tín hi u g i ph ng th c start c a Player hay Processor

2.3.1.3 Cho phép ng i dùng ki m soát ti n trình thu nh n tín hi u

M i thi t b đ u có các thu c tính đi u khi n rõ ràng cho phép ki m soát thi t b Hai đ i t ng đi u khi n PortControl và MonitorControl đ c đ nh ngh a đ

ki m soát thi t b khi l p trình Ta có th truy c p các đi u khi n này b ng getControl c a DataSource l y đ c v i tên thi t b t ng ng

i u khi n PortControl cho phép ch n c ng dùng đ nh n d li u, còn MonitorControl cung c p ph ng ti n đ quan sát thi t b

Gi ng v i các đ i t ng Control khác, n u có các thành ph n tr c quan giao ti p

đ c v i đi u khi n PortControl hay MonitorControl, ta có th l y nó b ng

ph ng th c getControlComponent Vi c thêm các thành ph n đó vào applet hay

các ng d ng window có th giúp ng i dùng giao tác v i đi u khi n thu nh n d li u

Trang 34

Ví d 4: Hi n th giao di n cho processor:

Component controlPanel, visualComponent;

if ((controlPanel = p.getControlPanelComponent()) != null) add(controlPanel);

if ((visualComponent = p.getVisualComponent()) != null) add(visualComponent);

2.3.1.4 Thu và phát d li u media tr c tí p

thu nh n tr c ti p đ c d li u t microphone và hi n th nó, ta c n :

• L y đ i t ng CaptureDeviceInfo c a microphone

• T o m t Player s d ng MediaLocator có đ c t đ i t ng CaptureDeviceInfo (Ta có th t o Player b ng cách g i createPlayer(MediaLocator) hay t o m t DataSource v i MediaLocator và s d ng createPlayer(DataSource) đ t o ra

Player.)

Ví d 5: Nh n và hi n th d li u âm thanh t m t microphone

// L y đ i t ng CaptureDeviceInfo // cho thi t b thu nh n âm thanh Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("linear", 44100, 16,

if (deviceList.size() > 0)

di = (CaptureDeviceInfo)deviceList.firstElement();

else // Thoát kh i ch ng trình n u không tìm đ c // thi t b đúng yêu c u

System.exit(-1);

// T o Player cho thi t b try{

Player p = Manager.createPlayer(di.getLocator());

} catch (IOException e) {

} catch (NoPlayerException e) {}

2.3.1.5 Ghi d li u âm thanh xu ng t p tin

B n có th ghi d li u media ra file b ng DataSink nh n và l u tr d li u ta

c n

• T o m t đ i t ng CaptureDeviceInfo cho thiêt b

• T o m t Processor s d ng MediaLocator l y đ c t đ i t ng CaptureDeviceInfo

• L y d li u ra DataSource t Processor

• T o m t MediaLocator cho file c n l u tr d li u

• T o m t DataSink s d ng d li u ra DataSource

• Kh i đ ng DataSink và Processor

Trang 35

Ví d 6: Ghi d li u âm thanh xu ng t p tin v i DataSink

try {

p = Manager.createProcessor(di.getLocator());

sh = new StateHelper(p);

} catch (IOException e) { System.exit(-1);

} catch (NoProcessorException e) { System.exit(-1);

} // C u hình Processor

if (!sh.configure(10000)) System.exit(-1);

// Realize Processor và đ nh đ nh d ng cho d li u xu t

p.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE));

if (!sh.realize(10000)) System.exit(-1);

DataSource source = p.getDataOutput();

// T o m t MediaLocator đ n file ghi d li u

MediaLocator dest = new MediaLocator("file://foo.wav");

DataSink filewriter = null;

try { filewriter = Manager.createDataSink(source, dest);

filewriter.open();

} catch (NoDataSinkException e) { System.exit(-1);

} catch (IOException e) { System.exit(-1);

} catch (SecurityException e) { System.exit(-1);

} // Ch đ nh kích th c t i đa c a t p tin c n ghi d li u StreamWriterControl swc = (StreamWriterControl)

p.getControl("javax.media.control.StreamWriterControl"); // nh gi i h n là 5MB

if (swc != null) swc.setStreamSizeLimit(5000000);

// B t đ u ghi d li u try {

filewriter.start();

} catch (IOException e) { System.exit(-1);

Trang 36

// L y d li u trong 5 giây sh.playToEndOfMedia(5000);

sh.close();

// Ch tín hi u EndOfStream t DataSink và đóng DataSink filewriter.close();

2.3.1.6 Chuy n mã d li u âm thanh nh n đ c

Ta có th c u hình m t Processor đ chuy n mã d li u media thu đ c tr c

khi hi n th , truy n đi hay l u tr chuy n mã d li u âm thanh sang đ nh d ng IMA4 tr c khi l u tr nó ta ti n hành :

• L y đ i t ng MediaLocator c a thi t b và xây d ng m t Processor

Ví d 7: Chuy n mã d li u âm thanh nh n đ c:

// C u hình Processor

if (!sh.configure(10000)) System.exit(-1);

p.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.WAVE));

// L y các TrackControls TrackControl track[] = p.getTrackControls();

boolean encodingPossible = false;

// Chuy n đ nh d ng d li u sang JPEG for (int i = 0; i < track.length; i++) { try {

track[i].setFormat(new AudioFormat(AudioFormat.JPEG));

encodingPossible = true;

} catch (Exception e) { // cannot convert to ima4 track[i].setEnabled(false);

} }

if (!encodingPossible) { sh.close();

System.exit(-1);

}

if (!sh.realize(10000)) System.exit(-1);

Trang 37

2.3.2 Các thành ph n trình di n d li u

Trong JMF, quá trình trình di n đ c mô hình b i giao giao ti p Controller Controller đ nh ngh a tr ng thái và b máy đi u khi n c b n cho m t đ i t ng đi u

khi n, hi n th , ho c thu nh n các lu ng time-based media

M t controller s chuy n các s ki n đ n m t b đi u khi n c th nh MediaEventsđ cung c p các thông báo v s thay đ i trang thái c a nó nh n các s

ki n t m t Controller nh Player, ta ph i th c thi giao ti p ControllerListener JMF API đ nh ngh a hai lo i Controllers: Player và Processor M t Player ho c Processorđ c kh i t o b ng m t datasource c th và th ng s không đ c s d ng

l i đ trình di n các d li u media khác

Hình 12: Các JMF Controller

2.3.2.1 Player

M t Player s x lý lu ng d li u media nh n vào và trình di n nó Player s

đ c nh n d li u t DataSource Tùy theo lo i d li u audio hay video s đ c trình

Trang 38

2.3.2.2 Các tr ng thái c a Player

M t Player s trong m t ho c sáu tr ng thái Giao ti p Clock đ nh ngh a hai

tr ng thái chính: Stopped và Started d dàng trong vi c đi u khi n, Controllerchia tr ng thái Stopped thành n m tr ng thái d phòng: Unrealized, Realizing, Realized, Prefetching, và Prefetched

Thông th ng, m t Player s ph i tr i qua các tr ng thái sau đ đ n đ c tr ng thái Started:

• Khi prefetchđ c g i, Player s chuy n tr ng thái c a nó sang tr ng thái Prefetching M t Prefetching Player s chu n b đ trình di n d li u media Trong su t giai đo n này, Player s t i l i d li u, và làm m i th đ chu n b trình

di n

• Khi Player hoàn thành tr ng thái Prefetcing, nó chuy n sang tr ng thái Prefetched ây là tr ng thái đ chu n b started

• G i startđ đ t Player vào tr ng thái Started

M t Player s g i m t TransitionEvents khi có d ch chuy n t tr ng thái này

đ n tr ng thái khác Giao ti p ControllerListener cung c p m t cách th c cho

đ nh lo i tr ng thái c a

Ngày đăng: 27/10/2016, 02:53

TỪ KHÓA LIÊN QUAN

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