将基本身份验证与 gstreamer souphttpsrc 结合使用
Using basic auth with gstreamer souphttpsrc
我们在 gstreamer 管道中使用 gstreamer souphttpsrc 来访问和转发 http 流。要访问 httpstream,我们必须使用 BasicAuth。我们知道如何格式化基本身份验证 header 但我们无法通过 souphttpsrc extra-headers 参数将 header 作为 GstStructure 传递。
目前我们正在使用下面的命令
gst-launch-1.0 spuphttsrc location="http://streamsource" extra-headers="Authorization: Basic base64hash" ! ...
管道的其余部分已被排除在外,因为它之前已经过测试并且正在运行。
我们收到的错误:canot set property extra-headers
gstreamer 的源代码可以在这里找到:https://github.com/GStreamer/gst-plugins-good
可以在此处找到 GstStructure 文档:http://web.mit.edu/ghudson/dev/nokrb/third/gstreamer/docs/gst/html/gstreamer-GstStructure.html
如有任何帮助,我们将不胜感激。
我自己面对这个问题已经好几天了,我终于回到了我开始的地方。我的错误是我没有正确转义空格。
错误
gst-launch-1.0 souphttpsrc location="http://streamsource" extra-headers="test,Authorization=Bearer\ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
WARNING: erroneous pipeline: could not set property "extra-headers" in element "souphttpsrc0"
请注意,我确实添加了 \
来转义 Bearer <Token>
中的空格,但这还不够。
解决方案
gst-launch-1.0
解决方案是将 key=value
的 value
部分包裹在 \"<value>\"
中,如下所示,以使用 \
:
gst-launch-1.0 souphttpsrc location="http://streamsource" extra-headers="test,Authorization=(string)\"Bearer\ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\""
提示:如果你想要明确,你可以在 value
前面添加它的类型,比如 (string)\"value\"
.
gstreamer-java/gst1-java-core
最初提示我的问题是我无法在 java 绑定中设置集 extra-headers
,我想我不妨在这里添加它。
在Java中:
String token = "mytoken";
Element httpSrc = ElementFactory.make("souphttpsrc", "test_src");
httpSrc.setAsString("extra-headers", "test, Authorization=Bearer $authToken");
或者在 Kotlin 中:
val token: String = "mytoken"
val httpSrc: Element = ElementFactory.make("souphttpsrc", "test_src")
httpSrc.setAsString("extra-headers", "test, Authorization=Bearer $authToken")
对我有帮助的进一步阅读:
我们在 gstreamer 管道中使用 gstreamer souphttpsrc 来访问和转发 http 流。要访问 httpstream,我们必须使用 BasicAuth。我们知道如何格式化基本身份验证 header 但我们无法通过 souphttpsrc extra-headers 参数将 header 作为 GstStructure 传递。
目前我们正在使用下面的命令
gst-launch-1.0 spuphttsrc location="http://streamsource" extra-headers="Authorization: Basic base64hash" ! ...
管道的其余部分已被排除在外,因为它之前已经过测试并且正在运行。
我们收到的错误:canot set property extra-headers
gstreamer 的源代码可以在这里找到:https://github.com/GStreamer/gst-plugins-good
可以在此处找到 GstStructure 文档:http://web.mit.edu/ghudson/dev/nokrb/third/gstreamer/docs/gst/html/gstreamer-GstStructure.html
如有任何帮助,我们将不胜感激。
我自己面对这个问题已经好几天了,我终于回到了我开始的地方。我的错误是我没有正确转义空格。
错误
gst-launch-1.0 souphttpsrc location="http://streamsource" extra-headers="test,Authorization=Bearer\ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
WARNING: erroneous pipeline: could not set property "extra-headers" in element "souphttpsrc0"
请注意,我确实添加了 \
来转义 Bearer <Token>
中的空格,但这还不够。
解决方案
gst-launch-1.0
解决方案是将 key=value
的 value
部分包裹在 \"<value>\"
中,如下所示,以使用 \
:
gst-launch-1.0 souphttpsrc location="http://streamsource" extra-headers="test,Authorization=(string)\"Bearer\ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\""
提示:如果你想要明确,你可以在 value
前面添加它的类型,比如 (string)\"value\"
.
gstreamer-java/gst1-java-core
最初提示我的问题是我无法在 java 绑定中设置集 extra-headers
,我想我不妨在这里添加它。
在Java中:
String token = "mytoken";
Element httpSrc = ElementFactory.make("souphttpsrc", "test_src");
httpSrc.setAsString("extra-headers", "test, Authorization=Bearer $authToken");
或者在 Kotlin 中:
val token: String = "mytoken"
val httpSrc: Element = ElementFactory.make("souphttpsrc", "test_src")
httpSrc.setAsString("extra-headers", "test, Authorization=Bearer $authToken")
对我有帮助的进一步阅读: