MCPcopy Index your code
hub / github.com/UniversalMediaServer/UniversalMediaServer

github.com/UniversalMediaServer/UniversalMediaServer @15.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 15.7.0 ↗ · + Follow
13,042 symbols 43,615 edges 1,061 files 5,830 documented · 45%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Universal Media Server

Universal Media Server CI Crowdin

Universal Media Server Universal Media Server is a DLNA, UPnP and HTTP/S Media Server. It is capable of sharing video, audio and images between most modern devices. It was originally based on PS3 Media Server by shagrath, in order to ensure greater stability and file-compatibility.

Universal Media Server supports all major operating systems, with versions for Windows, Linux and macOS. The program streams or transcodes many different media formats with little or no configuration. It is powered by FFmpeg, MediaInfo, Crowdin, MEncoder, tsMuxeR, AviSynth, VLC, and more, which combine to offer support for a wide range of media formats.

Current Project Members

Sponsors

Become a sponsor

Links

Thanks

Thanks for major code contributions:
Thanks for documentation and contributions to the community:
  • DeFlanko
  • meskibob
  • Optimus_prime
  • otmanix
  • squadjot
Thanks for significant/frequent language translations:
Special Thanks:
  • boblinds and snoots for the network test cases :)
  • sarraken, bleuecinephile, bd.azerty, fabounnet for the support and feedback
  • ...And you!

🧩 Contributing

We welcome contributions from everyone!
If you'd like to get started:

  1. Fork the repository and clone your fork locally.
  2. Create a feature branch for your change (git checkout -b feature-name).
  3. Make your changes and test them.
  4. Push to your fork and open a Pull Request on GitHub.

See our CONTRIBUTING.md for detailed setup and coding guidelines.


📜 License

Universal Media Server is released under the GNU General Public License (GPL).
For more information, see the LICENSE file included in this repository.


Extension points exported contracts — how you extend this code

ProtocolInfoAttribute (Interface)
This interface represents attributes found in the additionalInfo part of protocolInfo. @author Nadahar [11 implementers]
src/main/java/net/pms/dlna/protocolinfo/ProtocolInfoAttribute.java
SessionInterface (Interface)
(no doc) [5 implementers]
react-client/src/services/session-service.tsx
ProtocolInfoAttributeName (Interface)
This interface represents protocolInfo attribute names like DLNA.ORG_OP, DLNA.ORG_PS and {@code [71 implementers]
src/main/java/net/pms/dlna/protocolinfo/ProtocolInfoAttributeName.java
RendererInfos (Interface)
(no doc)
react-client/src/components/Home/Renderers.tsx
BufferedImageFilter (Interface)
This interface represents an implementation that is able to perform an operation (filter) a BufferedImage. In ad [6 implementers]
src/main/java/net/pms/image/BufferedImageFilter.java
RendererDetail (Interface)
(no doc)
react-client/src/components/Home/Renderers.tsx
ProcessWrapper (Interface)
Wrapper for executing a command line process while keeping an eye on it from UMS. [10 implementers]
src/main/java/net/pms/io/ProcessWrapper.java
BaseEdit (Interface)
(no doc)
react-client/src/components/Player/VideoMetadataEditModal.tsx

Core symbols most depended-on inside this repo

add
called by 1952
src/main/java/net/pms/renderers/devices/players/BasicPlayer.java
get
called by 1685
src/main/java/net/pms/parsers/mediainfo/MediaInfoHelper.java
append
called by 1613
src/main/java/net/pms/store/container/Search.java
get
called by 860
src/main/java/net/pms/PMS.java
valueOf
called by 752
src/main/java/net/pms/util/Rational.java
getGuiString
called by 627
src/main/java/net/pms/Messages.java
getMessage
called by 580
src/main/java/net/pms/database/DatabaseHelper.java
getName
called by 540
src/main/java/net/pms/dlna/protocolinfo/ProtocolInfoAttribute.java

Shape

Method 11,354
Class 1,128
Function 363
Interface 116
Enum 81

Languages

Java97%
TypeScript3%
C++1%
C1%

Modules by API surface

src/main/java/net/pms/configuration/UmsConfiguration.java574 symbols
src/main/java/net/pms/parsers/mediainfo/StreamVideo.java389 symbols
src/main/java/net/pms/parsers/mediainfo/StreamContainer.java351 symbols
src/main/java/net/pms/parsers/mediainfo/StreamSubtitle.java306 symbols
src/main/java/net/pms/parsers/mediainfo/StreamAudio.java287 symbols
src/main/java/net/pms/network/mediaserver/jupnp/support/contentdirectory/result/namespace/upnp/UPNP.java200 symbols
src/main/java/net/pms/parsers/mediainfo/StreamOther.java193 symbols
src/main/java/net/pms/platform/mac/corefoundation/CoreFoundation.java186 symbols
src/main/java/net/pms/configuration/RendererConfiguration.java150 symbols
src/main/java/net/pms/parsers/mediainfo/StreamImage.java132 symbols
src/test/java/net/pms/configuration/FormatConfigurationRegressionTest.java110 symbols
src/main/java/net/pms/parsers/mediainfo/StreamMenu.java103 symbols

For agents

$ claude mcp add UniversalMediaServer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact