为gstreamer板条箱0.14编写rust/gstreamer插件需要哪些依赖项?
我正试图遵循关于使用rust编写gstreamer插件的教程 如果您按照教程中的第一点进行操作,那么Cargo.toml是可编译代码为gstreamer板条箱0.14编写rust/gstreamer插件需要哪些依赖项?,rust,gstreamer,Rust,Gstreamer,我正试图遵循关于使用rust编写gstreamer插件的教程 如果您按照教程中的第一点进行操作,那么Cargo.toml是可编译代码 [package] name = "gst-plugin-tutorial" version = "0.1.0" authors = ["Sebastian Dröge <sebastian@centricular.com>"] repository = "https://github.com/sdroege/gst-plugin-rs" licen
[package]
name = "gst-plugin-tutorial"
version = "0.1.0"
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
repository = "https://github.com/sdroege/gst-plugin-rs"
license = "MIT/Apache-2.0"
[dependencies]
glib = "0.4"
gstreamer = "0.10"
gstreamer-base = "0.10"
gstreamer-video = "0.10"
gst-plugin = "0.1"
[lib]
name = "gstrstutorial"
crate-type = ["cdylib"]
path = "src/lib.rs"
这是可以编译的,但我需要为其编写插件的项目使用gstreamer 1.16,因此它需要rust-crate gstreamer 0.14
当我修改Cargo.toml以引用gstreamer板条箱的最新版本时:
[dependencies]
#glib = "0.4"
gstreamer = "0.14"
gstreamer-base = "0.14"
gstreamer-video = "0.14"
gst-plugin = "0.3.2"
我在生成时收到错误:
Updating crates.io index
error: failed to select a version for `glib-sys`.
... required by package `gstreamer-base v0.14.0`
... which is depended on by `gst-plugin-tutorial v0.1.0 (/home/thoth/src/rust-gst-plugin-exp/coaxion-plugin)`
versions that meet the requirements `^0.9` are: 0.9.0
the package `glib-sys` links to the native library `glib`, but it conflicts with a previous package which links to `glib` as well:
package `glib-sys v0.7.0`
... which is depended on by `gst-plugin v0.3.2`
... which is depended on by `gst-plugin-tutorial v0.1.0 (/home/thoth/src/rust-gst-plugin-exp/coaxion-plugin)`
failed to select a version for `glib-sys` which could resolve this conflict
在rust中编写gstreamer插件以与gstreamer 1.16一起使用时,板条箱版本的正确组合是什么 您可以找到新版本的教程和最新版本的代码 你的问题是,你仍然在使用
gst插件
板条箱,但现在已经过时了,如果你现在启用子类
功能,那么一切都是glib
/gstreamer
/gstreamer基
/etc板条箱的一部分。有关详细信息,请参见上面的链接
根据旧版本的gst插件
板条箱将引入旧版本的glib sys
(和其他)板条箱,并且同一项目中不能有两个不同版本的-sys
板条箱
如果取消对
glib
依赖项的注释,您将再次遇到同样的问题。一旦你将其更新为glib的0.8
版本,这个错误也会消失。作为Sebastian答案的一个变体,我尝试了一个Cargo.toml,它不指向git,而是使用释放的板条箱
glib = "0.8"
gstreamer = "0.14"
gstreamer-base = "0.14"
gstreamer-video = "0.14"
#gst-plugin = "0.3.2"
未能为gst\u plugin\u define提供定义代码>。这似乎是子类化特性的一部分。切换到以下依赖项:
glib = { version = "0.8", features = [ "subclassing"] }
gstreamer = { version = "0.14", features = [ "subclassing"] }
gstreamer-base = { version = "0.14", features = [ "subclassing"] }
gstreamer-video = "0.14"
激活了定义gst\u插件\u定义的代码代码>宏。当我移除gst插件板条箱并将glib设置为0.8时,我无法找到插件定义的定义代码>或gst\u插件\u定义代码>宏。从发布的板条箱切换到git repos确实允许我开始编译和开发代码。我预计,随着插件API的稳定,将有可能再次创建使用已发布板条箱的插件。可以在crates.io上使用已发布版本。你遇到了什么问题?例如,gst插件rs
存储库的用户正在使用所有产品的发布版本。检查适用于发行版的教程代码。
glib = { version = "0.8", features = [ "subclassing"] }
gstreamer = { version = "0.14", features = [ "subclassing"] }
gstreamer-base = { version = "0.14", features = [ "subclassing"] }
gstreamer-video = "0.14"