我正在尝试使用 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)
我有两个问题,
更新(2012 …
我正在编写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?提前感谢您提示.
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 …
我在使用包含弱符号和--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) 有没有办法将当前正在运行的整个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文件。
我的用例如下:
-c标志似乎git只允许设置值,但不允许取消设置它们一种简单的方法是仅连接各个配置级别的文件:
cat /etc/gitconfig …Run Code Online (Sandbox Code Playgroud) 我正在编写一个库(使用 libtools),其中所有 API 文档都是使用 doxygen 完成的。
我想知道是否有一种简单的方法可以将生成的 doxygen 文档的安装集成到 autotools 中。
我认为构建文档应该很容易。但是一旦我运行 doxygen,将生成的(例如).html 文件放入 $(htmldir) 的正确方法是什么?
问题似乎是我不知道(我也不想知道)doxygen 将为我创建哪些文件,所以我无法真正将它们全部枚举到 html_DATA 中
我认为像“html_DATA=html/*.*”这样的东西是个坏主意
我将主线程同步到最近启动的子线程时遇到问题.
我想做的是:
我的第一次尝试是这样的:
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) 我能够从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) 我想创建一个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中添加了空格注释,尽管它给了我错误
我正在寻找一种方法来搜索项目的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)
但我认为必须有一些更好的方法来搜索有效载荷代码.