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 quicktemplate 模版快速入门

Golang 有很多的模版引擎,自带的 `html/template` 也很好,大多数情况都能满足需求,只是有些逻辑、条件判断不好在模版里实现, `quicktemplate` 是个很好的选择。...

Golang 把cookie 字符串解析为cookie 结构

在做爬虫时有时候会遇到需要带已登录的 cookie 请求,这个时候最简单的方法是在浏览器登录后,在开发者面板找到cookie 字符串,然后拷贝粘贴。这就面临一个问题需要把cookie 字符串解析成Go 语言 cookie 结构体。...

Golang sync.WaitGroup 的 Wait 超时处理

sync.WaitGroup 使用 `Add(1)`、`Done()`、`Wait()`组合来实现多协程等待,如果某一协程未能合理处理错误,导致无法退出,此时需要引入超时机制。下面是一种超时处理方法。...

Golang 实现 10 进制转 N 进制

给定一个不没有重复字符的字符串,如 `[0-9,a-z]`,把一个 10 进制数字转为,该字符集的字符串。应用场合如汽车牌、顺序计数。...

Golang 泛型性能初识

编程时,我们通常需要编写“泛型”函数,其中确切的数据类型并不重要。例如,您可能想编写一个简单的函数来对数字进行求和。Go 直到最近才有这个概念,但最近才添加了它(从1.18版开始)。...

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

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