GolangNote

Golang笔记

Golang 实现视频投屏到智能电视

Permalink

将视频文件投屏到智能电视有很多种方法,这里是介绍基于 UPnP/DLNA 的投屏方式。

DLNA的全称是Digital Living Network Alliance(数字生活网络联盟),旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通。

DLNA不是一种协议,但包括了实现相关标准所需要的一系列协议栈,UPnP是其中的关键协议。

DLNA是基于UPnP协议,DLNA整个发现,控制,事件订阅部分都是由Upnp Device Architecture协议所定义。

简单过程

  • 扫描局域网里的(投屏)服务,发现过程使用的协议是 SSDP(Simple Service Discovery Protocol,简单服务发现协议)
  • 开启web服务,让媒体文件可通过该web服务访问
  • 控制播放

已经有 go 语言实现这一功能,并提供命令和 UI 界面操作

go2tv: https://github.com/alexballas/go2tv

刚好能满足这个投屏需求

go2tv 使用方法

plaintext:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Usage of ./go2tv:
  -l	List all available UPnP/DLNA Media Renderer models and URLs.
  -s string
    	Local path to the subtitles file.
  -t string
    	Cast to a specific UPnP/DLNA Media Renderer URL.
  -tc
    	Use ffmpeg to transcode input video file.
  -u string
    	HTTP URL to the media file. URL streaming does not support seek operations. (Triggers the CLI mode)
  -v string
    	Local path to the video/audio file. (Triggers the CLI mode)
  -version
    	Print version.

首先查看可用播放服务

plaintext:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% ./go2tv -l

Device 1
--------
Model: KD-55X8566F
URL:   http://192.168.10.43:52323/MediaRenderer.xml

Device 2
--------
Model: 客厅的奇异果TV(43)
URL:   http://192.168.10.43:39620/description.xml

Device 3
--------
Model: 投屏电视(索尼)O6
URL:   http://192.168.10.43:49152/description.xml

选择文件投放到指定播放器

plaintext:
1
./go2tv  -v your_path.mp4 -t http://192.168.10.43:49152/description.xml

可选择本地文件或网络文件。

使用很简单,主要是用 go 语言编写,绿色无其它依赖。

本文网址: https://golangnote.com/topic/318.html 转摘请注明来源

Related articles

Golang Web 程序生产环境独立部署示例

一个 web 应用通常是跑在一个前端代理,如 Nginx 后,这样可以方便的在同一个服务器部署多个应用。这里说的独立部署是指让 go web 程序直接暴露在外面,独占 443、80 端口(俗称裸跑)。这样做除了性能有些提高外,更重要的是部署方便。...

Golang phantomjs 动态代理实现

phantomjs 是个很优秀的软件,虽然现在被chrome headless 抢了风头,但在某些特定场合,使用phantomjs 还是很方便,这里是介绍使用Go 实现动态代理。...

Golang http client 处理重定向网页

假设一个网址有多个重定向,A-B-C-D,使用 http.Client.Get 最后取得的内容是网址D的内容,我们该手动处理包含重定向的网址。...

golang 实现的基于web的文件管理-filebrowser

FileBrowser 在指定目录中提供了一个文件管理界面,可用于上传,删除,预览,重命名和编辑文件。它允许创建多个用户,每个用户都可以有自己的目录。它可以用作独立的应用程序。...

Write a Comment to "Golang 实现视频投屏到智能电视"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.20 Processed in 0ms