我正在编写一个用vlc查看MJPEG流的程序。当直接通过命令行运行vlc时,我反复收到错误消息[mjpeg @ 0x10203ea00] No JPEG data found in image
(使用不同的pid)。我想摆脱这个,因为我认为所有的文本输出都会让我的程序陷入困境(并且使我的文本输出无法看到,因为它在写入控制台后大约是.5秒)
我正在连接蓝色虹膜,并正在用vlcj实现我的程序。
http://10.10.80.39:8080/mjpg/cam1/video.mjpeg
我已经尝试了所有可以找到的安静选项,将详细程度设置为0,我对如何忽略此错误感到茫然。
我正在运行vlc 2.1。错误发生在多台计算机和多个操作系统上。
答案 0 :(得分:0)
您根本无法禁用vlc或vlc所依赖的库可能会发出的所有内容。并非您看到的所有日志/错误消息都可以通过设置vlc的日志级别来控制。
对我来说,问题主要是libdvdnav向stderr发送不相关的消息。
你说你正在使用vlcj,我也想要一种方法来轻松忽略来自Java应用程序内部的错误消息。使用最新的vlcj-git(在撰写本文时),有一个实验性NativeStreams
[1]类可能对您有帮助。
此类使用JNA包装“C”标准库,并以编程方式重定向本机进程stdout和stderr流中的一个或两个。
您不能像某些人预期的那样简单地重定向System.out和System.err,因为很明显这些消息来自JVM之外的本机代码,当然不使用System.out或System.err。
您可以重定向到日志文件(可能会继续增长)或“/ dev / null”。
缺点是,如果重定向本地流,您也不可避免地重定向相应的Java流 - 您将丢失自己的应用程序输出。在我自己的应用程序中,这不是问题因为我登录到stdout(我没有重定向),而vlc消息我不想偶然地去stderr(我重定向)。
您还可以在启动JVM时以通常的方式重定向java
进程输出流。我希望能够以编程方式执行此操作,而不必编写shell脚本。
所以它不是一个理想的解决方案,但它适用于我(仅在Linux上测试过)。