pmms (Poodle's MultiMedia System) allows players to play music/video from entities such as phonographs, radios or TVs.
-
NUI-based, using MediaElement.js to support HTML5 media, HLS, YouTube, and more.
-
Synchronized between players.
-
Multiple entities can play different things at the same time.
-
Dynamic sound attenuation based on whether the player and entity are in the same interior room.
-
Optional immersive filter can be applied to any audio.
-
Play video on a TV screen or scaleform with DUI (FiveM), or on a screen displayed above the entity (RedM).
-
Play audio inside or outside of vehicles.
-
Permissions system and ability to lock entities so only certain players can control them.
-
Configure default entities which are spawned and play music/video automatically.
-
Audio visualizations via Wave.js.
-
Place the files from this repository in a new folder in your resources directory.
Example:
resources/[local]/pmms
NOTE
The name of the resource must be in all lowercase in order for it to function properly. This is due to how NUI callbacks work.
-
Add the following in server.cfg:
exec resources/[local]/pmms/permissions.cfg start pmms
Adjust as necessary based on where you installed the resource and what you named it.
Note
The command names can be customized. These are the defaults.
Command | Description |
---|---|
/pmms |
Open the media player control panel. |
/pmms_play [url] ... |
Play music/video on the nearest media player. |
/pmms_pause |
Pause playback on the nearest media player. |
/pmms_stop |
Stop playback on the nearest media player. |
/pmms_status |
Show the status of the nearest media player. |
/pmms_presets |
List presets. |
/pmms_vol [volume] |
Set a personal base volume for all media players. |
/pmms_fix |
Reset your client, which may fix certain issues. |
/pmms_ctl |
Advanced media player control. |
/pmms_add |
Add or modify a media player model preset. |
/pmms_refresh_perms |
Refresh permissions for all clients. |
handle = exports.pmms:startByNetworkId(netId, options)
Starts playing something on a networked media player entity, using its network ID.
options
is a table of options for the new media player.
Option | Description |
---|---|
url |
The URL of the media to play. |
title |
The title of the media to display. |
volume |
The volume of the new media player. Default: 100. |
offset |
The time to start the media at in seconds. Default: 0. |
duration |
The duration of the media. nil , false or 0 will treat the media as a live stream. |
loop |
Whether to loop the media. Requires a duration. |
filter |
Whether to apply the immersive filter to the media player. |
locked |
Whether to lock the media player. |
video |
Whether to display NUI video (RedM only). |
videoSize |
The size of the NUI video screen (RedM only). |
muted |
Whether the media player is muted by default. |
attenuation |
The attenuation multipliers for the media player. |
diffRoomVolume |
Difference between the base volume in the same room and a different room. |
range |
The range of the media player. |
visualization |
The audio visualization to apply to the media player. |
handle = exports.pmms:startByCoords(x, y, z, options)
Starts playing something on a non-networked media player entity, using its coordinates on the world map.
For options
, refer to Media player options.
handle = exports.pmms:startScaleform(scaleform, options)
Starts playing something on a standalone scaleform screen.
For options
, refer to Media player options.
scaleform
is a table of options for the scaleform screen.
Option | Description |
---|---|
name |
The name of the scaleform (.gfx filename minus extension). |
position |
A vector3 for the coordinates of the top-left of the screen. |
rotation |
A vector3 for the orientation of the screen. |
scale |
A vector3 for the scale of the screen. |
exports.pmms:stop(handle)
Stops a media player and removes its handle.
exports.pmms:pause(handle)
Pause or resume a media player.
exports.pmms:lock(handle)
Locks an active media player so that only privileged users can interact with it.
exports.pmms:unlock(handle)
Unlocks an active media player so anyone can interact with it.
exports.pmms:mute(handle)
Mutes an active media player.
exports.pmms:unmute(handle)
Unmutes an active media player.
exports.pmms:enableEntity(entity)
Allows the player to use a particular entity if they do not have the pmms.anyEntity
ace.
exports.pmms:disableEntity(entity)
Disables the use of this entity for a player without the pmms.anyEntity
ace.
entity = exports.pmms:createMediaPlayer(options)
Creates a new networked entity which the player can use as a media player.
Option | Description |
---|---|
model |
The entity model to use. If omitted, Config.defaultModel will be used. |
position |
A vector3 for the coordinates where the entity will be spawned. |
rotation |
A vector3 for the orientation of the entity. |
exports.pmms:deleteMediaPlayer(entity)
Deletes an entity created by createMediaPlayer.