Skip to main content

Discover dlna palyer devices and cast media to play. 选择局域网的DLNA设备,播放本地音乐或视频文件,可以播放m3u歌单列表。

Project description

DLNAPlay

扫描局域网中的DLNA设备,并按名称匹配,将本地音乐或视频投送到设备上进行播放。 Github源码地址:sffzh/dlnaPlay

特点:

  1. 可以按列表播放媒体文件,或者指定多个文件按序或随机播放;
  2. 扫描局域网设备后保存临时文件,下次可以快速开始投放;
  3. 局域网设备扫描时,采用异步扫描机制,只要发现指定设备立即开始投放,无须等待扫描达到超时时长。

依赖说明

本程序中控制upnp设备的功能(查看设备信息、播放、暂停、调节音量等)依赖于项目flyte/upnpclient

Install

pip install dlnaPlay

Usage

use dlnaPlay -h to show all param options

dlnaPlay -h

使用示例

列出可用设备

dlnaPlay -w list_devices

-w 参数表示 watch,用来查看设备状态而不进行控制操作。后续再详细说明。

-w list_devices会在扫描局域网的upnp设备后列出支持DLNA投放的设备。扫描时长达到定义的超时时间后会结束程序。 超时时间秒数可用参数 -t 设置,默认为5秒。

注意,网络扫描的结果具有不确定性。如果扫描没有发现设备,可增加超时时间再试一次。 通常情况下家用局域网的设备能在5秒内被扫描到,如果超过20秒没发现设备,则需要检查设备自身的网络问题。 将扫描时间增加到30秒以上通常是没有任何意义的。

播放m3u歌单列表到指定设备

假设我的局域网中有一台支持DLNA播放的音箱,其upnp名称为SUPER Sound X9-9527

dlnaPlay -d "X9-9527" -f ~/music/playlist/favorite.m3u -s -v 30 -M 15

说明: -d 指定设备名称,只需要包含在完整名称中的一小段即可。会采用第一个扫描到可匹配上名称的设备。 设备名称为其upnp描述文件中的“frendly_name”字段的值。 -f 指定m3u歌单文件。文件内容为纯文本,每行对应一个歌曲文件。可使用当对路径或绝对路径。相对路径为媒体文件相对m3u文件的路径。媒体文件支持mp3flacoggm4amp4等常见格式,视频或音乐均可。视频投屏需要设备支持。 -s 小写s,表示 shuffle随机播放, 会对歌曲随机排序后播放。 -v 小写,设置播放音量。 -M 大写,设置播放歌曲数量。注意如果设置了-s随机播放,会先打乱顺序再截取曲目数量,因此不用担心歌单尾部的歌曲无法随机播放到。

设备名称选择名称中的一小段即可,但需要自行确保不会匹配到多个不同设备。如果多个设备都能匹配到,将会自动选择首个被扫描到的设备。

指定媒体文件进行播放

使用-m参数可直接指定媒体文件。可以多次使用此参数以选择多个文件。文件路径无效会自动跳过。

dlnaPlay -d "-TV" -m "../videos/Love Harder(part 1).mp4" -m "../videos/Love Harder(part 2).mp4" -v 30

停止播放

对于命令行执行的播放任务,使用Ctrl+C或杀死进程的方式结束命令,会在命令行退出前发送信号使DLNA播放设备停止播放。

但如果使用kill -9强制结束任务,则程序会强行中断,DLNA设备不会收到停止播放信号,会继续播放,直到所有缓存数据播放完。(通常在数秒钟时间,缓存较大的设备可能可以直接播放完一整首歌。

如果使用此程序播放多首歌曲,中途直接操作DLNA播放设备停止播放,则程序会在少许延迟后自动开始播放下一首。这是因为程序是通过轮询设备状态,以设备停止播放来判断一首歌放完、该放下一首了的。

如果命令行在后台运行,想要停止播放,有以下两种方法:

  • 一、直接ps查看进程,然后杀死进程。

  • 二、使用程序指定设备名称停止播放,命令类似:

    dlnaPlay -d X9-9527 -S
    

    -d X9-9527 指定需要停止播放的设备,-S为大写字母,表示Stop,停止播放。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dlnaplay-1.0.2.tar.gz (33.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dlnaplay-1.0.2-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file dlnaplay-1.0.2.tar.gz.

File metadata

  • Download URL: dlnaplay-1.0.2.tar.gz
  • Upload date:
  • Size: 33.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dlnaplay-1.0.2.tar.gz
Algorithm Hash digest
SHA256 dcece87856fd53adfd5b3ea89fc65fa1e5590135eca5857b1082ae36cb102642
MD5 3e35634e31ece7ed06f9420373e04d87
BLAKE2b-256 3920d316ea9589db82cd7e36829539edd21217829807c138a5d9dba9ea9b9b58

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlnaplay-1.0.2.tar.gz:

Publisher: publish.yml on sffzh/dlnaPlay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dlnaplay-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: dlnaplay-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dlnaplay-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 563efdf3e81dcbd3f13aa321c9872e35a4935986c5bcc9cb1941caff9150b2d9
MD5 3bded923565a52c8a35e38ccf84d2402
BLAKE2b-256 eee9144616b410d9b97be0aa17f788719cc5482424f7757da4c8a362b74ae5c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dlnaplay-1.0.2-py3-none-any.whl:

Publisher: publish.yml on sffzh/dlnaPlay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page