Danh mục

Làm việc với video flash (file.flv)

Số trang: 7      Loại file: docx      Dung lượng: 22.30 KB      Lượt xem: 3      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

ActionScript 3.0 yêu cầu một số các lớp làm việc cùng nhau để tải và Flash video phát lại. Bạn phải sử dụng một đối tượng NetStream để tải các video và kiểm...
Nội dung trích xuất từ tài liệu:
Làm việc với video flash (file.flv) LÀM VIỆC VỚI VIDEO FLASH (FILE .FLV)ActionScript 3.0 yêu cầu một số các lớp làm việc cùng nhau để tải và Flash video phát lại. Bạn phải sửdụng một đối tượng NetStream để tải các video và kiểm soát phát lại, tuy nhiên, lớp NetStream chỉ quantâm cách chuyển dữ liệu, chứ không biết làm thế nào để đưa dữ liệu vào video. Vì vậy bạn phải sửdụng một đối tượng Video. Các đối tượng Video cho phép sử dụng dữ liệu từ đối tượng NetStream đểđưa các dữ liệu video lên màn hình.Để làm được điều đó cần phải có một đối tượng NetConnection. Các đối tượng NetConnection xác địnhnguồn gốc của những dữ liệu mà các đối tượng NetStream sẽ xử lý. Khi các luồng video Flash từ m ộtServer truyền thông Flash (Flash Communication Server ) hoặc Server đa phương tiện Flash(Flash MediaServer) chuyển đi thì các đối tượng NetConnection sẽ hướng tới máy chủ. Với các video đang tải về,các đối tượng NetConnection bắt buột sử dụng một chuỗi kết nối null. Các mã sau đây xây dựng mộtđối tượng NetConnection và khởi tạo nó để sử dụng với quá trình tải video . Lưu ý rằng mã giả sử bạnđã import các lớp flash.net.NetConnection:import flash.media.Video;import flash.net.NetConnection;import flash.net.NetStream;var videoConnection: NetConnection = mới NetConnection ();videoConnection.connect (null);Một khi bạn đã xây dựng một đối tượng NetConnection và gọi phương thức kết nối connect( ) với thamsố là một giá trị null, ta xây dựng các đối tượng NetStream, và sau đó thông qua hàm dựng NetStreamtham chiếu đến các đối tượng NetConnection. Các mã sau đây xây dựng một đối tượng NetStream(giả sử bạn đã import flash.net.NetStream):var videoStream: NetStream = mới NetStream (videoConnection);Bạn đã xây dựng các đối tượng NetStream, baay giờ thêm một đối tượng Video, và kết hợp NetStreamvới Video.Lớp flash.media.Video là một đối tượng hiển thị, có nghĩa là bạn phải thêm nó vào danh sách hiển thị saukhi xây dựng. Các mã sau đây xây dựng một đối tượng Video mới và rồi thêm chúng vào danh sách hiểnthị:var video: Video = mới Video ();addChild (video);Bạn có thể kết hợp một đối tượng NetStream với một đối tượng video bằng cách sử dụng phương thứcattachNetStream() của đối tượng Video , thông qua tham số là đối tượng NetStreamvideo.attachNetStream (videoStream);Sau khi bạn gắn đối tượng NetStream vào đối tượng Video, bất kỳ dữ liệu video được kiểm soát bởi cácđối tượng NetStream đều được đưa ra bởi các đối tượng Video.Sau đó phải xác định tên file video cần thiết và cho phép video đó được phát:videoStream.play (example.flv);Trong quá trình biên dịch có thể xảy ra lỗi về dữ liệu loại metadatam, khi đó ta cần thiết lập hàm sau đểbỏ qua lỗi và không ném lỗi ra.luong_video.addEventListener(AsyncErrorEvent.ASYNC_ERROR, bo_qua_loi);function bo_qua_loi(event: AsyncErrorEvent): void {// bo qua loi}Tổng kết lại các điều trên ta có code tải video như sau:import flash.media.Video;import flash.net.NetConnection;import flash.net.NetStream;import flash.display.Sprite;var kn_video:NetConnection = new NetConnection( );kn_video.connect(null);var luong_video:NetStream = new NetStream(kn_video);var video:Video = new Video( );video.height=200;video.width=300;video.x=stage.stageWidth/2-100;video.y=stage.stageHeight/2-100;video.attachNetStream(luong_video);luong_video.play(Unefemmeamoureuse.flv);addChild(video);luong_video.addEventListener(AsyncErrorEvent.ASYNC_ERROR, bo_qua_loi);function bo_qua_loi(event: AsyncErrorEvent): void {// bo qua loi}Thời gian phát của video(videoStream).timeThời gian của toàn file video : Lớp Netstream không có hổ trợ việc đọc th ời gian t ổng của m ột video. Tuy nhiêntrong video thông thường có một metadata ghi lại tổng đó. Thuộc tính onmetadata cho phép đ ọc các metadata đónhưng yêu cầu phải tạo ra một đối tượng để lưu các metadata và ta sẽ đọc thời gian ghi trong đ ối tượngvar thoigian:Object = new Object( );thoigian.onMetaData = function(metadata:Object):void { trace(metadata.duration);};videoStream.client= thoigian;Ví dụ : Trong code ở ví dụ trên để xuất thời gian của video ta thêm đoạn code sau vào dưới đoạn codetrên :var thoigian:Object = new Object( );thoigian.onMetaData = function(metadata:Object):void { trace(Math.floor(metadata.duration/60)+:+Math.floor (metadata.duration-60*Math.floor(metadata.duration/60)));};luong_video.client= thoigian;vi du : trong ví dụ sau ta load một file .Flv và cho hiển thi thời gian play và tổng thời gian của file videopackage { import flash.text.TextField; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.display.TextFieldAutoSize; import flash.display.Sprite; import flash.events.Event; public class Example extends Sprite { private var _stream:NetStream; private var _video:Video; private var _playbackTime:TextField; private var _duration:uint; public function Example( ) { _video = new Video(160, 120); _playbackTime = new TextField( ); _playbackTime.autoSize = TextFieldAutoSize.LEFT; _playbackTime.y = 120; _playbackTime.text = test; _duration = 0; var connection:NetConnection = new NetConnection( ); connection.connect(null); _stream = new NetStream(connection); _stream.play(video.flv); var client:Object = new Object( ); client.onMetaData = onMetaData; _stream.client = client; _video.attachNetStream(_stream); addChild(_video); addChild(_playbackTime); addEventListener(Event.ENTER_FRAME, onEnterFrame); ...

Tài liệu được xem nhiều: