BogdanovKirill / RtspClientSharp

Pure C# RTSP client for .NET Standard without external dependencies and with true async nature. I welcome contributions.
MIT License
706 stars 284 forks source link

Native libs for Linux #44

Open dtjensen opened 5 years ago

dtjensen commented 5 years ago

I want to run this project using dotnet core on on an Ubuntu 18.04 machine. Is it possible to get a x64 build of the libs for that platform? When I I use the current .dlls, the dotnet runtime can't find the lib. I think the module/export defs are different from Windows to Linux.

If you don't have time to do this, any instructions you can give me on how to do it would be appreciated.

BogdanovKirill commented 5 years ago

Hi,

Please try latest version of nuget. It should work perfect because it doesn't contains external dependencies.

dtjensen commented 5 years ago

That's great news! Can you point me to the new C# classes that replace the old external references? I'm attempting to create jpeg snapshots from the h.264 stream.

BogdanovKirill commented 5 years ago

I don't understand your question. Just get it from nuget: https://www.nuget.org/packages/RtspClientSharp If you mean that want to use projects from examples folder undex linux then you should compile unmanaged projects by yourself

dtjensen commented 5 years ago

I am looking for examples of how to leverage the new libraries. For instance, how would this call change - FFmpegVideoPInvoke.CreateVideoDecoder(videoCodecId, out IntPtr decoderPtr) if the external dependencies are gone.

BogdanovKirill commented 5 years ago

You can't remove this call because in another case you should write decoders on pure c#. This is unreal and meaningless. Just compile FFmpeg to use it under linux

dtjensen commented 5 years ago

I'm confused. Sorry for the basic questions... but, if the external dependencies are gone and there is no need for the libffmpeghelper.dll anymore, what C# code would I write to create the FFmegVideoDecoder class to try and decode the h.264 video? That class is still dependent on that external lib from what I can tell in the latest version of the code. I must be missing something...

BogdanovKirill commented 5 years ago

I mean that RtspClientSharp project doesn't require external dependencies. But frame decoding/rendering processes are not included. I just wrote some example applications to show how to use this project. This examples have unmanaged dependencies which cannot be excluded easily.

dtjensen commented 5 years ago

Thanks for the quick responses. So, if I need to decode the h.264 stream to create jpeg snapshots, I still have to rely on the platform libraries like ffmpeg or possibly the external lib you wrote.

If that's the case, is the code for all the libs the libffmpeghelper requires (avcodec, avdevice, etc.) available for me to compile on Linux - I only see the libffmpeghelper code in the project? If that code is not available, then I will have to figure out how to write the C# interop code that can leverage ffmpeg on Linux directly.

Is that accurate?

BogdanovKirill commented 5 years ago

Thanks for the quick responses. So, if I need to decode the h.264 stream to create jpeg snapshots, I still have to rely on the platform libraries like ffmpeg or possibly the external lib you wrote.

Yes, you are right.

If that's the case, is the code for all the libs the libffmpeghelper requires (avcodec, avdevice, etc.) available for me to compile on Linux - I only see the libffmpeghelper code in the project? If that code is not available, then I will have to figure out how to write the C# interop code that can leverage ffmpeg on Linux directly.

You need to recompile libffmpeghelper for linux using GCC and make file. And then you can use without any modification this C# code.

neumartin commented 5 years ago

Hi! Can you tell me how can I compile it in Linux? Thanks!

i-TechSoftware commented 4 years ago

Hi guys! I posted a fork for .NET Core 3 and libffmpeghelper for Linux: https://github.com/i-TechSoftware/RtspClientSharpCore

BogdanovKirill commented 4 years ago

@i-TechSoftware

Great work!