小编mpr*_*net的帖子

获取tinyxml2中的子元素

这可能是一个新手问题,但我是tinyxml2的新手,无法找到任何相关信息.

我试图使用tinyxml2循环遍历XML文件.

<images>
    <correctImage>image1.png</correctImage>
    <image>image2.png</image>
    <image>image3.png</image>
</images>
Run Code Online (Sandbox Code Playgroud)

我有图像元素的XMLElement,但我不知道如何获取内部元素.

任何一只手都会受到赞赏.

为了记录,这是我获取XML元素的方式:

tinyxml2::XMLElement *levelElement = doc.FirstChildElement("reactor")->FirstChildElement("level")->FirstChildElement("images");
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c++ tinyxml2

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

GStreamer + V4L2loopback兼容Chrome兼容网络摄像头

我正在尝试使用v4l2loopback在Chrome中创建虚拟相机,其中传入的视频是通过RTP输入的H264.

我在Chrome中识别GStreamer测试视频方面取得了一些成功MediaStreamTrack.getSources:

$ sudo modprobe v4l2loopback
$ gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video0
Run Code Online (Sandbox Code Playgroud)

这很有效,Chrome会显示视频测试源.

但是,当我使用传入的h264/RTP源时,设备不会显示MediaStreamTrack.getSources.例如:

gst-launch-1.0 -v tcpclientsrc host=<IPADDRESS> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! v4l2sink device=/dev/video0
Run Code Online (Sandbox Code Playgroud)

这是什么原因?解决方案是什么?

我原本以为这可能与视频格式有关,也许需要通过v4l2loopback设置正确的上限.

google-chrome gstreamer v4l2loopback

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

将MPEG-DASH段(例如,init.mp4 + segments.m4s)组合回一个完整的source.mp4?

GPAC,http: //gpac.wp.mines-telecom.fr/,可用于与MPEG-DASH规范一起进行视频分割.一种类型的结果是init文件(例如,init.mp4)和几个大致固定持续时间段(例如,段 - %d.m4s)的组合.如果我得到那些结果并且我想将它们反转/组合回一个完整的source.mp4文件怎么办?我可以使用GPAC或ffmpeg吗?

video ffmpeg mpeg-dash

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

SDL2:生成完全透明的纹理

如何使用SDL_CreateTexture创建透明纹理?默认情况下我用这样的代码创建texure:

SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET, x, y);
Run Code Online (Sandbox Code Playgroud)

然后我在这个纹理上痛苦,将输出重定向到这个纹理.但是最后我想在屏幕上呈现这个(未更新的)像素是黑色的.

我尝试过使用以下方法:

 SDL_RenderClear(_Renderer);
Run Code Online (Sandbox Code Playgroud)

甚至与绘图和创建的纹理与绘画透明矩形与不同的混合模式,但我所有的结果仍然是不透明的纹理:/

   SDL_Rect rect={0,0,Width,Height};
   SDL_SetRenderDrawBlendMode(_Renderer,SDL_BLENDMODE_BLEND);
   SDL_SetRenderDrawColor(_Renderer,255,255,255,0);
   SDL_RenderFillRect(_Renderer,&rect);
Run Code Online (Sandbox Code Playgroud)

更具体:

    //this->texDefault.get()->get() = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET, x, y);
    SDL_SetRenderTarget(_Renderer.get()->get(), this->texDefault.get()->get());
    SDL_SetRenderDrawBlendMode(this->_Renderer.get()->get(),SDL_BLENDMODE_NONE);
    SDL_SetRenderDrawColor(this->_Renderer.get()->get(),255,0,255,0);
    SDL_RenderClear(this->_Renderer.get()->get());
    //SDL_Rect rect={0,0,Width,Height};
    //SDL_SetRenderDrawColor(this->_Renderer.get()->get(),255,255,255,255);
    //SDL_RenderFillRect(this->_Renderer.get()->get(),&rect);
    //SDL_RenderClear(this->_Renderer.get()->get());
    //SDL_SetRenderDrawBlendMode(this->_Renderer.get()->get(),SDL_BLENDMODE_NONE);
    SDL_SetRenderTarget(_Renderer.get()->get(), NULL);
    SDL_Rect rect= {relTop+Top,relLeft+Left,Height,Width};
    SDL_SetRenderDrawBlendMode(this->_Renderer.get()->get(),SDL_BLENDMODE_BLEND);
    SDL_RenderCopy(this->_Renderer.get()->get(), this->texDefault->get(), NULL, &rect);
Run Code Online (Sandbox Code Playgroud)

这段代码总是产生不透明的纹理,与我为混合和alpha设置的不同

结果是:

在此输入图像描述

也许还有一些其他简单的方法可以在SDL2中创建透明的空纹理,比如x/y大小的完全透明的png,但在文件中加载这样的图像有点无意义:/

c++ opengl sdl graphic

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

是不是在typeid里面调用了函数?

是不是在typeid内部调用的函数?请考虑以下代码.

#include <iostream>
#include <typeinfo>
using namespace std;

int mul10(int &s)
{
    static int count = 1;
    cout << "Evaluating call " << count << endl;
    count++;
    s *= 10;
    return(s);
}

int main()
{
    int i = 5;
    cout << typeid(mul10(i)).name() << endl;
    cout << i << endl;
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

所以这里的输出是

int
5
Run Code Online (Sandbox Code Playgroud)

很明显,价值i并没有改变,而且mul10实际上并没有调用这个功能.这是怎么评估typeid参数的?

c++

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

zlib c ++和解压缩文件

我已经开始使用zlib 1.2.5了,我没有看到从zip文件中提取的任何例程?我读到了一个minizip应用程序,这是发行版的一部分.

这是应该怎么做的?

c c++ zlib

8
推荐指数
2
解决办法
2万
查看次数

MPEG-DASH和碎片mp4

我对碎片mp4的理解是它是一个单独的文件,但在内部它被构造为碎片.有人可以向我解释如何在DASH的.mpd文件中解决这些片段吗?我见过的.mpd文件似乎用不同的url来处理各个段,但我想,片段化的mp4必须通过字节偏移来解决到同一个url.然后浏览器如何知道哪些时间对应于哪个字节范围?

mp4 ffmpeg html5-video mpeg-dash

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

Getopt可选参数?

我有一个程序,你输入一个选项-d ,然后在选项 后是否提供非可选参数,做一些事情.
继承我的代码:

#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>

#define OPT_LIST "d::" 

int main (int argc, char *argv[])
{
    int c;
    char string[] = "blah";

    while ((c = getopt (argc, argv, OPT_LIST)) != -1)
    {
        switch (c)
        {
            case 'd':
                    printf("%s\n", optarg);
                    break;

            case '?':
                fprintf(stderr, "invalid option\n");
                exit(EXIT_FAILURE);
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果在选项后输入非可选参数,则会打印参数.但是如果用户没有提供非可选参数,我希望它打印出char"string"(这就是为什么我把双冒号放在OPT_LIST中).但我不知道如何做到这一点,所以任何帮助将不胜感激.

下面是我运行程序时会发生什么:

user:desktop shaun$ ./arg -d hello
hello
user:desktop shaun$ ./arg -d 
./arg: option requires an argument -- d
invalid option
Run Code Online (Sandbox Code Playgroud)

我正在使用C语言运行带有OS X的Mac.

c arguments getopt optional option

8
推荐指数
2
解决办法
3万
查看次数

当我尝试在Windows Server 2008中上传二进制文件时,LibCURL发送文件名而不是文件内容

我用libCURL得到了这种奇怪的行为.当我尝试通过在文件名的开头附加"@"来上传文件时(如libCURL的手册页中所述),而不是上传文件内容,libCURL自己发送文件名(开头是@).

这是在Windows 2008 R2上运行的,xampp版本为5.6.8,其卷曲编译为(curl版本7.40.0).

这是相关的代码片段:

$post['pic'] = "@C:\\image.png";

$ret = curl_setopt( $ch, CURLOPT_POST, TRUE );
if (!$ret) die("curl_setopt CURLOPT_POST failed");
$ret = curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
if (!$ret) die("curl_setopt CURLOPT_POSTFIELDS failed");

$response = curl_exec( $ch );
Run Code Online (Sandbox Code Playgroud)

此代码适用于Linux但不适用于Windows Server 2008.

这是我得到的表单数据:

Content-Type: multipart/form-data; \\
boundary=------------------------c74a6af8b52d997a

--------------------------c74a6af8b52d997a
Content-Disposition: form-data; name="pic"

@C:\image.png
--------------------------c74a6af8b52d997a--
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我收到的@C:\image.png不是内容.

有谁知道为什么libCURL不会上传文件内容?

windows upload libcurl php-curl

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

Java中的军事时差

这是我的TimeInterval类:

public class TimeInterval {

   private int fTime;
   private int sTime;

   public TimeInterval(int fTime, int sTime) {
      if(fTime < 0 || fTime > 2400 || sTime < 0 || sTime > 2400) {
          System.out.println("Illegal times, must be < 2400 and > 0)");
          System.exit(0);
      } else {
          this.fTime = fTime;
          this.sTime = sTime;
      }
   }

   public int getHours() {
      return Math.abs((fTime - sTime) / 100);
   }

   public int getMinutes() {
       return Math.abs((fTime - sTime) % 100);
   }

   public double getDecimalTime() { …
Run Code Online (Sandbox Code Playgroud)

java

8
推荐指数
2
解决办法
715
查看次数