- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在设计这个 Java 网络小程序,以通过来自视频服务器的 RTSP 流式传输视频。为了呈现此视频,将使用 Xuggler 5.4 库 (xuggle-xuggler.jar
)。目前,当我在 Windows XP 和 Ubuntu 10.04 机器上运行视频时,它可以正确呈现。但是,当我尝试在 Windows 7 上运行它时,出现以下错误:
10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries
10:10:13.448 [Thread-13] ERROR com.xuggle.ferry.JNILibraryLoader - Could not load library: xuggle; version: 5; Visit http://www.xuggle.com/xuggler/faq/ to find common solutions to this problem
Exception in thread "Thread-13" java.lang.UnsatisfiedLinkError: no xuggle in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:268)
at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:171)
at com.xuggle.ferry.JNILibrary.load(JNILibrary.java:161)
at com.xuggle.ferry.FerryJNI.<clinit>(FerryJNI.java:16)
at com.xuggle.ferry.Ferry.<clinit>(Ferry.java:25)
at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19)
at com.xuggle.xuggler.ICodec$ID.<clinit>(ICodec.java:760)
at com.ioindustries.videoserver.RtpSession.run(RtpSession.java:86)
at java.lang.Thread.run(Unknown Source)
我已经尝试提取 xuggle-5.dll
并将其放在我的 web
目录中,然后将其链接到 Windows %PATH% 甚至 Windows %CLASSPATH% ,但是当我这样做时视频仍然不呈现并且错误消失(此时,我不确定发生了什么)。我还尝试通过依赖项 walker 运行 xuggle-5.dll,尽管我得到的只是 IESHIM.dll 的错误,如下面的屏幕截图所示:
当然,当我在 Windows XP 和 Ubuntu 10.04 机器上运行 IESHIM.dll 时,也会出现同样的错误。
我还在用于启动 Web 小程序的 HTML 文档下引用了 xuggle-xuggler.jar 文件。
此时,我真的不确定为什么 Xuggler 无法在我用于开发的 Windows 7(32 位)机器上运行。对此事的任何帮助将不胜感激。
请注意,我正在尝试使用 Xuggle 网站上提供的 GPL 版本的 Xuggle 5.4(与以前版本的 Xuggle 不同,它不需要任何安装)运行。
这是我的 HTML 文档的片段:
<div id="applet_box" class="applet box">
<applet id="applet" code="com.videoserver.ClientApplet"
archive="VideoServerClient.jar, xuggle-xuggler-5.4.jar, slf4j-api-1.6.4.jar, logback-classic-1.0.0.jar, logback-core-1.0.0.jar" MAYSCRIPT>
</applet>
</div>
最佳答案
我的同事弄清楚了为什么会出现此 java.lang.UnsatisfiedLinkError
,所以所有的功劳都归于他(我只是一个观察者)。
引用上面错误日志的第一行:
10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries
基本上,在我的案例中发生的事情是 Java 运行时环境有一个 Xuggle DLL 文件的缓存副本,它可能来自两个月前我用来试验 Java applet 视频输出的旧 Xuggle JAR 存档。鉴于临时目录中引用的 DLL 文件 (C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll
) 具有不同的依赖关系,我们能够得出这个结论与通过上面的 Dependency Walker 应用程序验证时从最新的 xuggle-xuggler-5.4.jar
中提取的最新 xuggle DLL 文件相比。
因此,当我尝试在我的 Java Web Applet 中显示视频时,Java 运行时环境会尝试访问这个陈旧的 Xuggle DLL 文件,而不是从 xuggle-xuggler-5.4.jar 中加载 DLL 文件
。因此,发生了上述java.lang.UnsatisfiedLinkError
。
为了强制 Java 运行时环境从 xuggle-xuggler-5.4.jar
中的 DLL 文件中加载 DLL 文件,执行了以下步骤:
打开 Java 控制面板。在 Windows 中,这是通过转到“开始”菜单并访问“控制面板”来完成的。如果安装了 Java Runtime Environment,Java 应该作为一个选项出现在 Windows 控制面板中。单击 Java。
进入 Java 控制面板后,在“常规”选项卡下的“Internet 临时文件”下,单击“设置...”按钮。
取消选中“在我的计算机上保留临时文件”复选框。
然后单击“删除文件”按钮并删除所有临时文件(选中所有复选框)。根据您的偏好,您可能只想选择这些复选框的一个子集,尽管我已将它们全部选中。
点击确定。然后再次单击“确定”。然后第三次单击确定以关闭 Java 控制面板。
如果您的 Web 浏览器处于打开状态,请将其关闭并尝试重新启动您的 Java Web Applet。如果这是您遇到的问题,那么 java.lang.UnsatisfiedLinkError
应该不会再出现并且视频应该可以正确显示,前提是您的代码是正确的并且您有正确的 Xuggle JAR,以及Xuggle 的依赖项,已加载。在我的例子中,我的 Web 小程序 JAR 与用于将它嵌入 Web 浏览器的 HTML 文件以及所有必需的 Xuggle JAR 和 Xuggle 依赖项 JAR 简单地放在同一目录中。
需要注意的是,Ubuntu 中的 Java Runtime Environment 也有 Java 控制面板,看起来和 Windows 中的类似,如果出现问题,可以在 Ubuntu 中执行类似的步骤来解决这个问题。
如果您只是直接在 Web 浏览器中打开 HTML 文件,则上述解决方案应该有效。如果您使用 Apache Tomcat 或 Glassfish 来部署您的 Web 小程序,这可能行不通 - 在这种情况下,您可能需要引用此解决方案,尽管我自己还没有对其进行彻底测试:
关于java - 无法加载 Xuggle 库 : java. lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984295/
所以如果我运行: ffmpeg -t 10 -re -i "rtmp://170.93.143.150/rtplive/ app=rtplive/ playpath=e000990f025f00750
我最近从 this link 下载了 Xuggler 教程:帧捕获和视频创建 的代码。 ,我已经在我的项目中添加了运行此代码所需的所有 .jar 文件,但是,当我运行此代码时,出现错误: 这是我的代码
如何使用 xuggle 和 java 将图像数组编码到电影中?我希望帧率为 30 fps。我愿意使用 xuggle 之外的其他框架,但我相信 xuggle 是最简单的。可能是一个新手问题,但无论如何谢
我有一个 mp3 文件和一张图片。我需要用 java 创建一个结合它们的视频。 我正在尝试用 xuggle 来做,但仍然没有结果。 任何人都可以给我任何建议吗? 最佳答案 最后,我找到了解决办法。 我
我正在开发一个将 Hadoop 的 MapReduce 框架与 Xuggle 集成的程序。为此,我正在实现一个 IURLProtocolHandlerFactory 类,该类可读取和写入内存中的 Ha
我从一个星期开始就在使用 xuggle,我写了一个方法来获得一个视频帧,但如果视频很长,这种方法会花费太多时间: public static void getFrameBySec(IContainer
我有这段代码: import com.xuggle.mediatool.IMediaWriter; import com.xuggle.mediatool.ToolFactory; import co
我正在尝试在我的 Android 应用程序中使用 Xuggle 的库。 我已将所有 jar 文件添加到我的应用程序中。当我使用 xuggle 函数时,我在导入所需的 xuggle 包后没有收到任何警告
本文整理了Java中org.openimaj.video.xuggle.XuggleVideo类的一些代码示例,展示了XuggleVideo类的具体用法。这些代码示例主要来源于Github/Stack
我读到了 xuggle图书馆 我试图让 xuggle 库作为单个 jar 文件工作,而无需任何外部使用任何 dll 文件或环境变量 我阅读了安装 xuggler 时出现的所有错误并尝试了所有错误,但仍
我对使用 java 进行图像捕获还很陌生。Xuggle 或 ffmpeg 哪个更好、更容易实现帧捕获和制作具有音频和视频的视频。我看过 xuggle 和 ffmpeg,但无法从两者中获得像样的教程。任
我正在用 Java 编写截屏应用程序。我决定使用 Xuggle 来完成它,并按照 xuggle wiki 上的安装说明进行操作。 我用 %XUGGLE_HOME%\bin 和 %XUGGLE_HOME
我发现了关于 Xuggle昨天让我首先说这是一件了不起的事情。我浏览了所有video和 text教程。 我的第一个问题是以编程方式记录计算机桌面,我解决了这个 this way 。 现在我需要一些不同
我最近开始使用 Xuggle 将各种格式的视频文件转换为相应的 FLV(通过 jwplayer 在我们的网站上播放)。我使用的代码非常简单;基本上他们为基本视频转换教程展示的内容: IMediaRea
我创建了一个基于 Xuggle 的服务器系统,将传入的文件编码为 H264 并对其进行分段。但是,在 Quicktime 中播放视频时,它几乎可以正常工作(有时音频会出现小问题),但是当从一个质量流更
一千分钟,我试图找到一种方法来流式传输多个视频并将它们组合成一个输出。我想用 ffmpeg 或 xuggler 用 ffmpeg cmd 做到这一点。 VirtualDub 和 avis 无法满足我的
我可以通过 xuggle 播放视频,但是当我启动我的程序时,视频在单独的 JFrame 中打开! ,我想在我自己的 Jframe 或 JPanel 中以全屏显示模式实现此播放器,那么我该怎么做?? 我
我正在尝试使用 Xuggle 从本地读取 mov 文件。这给了我以下错误: 30-mag-2011 15.56.55 com.xuggle.ferry.NativeLogger log GRAVE:
当我通过 JWS 启动我的应用程序时出现以下异常。但是当它作为一个没有 JNLP 的独立 Java 应用程序启动时它工作得很好。 Exception in thread "AWT-EventQueu
我有一个应用程序可以捕获屏幕视频并保存到文件中。我让用户能够选择 480、720 和“全屏”视频尺寸。 480会在屏幕上的一个小盒子里录制,720会在一个更大的盒子里录制,当然,“全屏”会在更大的盒子
我是一名优秀的程序员,十分优秀!