无法通过命令行让 vlc 正确流式传输

无法通过命令行让 vlc 正确流式传输

我使用以下命令:

vlc -I qt myfile.mp4 #standard{access=http,mux=ts,dst="8080/stream"}  :sout-all :sout-keep

我的错误日志如下:

VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)
[000055e7143effa0] main audio output error: module not functional
[00007f61d28bf1d0] main decoder error: failed to create audio output
[00007f619c004960] gl gl: Initialized libplacebo v4.192.1 (API v192)
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
[00007f619c004960] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error
libva info: VA-API version 1.14.0
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
[00007f619c004960] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
libva info: VA-API version 1.14.0
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
[00007f619c004960] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
[00007f619c004960] gl gl: Initialized libplacebo v4.192.1 (API v192)
[00007f61d27bf470] avcodec decoder: Using NVIDIA VDPAU Driver Shared Library  520.61.05   for hardware decoding

主要问题似乎是main decoder error: failed to create audio output

我已经在过去 4 个小时里尝试了很多事情(安装各种库、在 vlc 中设置不同的音频等等),所以现在可能是寻求帮助的好时机!

使用 Ubuntu 22.04 和 GTX970。已经安装了 CUDA。

nmap 192.168.1.x -p 8080还证实:

PORT     STATE  SERVICE
8080/tcp closed http-proxy

提前致谢。只是想设置一个本地网络流媒体https://linuxconfig.org/how-to-stream-video-from-vlc,乍一看真的很简单哈哈……

答案1

比较

echo vlc -I qt myfile.mp4 #standard...

在许多 *nix shell 中,不带引号和不带转义的#注释会开始。您输入的某些参数vlc根本没有被使用!通过“安装各种库、在 vlc 中设置不同的音频等”,您找错了方向。问题在vlc开始之前就已经出现了。

在这个特定情况下,最好用单引号括住整个#standard{access=http,mux=ts,dst="8080/stream"}参数,因为{…}可能会被 shell 扩展(也可能不会,具体取决于 shell)。请注意,这将使单引号中的字符串变为vlc字面意思,包括双引号。我猜这就是你想要的(但我不知道vlc到底是什么)。

vlc -I qt myfile.mp4 '#standard{access=http,mux=ts,dst="8080/stream"}'  :sout-all :sout-keep

一般来说,如果有疑问,请set -x在运行命令之前调用。

-x
在扩展命令之后和执行命令之前,shell 应该将每个命令的跟踪写入标准错误。

来源

这样你就会看到你真正执行的命令。注意set -x将添加一些引文打印的内容,因此通常您需要知道如何解释它们。仍然在像您这样的情况中,一些“参数”被丢弃为注释, 的输出set -x将清楚地向您显示问题。通过 关闭该功能set +x

如果固定命令没有达到你想要的效果,然后是时候责怪vlc音频设置等了。

元注释:如果它仍然不起作用并set -x告诉您命令完全符合您的预期,并且您需要进一步的帮助,那么最好提出一个单独的问题,而不是变色龙。实际问题(如果有)与vlc我们刚刚解决的命令行问题无关。

相关内容