MediaArea / MediaInfoLib

Convenient unified display of the most relevant technical and tag data for video and audio files.
https://mediaarea.net/MediaInfo
BSD 2-Clause "Simplified" License
636 stars 175 forks source link

Not a bug; need help > dotnetcore + Synology DSM #647

Open hlubovac opened 7 years ago

hlubovac commented 7 years ago

Hi -

Thank you for the great code!

I'm a Windows user. I'm trying to write an app that runs on Synology DSM within a docker container. So, I don't need help with the dsm+docker+dotnetcore part, but what I cannot figure out is which one (if any) of MediaInfoLib binaries (https://mediaarea.net/en/MediaInfo/Download) to use.

DSM is Synology's proprietary Linux-based OS that they ship with their NAS hardware systems, and I doubt it's open-sourced - but it's flexible: they provide installable software packages (docker is one of them), have an API for creating custom packages, and they're great little home-NAS devices.

If you tell me to compile MediaInfoLib code on DSM, I wouldn't know where to start: I'm not familiar with tools and the process on Linux. Besides, that thing (DSM) doesn't even have a tool for CLI: the only way to execute commands is via telnet/ssh from a remote machine.

In addition to that problem, I'm not even sure that I'm able to recognize Linux-compatible binary files (comparable to Windows .dll files), so considering that most of the download packages published on your site contain multiple files, I don't know which files to include with binaries of my app. And, to make things even more confusing, I see that there are 1 or 2 dependencies that are supposed to be provided separately (libmediainfo, libzen) - and I'm only guessing that those can be simply placed within my app's binaries as well, as opposed to installed on the OS somewhere, which I wouldn't know how to do either.

If you point me to how to recognize binary files within your zip-downloads, I'll just go through all of these flavors and try them all (by placing them in my app's "bin" folder, which is how dotnet works, which I'm sure you know), hoping to find one that works with DSM.

I already tried one or two (I've been copying few versions/combinations of files "mediainfo" and "libmediainfo.so.0" and "libzen.so.0"), but the call to MediaInfo_New always returns 0, so I concluded that I either copied wrong files or that those were not a match or, if they were, then I was missing dependencies. My workflow between coding and testing is a multi-step process that involves compilation, multiple sets of file shuffling, recreating docker image and container, using docker-UI to run my app, then analyzing logs, so you can understand how picking wrong files can be frustrating, as I must have repeated this "deployment" process close to hundred times so far (not necessarily related to MediaInfoLib, but to test unrelated code changes).

BTW, your library works great on Windows. Thank you very much. I'm interacting with it via https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfoDLL/MediaInfoDLL.cs

Thank you for your time. Hari

JeromeMartinez commented 7 years ago

We don't provide native binaries for the CPU architecture used by DSM, as well we don't currently check that it is working well on this architecture, especially the library version. The only thing I can say right now it to compile from source ("All in one" packages, sou you have a single binary). A long time ago, someone wrote an how to for MediaInfo, but I never tested it.