none
WPF VLC media player RRS feed

  • 質問

  • MediaPlayer組込みについて質問させて頂きます。
    WPFで開発しています。

    ウインドウ内にVLC MediaPlayerを組込みストリーミングを再生したいと考えています。

    Vlc.DotNet.Wpfをインストールしましたが使い方がよくわかりません。

    ネットに情報は出ていますが私の力不足で出来ませんでした。

    お力を貸して頂けませんでしょうか。

    よろしくお願いします。


    • 編集済み kazu540 2019年3月14日 11:20
    2019年3月14日 11:10

回答

  • あくまで自分の場合ですが、以下の手順で動作再生までたどり着きました。


    NuGet 経由で取得したライブラリの方は、古いものなのか分かりませんがうまく扱えませんでした。
    なので、ソース取得してビルドして使うようにします。

    https://github.com/ZeBobo5/Vlc.DotNet

    リビルドした際、net20, net35 が見つからないというエラーが出る
    →インストールしていないため。ソリューションエクスプローラーから削除できなかったため、メモ帳か何かで csproj ファイルを直接開いて修正

    プロジェクトファイルは新しいバージョンのものだった。
    <Project Sdk="Microsoft.NET.Sdk">
      <Import Project="..\Vlc.DotNet.props" />
      
      <PropertyGroup>
        <Title>Vlc.DotNet.Core</Title>
        <TargetFrameworks>net20;net35;net40;net45;netstandard2.0;netstandard1.3</TargetFrameworks>
        <Description>.Net API to use the audio/video capabilities of the VLC libraries.</Description>
        <PackageTags>vlc media api</PackageTags>
      </PropertyGroup>
    
      <ItemGroup>
        <ProjectReference Include="..\Vlc.DotNet.Core.Interops\Vlc.DotNet.Core.Interops.csproj" />
      </ItemGroup>
    
    </Project>

    これのうち、TargetFrameworks タグの値を削って保存(検証のため netstandard も削除)
    <TargetFrameworks>net40;net45</TargetFrameworks>


    自分の環境に合わせて、以下同じことをする

    ・Vlc.DotNet.Core
    ・Vlc.DotNet.Core.Interops
    ・Vlc.DotNet.Forms
    ・Vlc.DotNet.Wpf

    vs で再度開いてリビルド。“Samples.Wpf.Advanced”をスタートアッププロジェクトに設定

    ※Samples.Core.Recording プロジェクトの方でビルドエラーが出るが無視
    エラー CS0012 型 'VlcManager' は、参照されていないアセンブリに定義されています。
    アセンブリ 'Vlc.DotNet.Core.Interops, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84529da31f4eb963' に参照を追加する必要があります。

    そのまま実行、サンプルの動画視聴できた


    --
    黒い画面は分からないですが、エラーとか出力されていないですか?exe ファイルと同じフォルダ内に、libvlc フォルダとその中の32, 64ビット別のライブラリはありますか?というか、開発環境(OS、Visual Studio、ターゲットフレームワーク)は何でしょうか?それくらいしか思いつきませんでした。


    • 回答としてマーク kazu540 2019年3月18日 1:08
    2019年3月16日 2:06

すべての返信

  • Vlc.DotNet.Wpf は分からないですが、英語分からなくてもいいので、以下とかを写経したら雰囲気が分かるかもしれません。



    HOW TO RUN LIVE STREAMING IN WPF
    https://social.msdn.microsoft.com/Forums/en-US/0198ecbf-a265-4cff-8da0-d338c42ae85e/how-to-run-live-streaming-in-wpf?forum=wpf

    umiyuki/MagicalPlayer
    https://github.com/umiyuki/MagicalPlayer

    Getting started
    https://github.com/ZeBobo5/Vlc.DotNet/wiki/Getting-started
    Getting libvlc サブ項目のあたり?


    > Vlc.DotNet.Wpfをインストールしましたが使い方がよくわかりません。
    > ネットに情報は出ていますが私の力不足で出来ませんでした。
    見た解説記事のリンクは覚えていますか?どこまでトライしてみました?


    • 編集済み sutefu7 2019年3月15日 4:22
    2019年3月15日 4:17
  • sutefu7 様

    大変ありがとう御座います。

    教えて頂いたHOW TO RUN LIVE STREAMING IN WPFを写経して試してみましたが

    vlcContextの箇所でエラーが出てしまいます。。

    >見た解説記事のリンクは覚えていますか?どこまでトライしてみました?

    こちらを参考に一通りトライしてみました。

    https://github.com/ZeBobo5/Vlc.DotNet/wiki/Getting-started

    https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples

    こちらからサンプルをダウンロードしてSamples.Wpf.Advancedを実行しても

    画面は真っ黒のままで表示されません。

    Samples.Wpf.Advancedで指定フォルダの動画が再生出来るようしたいです。

    ご教授頂けると助かります。

    よろしくお願い致します。








    2019年3月15日 8:34
  • あくまで自分の場合ですが、以下の手順で動作再生までたどり着きました。


    NuGet 経由で取得したライブラリの方は、古いものなのか分かりませんがうまく扱えませんでした。
    なので、ソース取得してビルドして使うようにします。

    https://github.com/ZeBobo5/Vlc.DotNet

    リビルドした際、net20, net35 が見つからないというエラーが出る
    →インストールしていないため。ソリューションエクスプローラーから削除できなかったため、メモ帳か何かで csproj ファイルを直接開いて修正

    プロジェクトファイルは新しいバージョンのものだった。
    <Project Sdk="Microsoft.NET.Sdk">
      <Import Project="..\Vlc.DotNet.props" />
      
      <PropertyGroup>
        <Title>Vlc.DotNet.Core</Title>
        <TargetFrameworks>net20;net35;net40;net45;netstandard2.0;netstandard1.3</TargetFrameworks>
        <Description>.Net API to use the audio/video capabilities of the VLC libraries.</Description>
        <PackageTags>vlc media api</PackageTags>
      </PropertyGroup>
    
      <ItemGroup>
        <ProjectReference Include="..\Vlc.DotNet.Core.Interops\Vlc.DotNet.Core.Interops.csproj" />
      </ItemGroup>
    
    </Project>

    これのうち、TargetFrameworks タグの値を削って保存(検証のため netstandard も削除)
    <TargetFrameworks>net40;net45</TargetFrameworks>


    自分の環境に合わせて、以下同じことをする

    ・Vlc.DotNet.Core
    ・Vlc.DotNet.Core.Interops
    ・Vlc.DotNet.Forms
    ・Vlc.DotNet.Wpf

    vs で再度開いてリビルド。“Samples.Wpf.Advanced”をスタートアッププロジェクトに設定

    ※Samples.Core.Recording プロジェクトの方でビルドエラーが出るが無視
    エラー CS0012 型 'VlcManager' は、参照されていないアセンブリに定義されています。
    アセンブリ 'Vlc.DotNet.Core.Interops, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84529da31f4eb963' に参照を追加する必要があります。

    そのまま実行、サンプルの動画視聴できた


    --
    黒い画面は分からないですが、エラーとか出力されていないですか?exe ファイルと同じフォルダ内に、libvlc フォルダとその中の32, 64ビット別のライブラリはありますか?というか、開発環境(OS、Visual Studio、ターゲットフレームワーク)は何でしょうか?それくらいしか思いつきませんでした。


    • 回答としてマーク kazu540 2019年3月18日 1:08
    2019年3月16日 2:06
  • sutefu7様

    ご教授頂きましてありがとう御座います。
    出来るようになりました。
    何が原因だったのかこれから精査したいと思います。
    本当に有難う御座いました。
    2019年3月18日 1:07
  • sutefu7様

    サンプルのSamples.Wpf.Advancedを参考に自分のプロジェクトにvclを追加する場合
    どのようにしてvlcControl.csを参照するのでしょうか?

    参照には下記を追加してあります。
    Vlc.DotNet.Core
    Vlc.DotNet.Core.Interops
    Vlc.DotNet.Wpf

    サンプルのMainWindowをコピーしてビルドすると
    SourceProviderの箇所がエラーになります。

    ご教授頂けませんでしょうか。

    よろしくお願い致します。
    2019年3月18日 4:15
  • dll 参照の場合で説明します(すみませんが、プロジェクト参照したい場合は頑張ってください)

    以前動かしたサンプルプロジェクトには、ビルドした際に各dllが生成されているはず(bin/Debug 以下)なので、これらを、“参照の追加”から参照のリストに追加します。
    Vlc.DotNet.Core.dll
    Vlc.DotNet.Core.Interops.dll
    Vlc.DotNet.Wpf.dll

    後は、自プロジェクトに xaml とコードビハインドファイルをコピペだと、名前空間が違うとかが出る可能性があるので、xaml なら Vlc.DotNet.Wpf の属性追加と、Grid タグのまとまりでコピペされたほうが間違いがないような気がしますが、まぁ好き好きで・・・。コードビハインドは、Path.Combine が、System.IO と System.Windows.Shapes で名前解決できないので、 System.Windows.Shapes の using はコメントアウトして、残りはコピペかと思います。

    とりあえず、重要なことは、Nuget 取得の方の dll を参照するのではなく、自分でビルドして生成した方の dll を参照することです。

    後、自動的に exe ファイルと同じ場所に libvlc フォルダ以下ひとまとまりが用意されるわけではありませんので、簡単な対策としては、実行前に、あらかじめ libvlc フォルダ以下ひとまとまりを bin/Debug 以下に置いたほうが良いと思います。



    2019年3月18日 9:04
  • sutefu7様

    >とりあえず、重要なことは、Nuget 取得の方の dll を参照するのではなく、自分でビルドして生成した方の dll を参照することです。

    Nuget 取得の方のdllをアンインストールしてから自分でビルドして生成した方の dllを参照したら
    エラーが出ることなく出来ました。

    何度も丁寧にご教授して頂きまして
    本当に有難う御座いました。


    2019年3月18日 12:03