Go语言(UPnP协议)实现局域网投屏到智能电视或支持DLNA设备

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

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

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

简单过程

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

开源项目go2tv https://github.com/alexballas/go2tv
此项目支持将mp4, avi, mkv, mpeg, mov, webm, m4v, mpv, mp3, flac, wav, jpg, jpeg, png投屏
GUI模式
1695041565382.png
CLI模式
1695041571326.gif

go2tv 使用方法

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.

选择文件投放到指定播放器
./go2tv -v your_path.mp4 -t http://ip:port/description.xml

标签: Go

相关文章

Go 开发中的go:embed应用与最佳实践

go:embed 使用介绍go:embed 是 Go 语言的一项编译器指令,它允许在编译时将任意文件或目录嵌入到 Go 的二进制文件中。通过这种方式,开发者可以在不依赖外部文件的情况下直接在代码...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件