• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Sử dụng đối tượng Shockwave Flash để chơi Media File và Medi

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
tuyen_dt18
Guru
Guru
Bài viết: 259
Ngày tham gia: T.Bảy 19/04/2008 8:46 pm
Đến từ: Hưng Yên
Been thanked: 43 time
Liên hệ:

Sử dụng đối tượng Shockwave Flash để chơi Media File và Medi

Gửi bàigửi bởi tuyen_dt18 » T.Bảy 07/01/2012 8:06 pm

Tên bài viết: Sử dụng đối tượng Shockwave Flash để chơi Media File và Media Stream
Tác giả: tuyen_dt18
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Bài viết nhằm hướng dẫn các bạn sử dụng đối tượng Shockwave Flash để chơi một file Media hoặc một Media Stream.


Yêu cầu : Để có đối tượng Shockwave Flash các bạn cần phải cài đặt Flash Player dành cho Internet Explorer trên máy tính của mình.
Để có thể chơi tệp tin Media, các bạn phải có một Player, các bạn có thể tải ở địa chỉ http://player.longtailvideo.com/player.swf, hoặc tại đây
Các bạn có thể kiểm tra Flash đã được cài đặt hay chưa bằng cách vào thư mục "C:\Windows\System32\Macromed\Flash" trong máy tính của mình.

Bước 1 : Các bạn khởi chạy VB6 và chọn tạo mới một Standard EXE Project.
1.jpg
Bước 1
1.jpg (67.67 KiB) Đã xem 3548 lần

Bước 2 : Các bạn vào Menu : Project --> Components để tham chiếu tới đối tượng ShockwaveFlash
2.jpg
Bước 2
2.jpg (76.09 KiB) Đã xem 3548 lần

Bước 3 : Khi hộp thoại tham chiếu Components bật lên, chọn vào mục Shockwave Flash, nhấn OK
3.jpg
Bước 3
3.jpg (158.81 KiB) Đã xem 3548 lần

Sau khi đã tham chiếu thành công, trên thanh ToolBox sẽ xuất hiện biểu tượng của Flash như dưới đây:
4.jpg
Biểu tượng Flash
4.jpg (15.08 KiB) Đã xem 3548 lần


Bước 4 : Viết chương trình
Cách sử dụng đối tượng Shockwave Flash : Để chơi một tệp tin Media hoặc Media Stream, ta cần cung cấp cho đối tượng Shockwave Flash biết các tham số như : Đường dẫn tệp tin cần chơi, hoặc địa chỉ của Media Stream cùng một số tham số phụ khác. Các tham số này được yêu cầu bởi đối tượng Shockwave Flash hoặc do đối tượng Player (tệp tin có đuôi .swf) do người viết Flash tạo ra.
Tham số riêng của Player thì tùy theo người tạo ra trình Player đó, còn tham số của đối tượng Shockwave Flash thì có một số thuộc tính như sau : Movie, FlashVars, ....
Một số thuộc tính phổ biến :
autoStart : gán="true" để tự động chơi khi đã chỉ định nguồn Media để chơi và="false" để ngược lại.
allowFullScreen : gán="true" sẽ hiệu lực khả năng phóng Toàn màn hình nếu trình Player có sẵn tính năng.
file : Chỉ định tệp tin Media cần chơi. Chú ý : thuộc tính file mà ta cung cấp thường có ký tự "\" trong đó, mà đối tượng Player lại không hiểu dạng đường dẫn của VB6, nên ta sẽ dùng cách là Sao chép tệp tin Player vào cùng thư mục của tệp tin Media, hoặc Sao chép ngược lại rồi chỉ cần chỉ định Tên của tệp tin chứ không cần chỉ định đường dẫn đầy đủ.
streamer : Chỉ định địa chỉ của Máy chủ chứa Media Stream.

Trong bài viết này : Ở bài viết này chúng ta sẽ sử dụng thuộc tính file và thuộc tính streamer là chính. Để gán các giá trị này ta sẽ gán vào thuộc tính "movie" của đối tượng Shockwave Flash và các thuộc tính phân cách nhau bằng dấu &(chú ý trong các thuộc tính không nên có dấu & để tránh nhầm lẫn). Ví dụ : ShockwaveFlash1.movie="file=Tep_tin_Media&autostart=true"

Bắt đầu viết chương trình :
Thiết kế Form như dưới đây :
5.jpg
Bước 4


Xin nói qua về việc thêm đối tượng Shockwave Flash vào Form của chương trình. Tôi không hiểu tại sao, nhưng nếu thêm đối tượng Shockwave Flash vào từ lúc thiết kế thì không thể Save Project lại được, và sau này khi mở lại Project cũng hay xảy ra lỗi. Tuy nhiên, các bạn có thể thêm được bằng cách tạo cho Form một Menu bất kỳ. Điều này tôi thực sự chưa hiểu tại sao, nhưng tôi đã làm nó.
Để tránh lỗi này, tôi chọn cách thêm đối tượng lúc Runtime.

Sau khi thiết kế, các bạn Paste Mã nguồn dưới đây vào Form. Sau đó chạy chương trình và nhập vào Text1 đường dẫn tới tệp tin Player có đuôi .swf, Text2 là đường dẫn tới tệp tin Media như tôi đã làm trên máy của mình:
6.jpg
Bước 5
6.jpg (27.04 KiB) Đã xem 3528 lần

  1. Option Explicit
  2.  
  3. Private Declare Function CopyFileW Lib "kernel32" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long, ByVal bFailIfExists As Long) As Long
  4. Private Declare Function DeleteFileW Lib "kernel32" (ByVal lpFileName As Long) As Long
  5. Private Declare Function GetTempFileNameW Lib "kernel32" (ByVal lpszPath As Long, ByVal lpPrefixString As Long, ByVal wUnique As Long, ByVal lpTempFileName As Long) As Long
  6. '
  7. Private ShockwaveFlash1 As Object
  8. Private bShockwaveFlash1 As Boolean
  9. '
  10.  
  11.  
  12. Private Sub InitFlashObject(ByVal bInit As Boolean)
  13.     On Error GoTo ErrorHandler
  14.     If (bInit) Then
  15.         If (ShockwaveFlash1 Is Nothing) Then
  16.             Set ShockwaveFlash1 = Me.Controls.Add("ShockwaveFlash.ShockwaveFlash", "ShockwaveFlash1")
  17.         End If
  18.         With ShockwaveFlash1
  19.             .AllowFullScreen = "true"
  20.             .Move 0, Text2.Top + Text2.Height + 100, Me.ScaleWidth, 3800
  21.             .Visible = True
  22.         End With
  23.     Else
  24.         Me.Controls.Remove "ShockwaveFlash1"
  25.         Set ShockwaveFlash1 = Nothing
  26.     End If
  27.     bShockwaveFlash1 = Not (ShockwaveFlash1 Is Nothing)
  28.     Exit Sub
  29. ErrorHandler:
  30.      Err.Clear
  31. End Sub
  32.  
  33. '
  34. Private Function DeleteFile(ByVal szFileName As String) As Boolean
  35.     DeleteFile = DeleteFileW(StrPtr(szFileName))
  36. End Function
  37. '
  38. Private Function CopyFile(ByVal szSource As String, ByVal szDest As String, Optional ByVal bOverwrite As Boolean = False) As Boolean
  39.     CopyFile = CopyFileW(StrPtr(szSource), StrPtr(szDest), Not bOverwrite)
  40. End Function
  41. '
  42. Private Function CreateUniqueTempFile(Optional ByVal szPath As String, Optional ByVal szPrefix As String) As String
  43.     Dim lpszTempFile As String
  44.     Dim lReturn As Long
  45.     '
  46.    lpszTempFile = String$(255, vbNullChar)
  47.     lReturn = GetTempFileNameW(StrPtr(szPath), StrPtr(szPrefix), ByVal 0, StrPtr(lpszTempFile))
  48.     CreateUniqueTempFile = lpszTempFile
  49.     lReturn = InStr(1, lpszTempFile, vbNullChar)
  50.     If (lReturn > 0) Then CreateUniqueTempFile = Left$(lpszTempFile, lReturn - 1)
  51. End Function
  52. '
  53. Private Function GetFilePath(ByVal szFullPathName As String, Optional ByRef lpszFileName) As String
  54.     Dim nPos As Long
  55.     If (Not IsMissing(lpszFileName)) Then
  56.         lpszFileName = szFullPathName
  57.     End If
  58.     nPos = InStrRev(szFullPathName, "\")
  59.     If (nPos > 0) Then
  60.         GetFilePath = Left$(szFullPathName, nPos)
  61.         lpszFileName = Mid(szFullPathName, nPos + 1)
  62.     End If
  63. End Function
  64. '
  65. Private Sub GetFilePart(ByVal szFullPathName As String, Optional lpPath, Optional lpFile)
  66.     Dim nPos As Long
  67.     Dim szPath As String
  68.     Dim szFile As String
  69.     nPos = InStrRev(szFullPathName, "\")
  70.     If (nPos > 0) Then
  71.         szPath = Left$(szFullPathName, nPos)
  72.         szFile = Mid(szFullPathName, nPos + 1)
  73.     Else
  74.         szPath = szFile
  75.         szFile = ""
  76.     End If
  77.     If (Not IsMissing(lpPath)) Then lpPath = szPath
  78.     If (Not IsMissing(lpFile)) Then lpFile = szFile
  79. End Sub
  80. '
  81. Private Function PlayerMediaFile(ByVal szMedia As String, ByVal szPlayer As String)
  82.     Dim szFileName As String
  83.     Dim szFilePath As String
  84.     Dim szPlayerPathName As String
  85.    
  86.     Call GetFilePart(szMedia, szFilePath, szFileName)    'Lay ve Ten thu muc va Ten tep tin Media
  87.    szPlayerPathName = CreateUniqueTempFile(szFilePath) 'Tao tep tin ta.m trong cung thu muc voi tep tin Media
  88.    CopyFile szPlayer, szPlayerPathName, True           'Sao chep tep tin Player vao dia chi tep tin ta.m (ghi de`).
  89.  
  90.     With ShockwaveFlash1
  91.         .Movie = ""
  92.         .Stop
  93.         .Movie = szPlayerPathName & "?autostart=true&allowFullScreen=true&volume=100&stretching=fill&file=" & szFileName
  94.         DeleteFile szPlayerPathName     'Xoa tep tin player sau khi ShockwaveFlash da ta?i len.
  95.        .Play
  96.     End With
  97. End Function
  98.  
  99. Private Sub Command1_Click()
  100.     PlayerMediaFile Text2.Text, Text1.Text
  101. End Sub
  102.  
  103. Private Sub Form_Load()
  104.     InitFlashObject True
  105. End Sub
  106.  
  107. Private Sub Form_Unload(Cancel As Integer)
  108.     InitFlashObject False
  109. End Sub
  110.  
  111.  


Nhán vào nút Play và kết quả là :
7.jpg
Kết quả
7.jpg (49.01 KiB) Đã xem 3528 lần


Đây là Project hoàn chính :
ShockwaveFlash.zip
Mã nguồn đính kèm
(106.98 KiB) Đã tải 1086 lần


Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.

hugoonline
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Bảy 29/03/2008 5:57 pm

Re: Sử dụng đối tượng Shockwave Flash để chơi Media File và

Gửi bàigửi bởi hugoonline » T.Ba 10/01/2012 3:21 pm

Cảm ơn bạn.
Để không bị lổi khi save chúng ta nên sử dụng flash10e.ocx trở xuống.

dongphuong2999
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 54
Ngày tham gia: T.Sáu 02/07/2010 10:53 am
Has thanked: 1 time
Been thanked: 7 time
Liên hệ:

Re: Sử dụng đối tượng Shockwave Flash để chơi Media File và

Gửi bàigửi bởi dongphuong2999 » T.Ba 08/05/2012 10:43 pm

  1. tt = "D:\player.swf"
  2.     tt = tt & "?autostart=true&volume=100&stretching=fill&file=tên.flv"


cái tên.flv phải nằm cùng path với player
Cái tên.flv nhất thiết phải có chử flv không có nó ko chạy
vậy anh cho em hỏi có cách nào khắc phục không anh , hay do player.swf
em thay nó bằng "D:\..." thì dấu ": " nó ra "|" ???

Hình đại diện của người dùng
tuyen_dt18
Guru
Guru
Bài viết: 259
Ngày tham gia: T.Bảy 19/04/2008 8:46 pm
Đến từ: Hưng Yên
Been thanked: 43 time
Liên hệ:

Re: Sử dụng đối tượng Shockwave Flash để chơi Media File và

Gửi bàigửi bởi tuyen_dt18 » T.Hai 04/06/2012 1:00 am

Đúng là file FLV phải nằm cùng với Player thì nó mới chạy. Cách khắc phục mà tôi làm, đó là mỗi khi Play một file FLV, tôi Copy cái Player vào cùng thư mục với file FLV đó và xóa nó đi sau khi nó đã được Load
Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách