我正在尝试寻找流式传输Java应用程序中生成的实时视频的方法.应用程序需要截取自身的屏幕截图并将其编码为视频流并发布流.
到目前为止,我一直在使用Xuggler(FFMPEG之上的Java库)将屏幕截图编码为视频文件.这非常有效.Xuggler声称能够通过RTMP传输实时视频,但我还没有找到任何关于如何以编程方式执行此操作的文档.
我没有找别人问一个非常类似的问题在Xuggler论坛这里没有响应.
我已经研究过JMF,但由于其他原因,这不是一个选择.
我在我的Java应用程序中使用第三方库.此第三方库在每次应用程序启动时都会抛出自定义未捕获的异常.该例外是无害的,仅用于内部第三方库的日志记录.由于未捕获此异常,因此每次启动应用程序时都会导致Eclipse IDE切换到调试透视图并挂起线程执行,以通知我该问题.我必须手动告诉Eclipse忽略这一点,并且每次都要恢复调试.这非常烦人.我无法更改第三方库以解决此问题.
有没有办法告诉Eclipse IDE忽略特定类型的未捕获异常?
我试过"Step Filtering"但是(我认为)因为自定义未捕获异常不在堆栈跟踪中,所以它不会从调试器中过滤掉.这是我第一次涉足Step Filtering,所以我可能会错误地使用它.这是一个示例堆栈跟踪.
Daemon Thread [Thread-13] (Suspended (exception CustomThirdPartyException))
ThreadPoolExecutor$Worker.run() line: not available [local variables unavailable]
Thread.run() line: not available
Run Code Online (Sandbox Code Playgroud)
编辑:
在禁用Eclipse中所有未捕获的异常后,jluzwick使用我们自己的记录器来监视未捕获的异常可能在技术上有效,但它并不理想,如果我们的记录器坏了,我们可能会错过任何东西.
mazaneicha的解决方案似乎在正确的轨道上,但我无法让它按照我想要的方式工作.这可能是由于我的用户错误.
jluzwick和mazaneicha都有可能解决这个问题,但Konstantin Komissarchik有"正确"的答案,因为这应该被推回到图书馆的创作者来修复.有时技术解决方案不正确.
我正在尝试创建一个可以通过 CMake 重用的 C++ 库。当我尝试为项目安装导出文件时失败。我不明白为什么。这是我得到的错误。
Target "Proj_LibA" INTERFACE_SOURCES property contains path:
"C:/projects/cmake_temp/src/libA/include/liba.hpp"
which is prefixed in the source directory.
Run Code Online (Sandbox Code Playgroud)
阅读 CMake 文档和其他stackoverflow帖子意味着我设置源文件路径和/或包含目录的方式有问题。这是一个重现我的问题的 SSCE。
文件夹结构
cmake_temp/
/build
/install
/src/
/CMakeLists.txt
/src/libA/
/include/liba.hpp
/CMakeLists.txt
/liba.cpp
/LibAConfig.cmake.in
Run Code Online (Sandbox Code Playgroud)
/src/CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project("TestProj")
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set(include_install_dir ${CMAKE_INSTALL_PREFIX}/include/)
set(export_cmake ${CMAKE_INSTALL_PREFIX}/cmake)
set(lib_install_dir ${CMAKE_INSTALL_PREFIX}/lib)
set(bin_install_dir ${CMAKE_INSTALL_PREFIX}/bin)
add_subdirectory(libA)
#add_subdirectory(exec)
Run Code Online (Sandbox Code Playgroud)
liba/include/liba.hpp
#ifndef liba
#define liba
#include "LibA_export.hpp"
class PROJ_LIBA_EXPORT Foo
{
public:
Foo(const int bias);
int add(int a, int b);
private: …Run Code Online (Sandbox Code Playgroud) 我正在使用内核3.13.0编写Linux设备驱动程序,但对于为什么收到此警告感到困惑。
warning: initialization from incompatible pointer type [enabled by default]
.read = read_proc,
^
warning: (near initialization for ‘proc_fops.read’) [enabled by default]
Run Code Online (Sandbox Code Playgroud)
据我所知,proc函数的file_operations设置与设备函数相同。我可以读/写到/ dev / MyDevice,没有任何问题,也没有警告。proc写入功能不会引发警告,而只会发出读取警告。我做错什么了?
/*****************************************************************************/
//DEVICE OPERATIONS
/*****************************************************************************/
static ssize_t dev_read(struct file *pfil, char __user *pBuf, size_t
len, loff_t *p_off)
{
//Not relevant to this question
}
static ssize_t dev_write(struct file *pfil, const char __user *pBuf,
size_t len, loff_t *p_off)
{
//Not relevant to this question
}
static struct file_operations dev_fops =
{ //None of these cause a …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Java CodeModel库来生成一些代码.在我生成的代码中,我需要执行类型转换.我想要这样的东西......
foo.setBar( ((TypeCastToThis)someVariable).getBar() );
Run Code Online (Sandbox Code Playgroud)
我在库中找到的唯一支持是使用JCast JExpr.cast(JType类型,JExpression expr).但是根据Eclipse,返回类型JCast不是公共的.确切的错误是:"类型com.sun.codemodel.JCast不可见".
这是我正在做的一个简单的例子.
import java.io.File;
import com.sun.codemodel.JBlock;
import com.sun.codemodel.JCast; //<-- Eclipse flags this as an error
import com.sun.codemodel.JClass;
import com.sun.codemodel.JClassAlreadyExistsException;
import com.sun.codemodel.JCodeModel;
import com.sun.codemodel.JDefinedClass;
import com.sun.codemodel.JExpr;
import com.sun.codemodel.JMethod;
import com.sun.codemodel.JMod;
import com.sun.codemodel.JVar;
public class CastTest
{
public static void main(String[] args) throws JClassAlreadyExistsException
{
// TODO Auto-generated method stub
JCodeModel codeModel = new JCodeModel();
JDefinedClass testClass = codeModel._class("MyTestClass");
JMethod testMeth = testClass.method(JMod.PUBLIC, codeModel.VOID, "TypeCastTestMethod");
JBlock testMethBody = testMeth.body();
JVar castMeVar = …Run Code Online (Sandbox Code Playgroud) 在Java中声明来自多个库的常量分组有哪些选择?
例如,我有一个网络消息协议.该协议具有一些标准消息,并允许创建自定义消息.每条消息都有一个唯一的ID号.我真的想将所有这些唯一ID组合到我的应用程序中的枚举中.就像是...
public enum MessageType
{
//Standard messages in one library
FooMsg(1),
BarMsg(2),
//Custom messages in another library
MyCustomMessage(100),
MyOthercustomMessage(101);
private long msgNumber;
public long getMessageNumber(long msgNumber) { return msgNumber;}
public static MessageType fromMessageNumber(long messageNumber)
{
//Reverse lookup code here...
}
//Few more utilities that don't matter for this question
private MessageType(long msgNumber)
{
this.msgNumber = msgNumber;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以创建一个消息类型的通用方法.
public void doStuff(MessageType msgType, MyMessageObject data)
{
switch(msgType)
{
case FooMsg: //Do stuff
break;
//Other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但是,枚举要求我在编译时知道所有消息类型,但消息分布在多个库中.其中一些库是可选的加载,因此如果它们未加载,我不想将它们包含在枚举中.
有没有办法在运行时定义一个"常量集合",其功能类似于枚举?