4 个版本
0.2.1 | 2023年10月31日 |
---|---|
0.2.0 | 2023年8月20日 |
0.1.1 | 2023年7月18日 |
0.1.0 | 2022年5月13日 |
#106 in 视频
每月72次下载
34KB
602 行
crab-dlna
crab-dlna 是一个最小化的UPnP/DLNA媒体流传输器,既可以作为独立的CLI(命令行界面)应用程序,也可以作为Rust库。
它可以让你在电视(或任何其他DLNA兼容设备)上播放本地的视频文件。
功能
- 搜索本地网络中可用的DLNA设备
- 音频流传输
- 视频流传输,支持字幕
安装
在GitHub仓库的发行版中,我们提供了crab-dlna的预编译二进制文件的存档,适用于 Linux、Windows 和 macOS。
cargo
通过cargo安装是通过安装 crab-dlna
crate 来完成的
# If required, update Rust on the stable channel
rustup update stable
cargo install crab-dlna
# Alternatively, --locked may be required due to how cargo install works
cargo install crab-dlna --locked
用法(CLI)
您可以通过运行以下命令列出所有CLI命令
crab-dlna --help
列表
扫描兼容设备并列出可用的设备
crab-dlna list
如果您的设备未列出,您可能需要增加搜索超时时间
crab-dlna -t 20 list
播放
播放视频,如果可用则自动加载字幕,选择随机设备
crab-dlna play That.Movie.mkv
播放视频,通过查询指定设备(播放前扫描设备)
crab-dlna play That.Movie.mkv -q "osmc"
播放视频,通过其确切位置指定设备(不扫描,更快)
crab-dlna play That.Movie.mkv -d "http://192.168.1.13:1082/"
用法(库)
将 crab-dlna
和 tokio
添加到您的依赖中
[dependencies]
tokio = { version = "1", features = ["full"] }
crab-dlna = "0.2"
示例:发现并列出设备
crab-dlna 提供了一个函数,用于在网络中查找设备列表。
use crab_dlna::Render;
#[tokio::main]
async fn main() {
let discover_timeout_secs = 5;
let renders_discovered = Render::discover(discover_timeout_secs).await.unwrap();
for render in renders_discovered {
println!("{}", render);
}
}
示例:在设备中播放视频
我们可以通过查询字符串指定DLNA设备渲染,然后在其中播放特定的视频,自动检测字幕文件。
use std::path::PathBuf;
use crab_dlna::{
Render,
RenderSpec,
MediaStreamingServer,
STREAMING_PORT_DEFAULT,
get_local_ip,
infer_subtitle_from_video,
Error,
play,
};
#[tokio::main]
async fn main() -> Result<(), Error> {
let discover_timeout_secs = 5;
let render_spec = RenderSpec::Query(discover_timeout_secs, "Kodi".to_string());
let render = Render::new(render_spec).await?;
let host_ip = get_local_ip().await?;
let host_port = STREAMING_PORT_DEFAULT;
let video_path = PathBuf::from("/home/crab/Videos/my_video.mp4");
let inferred_subtitle_path = infer_subtitle_from_video(&video_path);
let media_streaming_server = MediaStreamingServer::new(
&video_path,
&inferred_subtitle_path,
&host_ip,
&host_port,
)?;
play(render, media_streaming_server).await
}
您可以访问完整的 文档 来查看有关库的更多详细信息。
许可
版权(c)2022 Gabriel Magno。
crab-dlna
可根据您选择,在MIT许可证或Apache许可证2.0的条款下提供。
请参阅LICENSE-APACHE和LICENSE-MIT文件以了解许可详情。
依赖项
~16–31MB
~454K SLoC