[Share Experiences] 支持DLNA播放,投屏到电视
Tofloor
poster avatar
njitwb
deepin
2021-12-17 20:11
Author

由于想将电脑里的视频投屏到电视播放,所以研究了一下,跟大家分享一下方法。

nanodlna是一个基于Python开发的dlna投屏工具,可以通过命令行进行投屏。

Github上可搜,可以看到源码和使用说明,有兴趣的可以去搜一下。

安装方法:

pip install nanodlna

使用说明:

$ nanodlna --help
usage: nanodlna [-h] [-t TIMEOUT] [-b] {list,play} ...

A minimal UPnP/DLNA media streamer.

positional arguments:
  {list,play}

optional arguments:
  -h, --help            show this help message and exit
  -t TIMEOUT, --timeout TIMEOUT
  -b, --debug

简单来说,就是进入到相应的视频目录,然后敲命令“nanodlna play file.mp4“就能播放,但是每次都进终端去敲就很烦,所以能不能在文件管理器中,视频文件上右击就可以投屏呢?当然是可以的,按如下配置就可以。

配置右键菜单方法:

1、进入/usr/share/deepin/dde-file-manager/oem-menuextensions目录下,创建dlna.desktop文件,将以下内容写入文件里:

[Desktop Entry]
Exec=/usr/bin/dlnaplay.sh %U
GenericName=DLNA Play
GenericName[zh_CN]=DLNA播放
X-DFM-MenuTypes=SingleFile
Name=DLNA Play
Name[zh_CN]=DLNA播放
Type=Application
X-Deepin-Vendor=user-custom
Categories=Video;

关于X-DFM-MenuTypes=SingleFile这个参数,我想配置成视频文件可以显示DLNA播放的选项,但是不知道视频文件是什么样的参数,有知道的可以说下,设置成SingleFile的坏处就是,所有单个文件右击都会出现DLNA播放的选项,不管这个文件是不是视频文件。

截图_选择区域_20211217120242.png

2、创建/usr/bin/dlnaplay.sh脚本

sudo touch /usr/bin/dlnaplay.sh
sudo chmod +x /usr/bin/dlnaplay.sh
sudo vim /usr/bin/dlnaplay.sh

在dlnaplay.sh里写入下面内容:

#!/bin/bash

ps -ef | grep nanodlna | grep -v grep | awk '{print $2}' | xargs kill -9
nanodlna play $1

这样就可以了,看下效果:

image.png

Reply Favorite View the author
All Replies
Maicss
deepin
2021-12-17 20:24
#1

尝试一下MimeType选项,要获取文件类型可以使用file命令

例如:获取a.mkv的mimetype:

file --mime-type a.mkv

得到:

a.mkv: video/x-matroska
Reply View the author
HualetWang
deepin
2021-12-17 20:27
#2

like

Reply View the author
HualetWang
deepin
2021-12-17 20:27
#3

不需要选择投放设备么

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2021-12-17 20:48
#4

https://gitee.com/shenmo7192/dde-file-manager-menu-oem

定制菜单支持使用 MimeType 可以根据被选中的文件类型决定菜单项是否显示被添加的项,支持模糊匹配(如MimeType=image/*;),MimeType 过滤文件类型目前只支持选中单文件(即X-DFM-MenuTypes 包含SingleFile )时有效。同X-DFM-MenuTypes 一样,MimeType 只能用在[Desktop Entry]项目中,使用;作为分割填写多个值,MimeType 字段但内容为空的情况和不包含MimeType 字段的情况不同,包含但为空将不会在任何位置显示,不包含将会视为MimeType=*;

常见视频文件mimetype:flv格式是加入关联扩展名:.flv,内容类型:application/octet-stream f4v格式是扩展名:.f4v,内容类型:application/octet-stream mp4格式是扩展名:.mp4,内容类型:video/mp4 ogv格式是扩展名:.ogv ,内容类型:video/ogg webm格式是扩展名:.webm,内容类型:video/webm

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2021-12-17 20:54
#5
HualetWang

like

我记得之前dde-file-manager-menu

可以识别文件后缀来着,咋找不到了

Reply View the author
HualetWang
deepin
2021-12-17 20:58
#6

让我们文管的大神解答一下…

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2021-12-17 20:58
#7

https://linuxdeepin.github.io/dde-file-manager/context-menu-ext-zh.html

Reply View the author
Comments
njitwb
2021-12-17 21:50
手动点赞
深蓝色
deepin
2021-12-17 21:50
#8

可以在.desktop文件中增加 X-DFM-SupportSuffix字段来识别后缀名。

如:X-DFM-SupportSuffix=mp4;mkv

[Desktop Entry]
Exec=/usr/bin/dlnaplay.sh %U
GenericName=DLNA Play
GenericName[zh_CN]=DLNA播放
X-DFM-MenuTypes=SingleFile
X-DFM-SupportSuffix=mp4;mkv
Name=DLNA Play
Name[zh_CN]=DLNA播放
Type=Application
X-Deepin-Vendor=user-custom
Categories=Video;
Reply View the author
njitwb
deepin
2021-12-17 21:51
#9
HualetWang

不需要选择投放设备么

只存在一个设备的时候不需要选择,可以基于这个思路,加上选择设备的选项

Reply View the author
njitwb
deepin
2021-12-18 04:30
#10
[Desktop Entry]
Exec=/usr/bin/dlnaplay.sh %U
GenericName=DLNA Play
GenericName[zh_CN]=DLNA播放
X-DFM-MenuTypes=SingleFile
MimeType=video/*
Name=DLNA Play
Name[zh_CN]=DLNA播放
Type=Application
X-Deepin-Vendor=user-custom
Categories=Video;
Reply View the author
deepin-chinaren
deepin
2021-12-18 04:32
#11

终端执行pip install nanodlna后,执行nanodlna显示找不到命令“bash: nanodlna:未找到命令”

Reply View the author
jiutian123
deepin
2022-01-13 21:57
#12
deepin-chinaren

终端执行pip install nanodlna后,执行nanodlna显示找不到命令“bash: nanodlna:未找到命令”

pip没安装吧

Reply View the author