小编Ged*_*nas的帖子

FFmpeg无法解码H264流/帧数据

最近我有机会使用两台通过RTSP流式传输H264的设备.我尝试使用FFmpeg库解压缩此流时遇到了一些问题.

每次调用" avcodec_decode_video2 "时 - FFmpeg只是说:

[h264 @ 00339220]没有框架!

我的原始H264流I帧数据开始如下:" 65 88 84 21 3F F8 F8 0D ......"(据我所知,这个0x65表示它是一个IDR帧?)

一台设备的其他框架开始如下:" 41 9A 22 07 F3 4E 48 CC ...."

和其他设备 - 像这样:" 61 9A 25 C1 1C 45 62 39 ...."

  • 我在这里错过了一些帧数据吗?
  • FFmpeg是否需要设置一些额外的参数?

我期待帧数据开始时至少有" 00 00 00 01 "字节......但这就是我所拥有的......

ffmpeg stream rtsp h.264

18
推荐指数
1
解决办法
1万
查看次数

VS2012 nmake使用v110_xp工具集?

有没有办法在使用"nmake"编译时使用v110_xp工具集(而不是默认的"v110")?

我正在尝试为VisualStudio2012编译Qt5库,我也需要它在Windows XP机器上运行.我已经设法使用带有nmake的VS2012编译所有Qt5库,但即使是简单的测试应用程序也无法在XP机器上运行,因为" 程序入口点_except_handler4_common无法位于动态链接库msvcrt.dll中 ".(在Windows 7计算机上,我的测试应用程序正常工作)

c++ nmake qt5 visual-studio-2012

11
推荐指数
1
解决办法
6644
查看次数

在VisualStudio 2010上使用v90平台工具集

在我们的软件开发公司中,我们主要使用VisualStudio 2010(平台工具集v100).我们遇到了一种情况,我们需要使用VisualStudio 2008(V90)编译的一些组织不良的第三方SDK,并且在使用"v100"平台工具集时,此SDK无法正常运行.

我的意思是"组织不良"是......想象一下例如SDK导出函数,其中包含类似"std :: string"的东西.

解决方案是创建一个使用VS2010编译的"包装"dll,但使用"Platform Toolset v90"选项.但是要使"Platform Toolset v90"正常工作,我们需要安装一个VisualStudio 2008.

我的问题是:在没有购买VisualStudio 2008的情况下,有没有合法的方法在VS2010中使用v90平台工具集?也许有某种v90"工具包"或者我们可以使用的东西?

谢谢.

visual-studio

9
推荐指数
1
解决办法
8044
查看次数

c ++变量赋值,这是正常的方式..?

这可能是一个愚蠢的问题,但我仍然有点好奇......最近我正在研究我以前的一个同事项目,我注意到他真的喜欢使用这样的东西:

int foo(7);
Run Code Online (Sandbox Code Playgroud)

代替:

int foo = 7;
Run Code Online (Sandbox Code Playgroud)

这是用C++语言做的正常/好的方法吗?它有什么好处吗?(或者这只是他进入的一些愚蠢的编程风格..?)

这真的让我想起了如何在类构造函数中分配类成员变量的好方法...像这样:

class MyClass
{
public:
   MyClass(int foo) : mFoo(foo)
   { }

private:
   int   mFoo;
};
Run Code Online (Sandbox Code Playgroud)

而不是这个:

class MyClass
{
public:
   MyClass(int foo)
   {
      mFoo = foo; 
   }

private:
   int   mFoo;
};
Run Code Online (Sandbox Code Playgroud)

c++ variables styles variable-assignment

8
推荐指数
1
解决办法
6072
查看次数

Qt QTimer以这种方式阻止它是否安全?

在它的"超时"信号/插槽功能中停止Qt的定时器是否安全?似乎无法在Qt文档中找到有关QTimer的任何信息.

我创建了一个定时向服务器发送"保持活动"消息的计时器.如果在发送消息时出现某种错误,我希望停止此计时器.

private:
   QTimer* mpKeepAliveTimer;
Run Code Online (Sandbox Code Playgroud)

Timer初始化如下:

mpKeepAliveTimer = new QTimer(/* this */);

QObject::connect(mpKeepAliveTimer, SIGNAL(timeout()), this, SLOT(OnKeepAlive()));

mpKeepAliveTimer->start(KEEP_ALIVE_PERIOD);
Run Code Online (Sandbox Code Playgroud)

像这样停下来:

if (mpKeepAliveTimer != NULL) // <-- Edited
{
    if (mpKeepAliveTimer->isActive() == true)
        mpKeepAliveTimer->stop();

    delete mpKeepAliveTimer;
    mpKeepAliveTimer = NULL;
}
Run Code Online (Sandbox Code Playgroud)

超时功能如下所示:

void Classname::OnKeepAlive()
{
   if (isErrorFound == true)
      mpKeepAliveTimer->stop();   // <---- IS THIS SAFE?
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ qt timer

6
推荐指数
1
解决办法
1万
查看次数

VisualStudio 跨平台 (Linux) 项目中的预编译头文件

常规VisualStudio 项目中,您可以通过转到Configuration Properties -> C/C++ -> Precompiled Headers来设置预编译头。在此输入图像描述

但是,在处理跨平台(Linux) 项目时,缺少预编译头选项。

在此输入图像描述

有没有办法配置预编译头?

c++ linux cross-platform precompiled-headers visual-studio

5
推荐指数
1
解决办法
310
查看次数

在C++中将错误代码映射到字符串

将错误代码从枚举映射到字符串的更有效方法是什么?(在C++中)

例如,现在我正在做这样的事情:

std::string ErrorCodeToString(enum errorCode)
{
   switch (errorCode)
   {
      case ERROR_ONE:   return "ERROR_ONE";
      case ERROR_TWO:   return "ERROR_TWO";
      ...
      default:
         break;
   }

   return "UNKNOWN";
}
Run Code Online (Sandbox Code Playgroud)

如果我做这样的事情会以任何方式提高效率吗?:

#define ToStr( name ) # name;

std::string MapError(enum errorCode)
{
   switch (errorCode)
   {
      case ERROR_ONE:   return ToStr(ERROR_ONE);
      case ERROR_TWO:   return ToStr(ERROR_TWO);
      ...
      default:
         break;
   }

   return "UNKNOWN";
}
Run Code Online (Sandbox Code Playgroud)

也许有人对此有任何建议或想法?谢谢.

c++ string error-code

4
推荐指数
2
解决办法
5191
查看次数

GLSL 统一布局绑定和纹理

当制服使用布局绑定时,我对什么是绑定纹理的正确方法感到有些困惑。

layout(binding = 0, std140) uniform uCommon
{
    mat4 projectionMatrix;
    mat4 viewMatrix;
};

layout(binding = 1, std140) uniform uModel
{
    mat4 modelViewProjectionMatrix;
};

layout(binding = 3) uniform sampler2D uTexture;
Run Code Online (Sandbox Code Playgroud)

要绑定我的第一个纹理,我应该使用“GL_TEXTURE0 + 3”吗?

glActiveTexture(GL_TEXTURE0 + 3);
glBindTexture(GL_TEXTURE_2D, textureId);
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

编辑:或者采样器使用与其他制服分开的绑定?我可以用吗:

layout(binding = 0) uniform sampler2D uTexture;
Run Code Online (Sandbox Code Playgroud)

还在使用的时候

layout(binding = 0, std140) uniform uCommon
Run Code Online (Sandbox Code Playgroud)

opengl shader glsl opengl-4

2
推荐指数
1
解决办法
3650
查看次数

如何从视图投影矩阵检索相机原点/位置?(OpenGL)

有没有办法从视图投影矩阵中检索相机原点/位置?(OpenGL)

我正在尝试绘制相机的截锥体,并且计算远平面平面的角没有问题。

但我不知道如何检索代表相机原点的点。

我期望通过乘以同质剪切空间坐标来检索它:

glm::vec4(0.f, 0.f, 0.f, 1.f)
Run Code Online (Sandbox Code Playgroud)

但我发现有点像~倒置的相机位置。(在屏幕截图中标记为X)包含以下所有源代码。

在此输入图像描述

    // Homogeneous points for source cube in clip-space.
    std::array<glm::vec4, 9> corners =
    {
        // Far plane
        glm::vec4(-1.f,-1.f, 1.f, 1.f), // bottom-left
        glm::vec4( 1.f,-1.f, 1.f, 1.f), // bottom-right
        glm::vec4( 1.f, 1.f, 1.f, 1.f), // top-right
        glm::vec4(-1.f, 1.f, 1.f, 1.f), // top-left

        // Near plane
        glm::vec4(-1.f,-1.f,-1.f, 1.f), // bottom-left
        glm::vec4( 1.f,-1.f,-1.f, 1.f), // bottom-right
        glm::vec4( 1.f, 1.f,-1.f, 1.f), // top-right
        glm::vec4(-1.f, 1.f,-1.f, 1.f), // top-left

        // Camera/screen center …
Run Code Online (Sandbox Code Playgroud)

c++ opengl frustum projection-matrix glm-math

2
推荐指数
1
解决办法
3210
查看次数

如何使用模板为“ std :: array”声明“ using”

例如,我有类似的代码:

template<typename A, typename B>
using Map = std::map<A, B>;

template<typename A, typename B>
using UnorderedMap = std::unordered_map<A, B>;
Run Code Online (Sandbox Code Playgroud)

我想对做同样的事情std::array,即:

template<typename A, typename B>
using Array = std::array<A, B>;
Run Code Online (Sandbox Code Playgroud)

但是,如果这样做,我将得到一个编译器错误:

错误C2993:'B':非类型模板参数'_Size'的非法类型

错误C2955:“ std :: array”:使用类模板需要模板

参数列表array(21):message:参见'std :: array'的声明

有什么方法可以声明Array在后台使用的std::array吗?

最后,我想使用Array<int, 7> items代替的数组std::array<int, 7> items

c++ arrays templates std stdarray

1
推荐指数
1
解决办法
96
查看次数