Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为gstreamer板条箱0.14编写rust/gstreamer插件需要哪些依赖项?_Rust_Gstreamer - Fatal编程技术网

为gstreamer板条箱0.14编写rust/gstreamer插件需要哪些依赖项?

为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

我正试图遵循关于使用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"
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"