小编uml*_*ute的帖子

用于从视频源(网络摄像头)发出新帧信号的 Gstreamer 消息

我正在尝试使用 gstreamer 将网络摄像头的流保存为一系列图像。到目前为止我已经写了这段代码......

#!/usr/bin/python
import sys, os
import pygtk, gtk, gobject
import pygst
pygst.require("0.10")
import gst

 def __init__(self):
      #.... 
      # Code to create a gtk Window
      #....
      self.player = gst.Pipeline("player")
      source = gst.element_factory_make("v4l2src", "video-source")
      sink = gst.element_factory_make("xvimagesink", "video-output")
      caps = gst.Caps("video/x-raw-yuv, width=640, height=480")
      filter = gst.element_factory_make("capsfilter", "filter")
      filter.set_property("caps", caps)
      self.player.add(source, filter, sink)
      gst.element_link_many(source, filter, sink)
Run Code Online (Sandbox Code Playgroud)

之后,我尝试通过总线创建一个信号来侦听来自源或接收器的任何消息,以指示已发送或接收新帧,以便可以保存它。

      bus = self.player.get_bus()
      bus.add_signal_watch()
      bus.connect("message::any", self.save_file,"Save file")
Run Code Online (Sandbox Code Playgroud)

其中 save_file 是我的回调,我要在其中保存文件。

def save_file(self, bus, msg):
      print  "SAVED A NEW FILE"
Run Code Online (Sandbox Code Playgroud)

我有两个问题,

  1. 我如何调用这个回调。消息::any 不起作用。
  2. 当调用此消息时,如何访问图像缓冲区。

更新(2012 …

python gstreamer v4l2

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

bash:rsync,选项为变量

我正在编写bash脚本,它在某些部分将通过ssh rsync文件.不幸的是,我遇到了将rsync选项保持为变量的问题.请看下面的内容:

    # variables
    directory="/etc"
    backupDirectory="/backup"
    incrementalBackup="/incremental"
    options="-a -e 'ssh -p 10022' -b --backup-dir=$incrementalBackup --delete"
    # rsync
    rsync $options user@server:$directory $backupDirectory
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的脚本因rsync错误而失败

    Unexpected remote arg: user@server:/etc
    rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]
Run Code Online (Sandbox Code Playgroud)

我在脚本调试过程中看到的是,ssh选项('ssh -p 10022')被视为rsync选项.问题是如何正确地将这些额外的ssh设置传递给rsync?提前感谢您提示.

ssh bash rsync

5
推荐指数
2
解决办法
9178
查看次数

如何使自动工具测试读取文件?

my autotools project has a couple of unit-tests. one of these tests (filereader) needs to read a file (data/test1.bin)

Here's my filesystem layout: - libfoo/tests/filereader.c - libfoo/tests/data/test1.bin

and my libfoo/tests/Makefile.am:

AUTOMAKE_OPTIONS = foreign
AM_CPPFLAGS = -I$(top_srcdir)/foo
LDADD = $(top_builddir)/src/libfoo.la

EXTRA_DIST = data/file1.bin

TESTS = filereader
check_PROGRAMS= filereader
filereader_SOURCES = filereader.c
Run Code Online (Sandbox Code Playgroud)

this works great, as long as i do in-tree builds. However, when running the test-suite out-of-tree (e.g. make distcheck), the filereader test cannot find the …

automake unit-testing autotools

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

弱连接与"--as-needed"

我在使用包含弱符号和--as-needed链接器标志的库时遇到了麻烦.

(这使用了Jack库)

$ cat <<EOF >myjack.c
#include <jack/weakjack.h>
#include <jack/jack.h>
int main() {
  if (jack_client_opent)
     jack_client_open("foobar", JackNoStartServer, 0, 0);
  else return 1;
  return 0;
}
EOF

$ gcc -o myjack myjack.c  -Wl,--no-as-needed -ljack

$ ./myjack && echo "ok" || echo "K.O."
ok

$ ldd myjack | grep jack
    libjack.so.0 => /usr/lib/x86_64-linux-gnu/libjack.so.0 (0x00007f16f615f000)

$ gcc -o myjack myjack.c  -Wl,--as-needed -ljack

$ ./myjack && echo "ok" || echo "K.O."
K.O.

$ ldd myjack | grep jack

$ …
Run Code Online (Sandbox Code Playgroud)

linker gcc weak-linking jack

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

导出整个 git 配置以与 GIT_CONFIG 一起使用

有没有办法将当前正在运行的整个GIT_CONFIGgit 配置(本地、全局、系统)转储到一个文件中,然后可以用作文件?

就像是:

$ git config --list > mygit.cfg
$ GIT_CONFIG=mygit.cfg git clone /path/to/repo.git
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面并没有真正做任何事情(配置不是从文件中读取mygit.cfg,而是从标准位置读取)。

还做类似的事情:

$ git config --file mygit.cfg --unset foo.bar
Run Code Online (Sandbox Code Playgroud)

失败并显示:

致命:文件 mygit.cfg 中的错误配置第 1 行

AFAICT,原因是所有git 配置文件都必须是INI-style 文件。但是,git config --list转储一个简单的key=value行列表,git 无法将其用作GIT_CONFIG文件。

我的用例如下:

  • 我在自动构建主机 (CI) 上遇到一些 git 问题(与克隆第 3 方存储库相关),这些问题是由 git 配置设置引起的
    • 因为它是一个自动构建器,所以更改不是持久的。所以我必须能够在脚本中修改系统
  • 我真的不关心(也不想打扰)配置存在于哪个级别(本地、全局、系统......),因为配置是由自动构建器创建的
  • 修复 git 问题涉及取消设置其中一个配置值
    • 不幸的是,该-c标志似乎git只允许设置值,但不允许取消设置它们
  • 我的想法是创建一个累积的 git 配置,从该配置中删除有问题的密钥,并使用修改后的配置来执行我需要执行的一些操作。之后,我想恢复到原来的配置

一种简单的方法是仅连接各个配置级别的文件:

cat /etc/gitconfig …
Run Code Online (Sandbox Code Playgroud)

git

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

使用 autotools 生成(并安装)doxygen 文档

我正在编写一个库(使用 libtools),其中所有 API 文档都是使用 doxygen 完成的。

我想知道是否有一种简单的方法可以将生成的 doxygen 文档的安装集成到 autotools 中。

我认为构建文档应该很容易。但是一旦我运行 doxygen,将生成的(例如).html 文件放入 $(htmldir) 的正确方法是什么?

问题似乎是我不知道(我也不想知道)doxygen 将为我创建哪些文件,所以我无法真正将它们全部枚举到 html_DATA 中

我认为像“html_DATA=html/*.*”这样的东西是个主意

doxygen autotools libtool

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

如何等待启动线程执行init代码

我将主线程同步到最近启动的子线程时遇到问题.

我想做的是:

  • 主线程创建一个新的子线程和块
  • 子线程启动并初始化(可能需要一些时间)
  • 初始化子线程后,主线程继续(并且两个线程并行运行)

我的第一次尝试是这样的:

  typedef struct threaddata_ {
    int running;
  } threaddata_t;

  void*child_thread(void*arg) {
    threaddata_t*x=(threaddata_t)arg;
    /* ... INITIALIZE ... */
    x->running=1; /* signal that we are running */

    /* CHILD THREAD BODY */

    return 0;
  }

  void start_thread(void) {
    threaddata_t*x=(threaddata_t*)malloc(sizeof(threaddata_t));
    x->running=0;
    int result=pthread_create(&threadid, 0, child_thread, &running);
    while(!x->running) usleep(100); /* wait till child is initialized */

    /* MAIN THREAD BODY */
  }
Run Code Online (Sandbox Code Playgroud)

现在我根本不喜欢这个,因为它迫使主线程睡眠的时间可能比必要时间长.所以我使用互斥和条件进行了第二次尝试

  typedef struct threaddata_ {
    pthread_mutex_t x_mutex;
    pthread_cond_t  x_cond;
  } threaddata_t;

  void*child_thread(void*arg) {
    threaddata_t*x=(threaddata_t)arg;
    /* ... INITIALIZE …
Run Code Online (Sandbox Code Playgroud)

c multithreading synchronization pthreads

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

从bash邮件中的地址文本设置

我能够从bash发送邮件,但无法更改from文本,它当前显示为"root".

我希望电子邮件客户端在from字段中显示以下文本script on myserver.com (root@myserver.com).

我该怎么办?

emailsubject="$scriptname ($scriptver) log at $startdate"

if [ $errorcount > 0 ]; then
    emailsubject="ERRORS($errorcount) - ${emailsubject}"
fi

mail -s "$emailsubject" tobealerted@hotmail.com < $logfile
Run Code Online (Sandbox Code Playgroud)

email sendmail

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

创建deb包时字段"描述"值的空白行

我想创建一个debian包,当我尝试下面的命令它给我错误

dpkg-deb --build installer_1.0-1
dpkg-deb: error: parsing file 'installer_1.0-1/DEBIAN/control' near line 8   package 'installer':
blank line in value of field 'Description'
Run Code Online (Sandbox Code Playgroud)

我在Description中添加了空格注释,尽管它给了我错误

debian deb

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

如何在源代码中查找搜索词

我正在寻找一种方法来搜索项目的C/C++代码中的给定术语,同时忽略注释和字符串中的任何出现.

由于代码库相当大,我正在寻找一种方法来自动识别与我的搜索词匹配的代码行,因为它们需要手动检查.

如果可能的话,我想在我的linux系统上执行搜索.

背景

所讨论的代码库是一个带有大量第三方插件的实时信号处理引擎.插件是用各种语言实现的(大多数是C语言,但也有C++和其他语言;目前我只关心这两种语言),没有强制执行任何标准.

我们的代码库目前使用内置类型float的浮点数,我们想用一个typedef允许我们使用双精度的代码.我们希望float在实际代码中找到所有出现的内容(忽略评论和打印输出中的合法用法).

更进一步的是,在代码有效负载中有一些(虽然很少)合法使用float(因此我们真的在寻找一种方法来识别所有需要手动检查的地方,而不是运行一些自动搜索和替换. )

代码还包含C样式的静态强制转换(float),因此依靠编译器警告来识别类型不匹配通常不是一种选择.

代码库由超过3000个(C和C++)文件组成,累积约750000行代码.

代码是跨平台的(linux,osx,w32是主要目标;但也是freebsd和类似的),并使用各种本机编译器(gcc/g ++,clang/clang ++,VisualStudio,...)进行编译.

至今...

到目前为止,我正在使用丑陋的东西:

 grep "\bfloat\b" | sed -e 's|//.*||' -e 's|"[^"]*"||g' | grep "\bfloat\b"
Run Code Online (Sandbox Code Playgroud)

但我认为必须有一些更好的方法来搜索有效载荷代码.

c c++ grep

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