5

字幕を自動的に提供するライブラリを使用せずに、メディア ファイルに字幕を挿入したい (DirectShow のように)

ウィンドウ デスクトップの描画ハンドルを使って描画する方法を使用しましたが、うまくいきませんでした。更新の速さのせいだと思いますが…ですよね?とにかく、メディア ファイルをペイントしたり、オーバーレイ ハンドルを取得したりする機能や方法はありますか?

    [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);
    }
4

1 に答える 1

0

適切なフレームレートで再生しながらビデオの上に描画したい場合は、DirectShow とフィルターを調査する必要があります。.NET から DirectShow フィルター グラフを操作する方法については、いくつかのドキュメントが散在していますが、ほとんどありません。

メディア コントロールでビデオを再生している場合、ほとんどの場合オーバーレイでビデオを再生するため、「上に」描画するものはすべてコントロールの上に表示されますが、それでも「オーバーレイ」の下にあり、実際のビデオが再生されます。

于 2013-04-10T08:15:20.910 に答える