vlcj:屏幕解复用错误:无法创建位图

Posted

技术标签:

【中文标题】vlcj:屏幕解复用错误:无法创建位图【英文标题】:vlcj: Screen demux error: Cannot create bitmap 【发布时间】:2012-02-27 12:46:31 【问题描述】:

我使用 vlcj (http://code.google.com/p/vlcj/) 来使用 Java 中的 vlc 库来记录我的屏幕。我正在使用 Win7 和 XP(在两个平台上都会出现错误)。

我在那些获取开始和停止消息以开始和停止屏幕录制的平台上运行 telnet 服务器。当进行多次录制时,会出现以下错误: screen demux error: Cannot create bitmap

然后我停止 telnet 服务器并重新启动它,它可以再次截屏。我的问题是为什么会出现此错误消息,我该如何解决它,这样我就不必不时重新启动服务器?这是开始录制的代码的 sn-p(抱歉,我无法提供 telnet 服务器的完整代码):

NativeLibrary.addSearchPath("vlc", libvlcPath); //libvlcPath is a String with the specified path
System.setProperty("jna.library.path", libvlcPath);
MediaPlayerFactory factory = new MediaPlayerFactory("--no-video-title-show");
EmbeddedMediaPlayer mediaPlayer = factory.newEmbeddedMediaPlayer();
File videoFile = new File(savePath + fileName + ".mp4");
String[] options = ":sout=#transcodevcodec=h264,acodec=mp4a:stdaccess=file,mux=mp4,dst=" + videoFile + "", ":screen-fps=5.0";
mediaPlayer.playMedia("screen://", options);

以及停止录制的代码:

mediaPlayer.stop();
mediaPlayer.release();

我还在 Mac OS 和 Ubuntu 10.04 上运行 telnet 服务器(完全相同的代码),并且从未出现错误。所以一般来说它和 Windows 有关系吗?

【问题讨论】:

【参考方案1】:

首先,您应该尝试显示有关您的错误的更多信息。使用 -vvv 选项获取 用于调试的完整输出。

【讨论】:

你在哪里使用这个 -vvv 选项?它是 VM 参数吗? 这是 vlc 的参数,而不是 VM 参数。 顺便说一句,有一个JVM参数“-Dvlcj.log=DEBUG”可以启用更多输出。 你的意思是:String[] options = ":sout=#transcodevcodec=h264,acodec=mp4a:stdaccess=file,mux=mp4,dst=" + videoFile + "", ":screen-fps=5.0", ":vvv; 这不会产生任何影响。我到底应该把它放在我的代码中的什么地方?到目前为止,谢谢。 目前无法测试。 MediaPlayerFactory 上有一个 setLogLevel 方法。与 LogLevel.DBG 一起使用,它应该提供更多的调试信息。

以上是关于vlcj:屏幕解复用错误:无法创建位图的主要内容,如果未能解决你的问题,请参考以下文章

无法从内存中正确加载位图

从 C++ 中的屏幕选择创建位图时出现黑色图像

在 Windows Metro 下使用 DirectX 绘制位图

C#搞跨平台桌面UI,分别实现Windows,Mac,Linux屏幕截图

创建 UITextView 全部内容的位图

位图保存无效参数