2012-10-22 31 views
5

Tôi muốn chèn phụ đề vào tệp phương tiện mà không cần sử dụng Thư viện tự động cung cấp (như DirectShow)Có phương pháp nào để có được lớp phủ tệp phương tiện khi đang phát không?

Tôi đã sử dụng cách vẽ bằng cách sử dụng tay cầm của cửa sổ để bàn, nhưng nó không hoạt động. Tôi nghĩ đó là vì tốc độ cập nhật ... đúng không? Dù sao, có bất kỳ chức năng hoặc phương pháp nào để vẽ trên một tệp phương tiện hoặc xử lý lớp phủ của chúng không?

[DllImport("user32.dll")] 
    static extern IntPtr GetDesktopWindow(); 

    [DllImport("user32.dll")] 
    static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgn, uint flags); 

    [DllImport("user32.dll")] 
    static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc); 

    public void SubtitleDraw() 
    { 
     IntPtr hWnd = GetDesktopWindow(); 
     IntPtr hDc = GetDCEx(hWnd, IntPtr.Zero, 1027); 

     Font font1 = new Font("Times New Roman", 24, FontStyle.Regular,GraphicsUnit.Pixel);  
     Point pt = new Point(40, 375); 

     PointF pointF1 = new PointF(); 
     pointF1 = PlayerForm.ActiveForm.PointToScreen(pt); 

     Graphics g = Graphics.FromHdc(hDc); 
     g.DrawString(SubtitleText, font1, Brushes.Black, pointF1); 

     ReleaseDC(hWnd, hDc); 
    } 
+0

Bạn có thể làm rõ nơi phát lại phương tiện thực sự xảy ra trước khi tôi trả lời không? Có phải nó nằm trong một trong các mẫu đơn của bạn, hoặc trong một quy trình khác không? Tôi hỏi vì mô tả và mã có vẻ hơi mâu thuẫn. Bạn tham chiếu đến việc không muốn sử dụng một thư viện như DirectShow, nhưng bạn nhìn vào một biểu mẫu cho các tọa độ, có thể ngụ ý phát lại đang xảy ra trong một trong các biểu mẫu của bạn? Nếu vậy, sẽ không cần phải nắm bắt các xử lý máy tính để bàn chính nó. – Frostie

+0

Phát lại đa phương tiện tôi đã sử dụng được bao gồm trong AudioVideoPlayback của DirectX. Implying phát lại là ra khỏi các hình thức của tôi ... nó chỉ được sử dụng bảng điều khiển như là chủ sở hữu của trang web của nó. Trên thực tế, tôi không thể hiểu câu trả lời ur có liên quan đến mối quan hệ giữa quá trình và hình thức phát lại (becoz Im một người mới). –

+0

Có thể tìm kiếm các từ "WPF" và "Adorner" có thể giúp bạn? – juFo

Trả lời

0

Bạn sẽ muốn nghiên cứu DirectShow và bộ lọc nếu bạn muốn vẽ trên đầu video trong khi phát ở tốc độ khung hình phù hợp. Có một số tài liệu nằm rải rác ở đó để biết cách tương tác với các biểu đồ lọc DirectShow từ .NET, nhưng nó khá khan hiếm.

Nếu bạn đang phát video trong điều khiển phương tiện, video sẽ hầu như luôn phát video trong lớp phủ, vì vậy mọi thứ bạn vẽ "trên đầu" sẽ nằm trên đầu điều khiển nhưng vẫn ở bên dưới " lớp phủ "nơi video thực đang phát.

Các vấn đề liên quan