我已经让OpenCV和PyAudio都工作了但是我不确定如何将它们同步到一起.我无法从OpenCV获得帧速率,并且测量帧的调用时间会随时变化.然而,对于PyAudio,它的基础是获取某个采样率.我如何以相同的速率同步它们.我假设有一些标准或某种方式编解码器做它.(我已经尝试了谷歌,我得到的是唇同步的信息:/).
OpenCV帧率
from __future__ import division
import time
import math
import cv2, cv
vc = cv2.VideoCapture(0)
# get the frame
while True:
before_read = time.time()
rval, frame = vc.read()
after_read = time.time()
if frame is not None:
print len(frame)
print math.ceil((1.0 / (after_read - before_read)))
cv2.imshow("preview", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
print "None..."
cv2.waitKey(1)
# display the frame
while True:
cv2.imshow("preview", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
Run Code Online (Sandbox Code Playgroud)
抓取并保存音频
from sys import byteorder
from array …Run Code Online (Sandbox Code Playgroud) 当我加载一个html页面时,我有一个5个字符串,大约相隔一秒.
<br>1</br>
...... 1 second ......
<br>2</br>
...... 1 second ......
<br>3</br>
...... 1 second ......
<br>4</br>
...... 1 second ......
<br>5</br>
...... 1 second ......
--- end request ---
Run Code Online (Sandbox Code Playgroud)
Chromium和Firefox都会加载并显示第一个br,然后显示下一个br.(但Firefox需要内容编码).但在请求结束之前,Safari拒绝显示任何标记.
铬似乎只是这样做.
Firefox首先需要确定内容编码https://bugzilla.mozilla.org/show_bug.cgi?id=647203
但Safari似乎只是拒绝.是否需要不同的响应代码或标头?我尝试将内容类型明确设置为text/html.没工作.
我已经在Wireshark中确认字符串是分开发送的,即它们不会被缓存并立即发送.
我也确认如果我通过localhost或我使用我的公共IP地址会发生这种情况.
我已经尝试了内容长度并保持活着,前者只是自动关闭请求,后者似乎没有效果.
Wireshark的标题和回应
Firefox(工作)
GET /pe HTTP/1.1
Host: 127.0.01:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Cache-Control: max-age=0
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Tue, 10 Nov 2015 17:10:20 …Run Code Online (Sandbox Code Playgroud) 内容
1.简介
这本身不是一个问题(虽然底部有一个)但是一个HelloWorld应用程序供StackOverflow上的人们试验.
当我第一次尝试在MASM中编程时,我试图找到一个使用WIN32 API调用的工作HelloWorld应用程序(因此不链接到C库)但找不到(在MASM语法中).所以现在我已经有了一些经验,我已经为其他人想要学习装配来摆弄.
2.代码
.386 ; 386 Processor Instruction Set
.model flat,stdcall ; Flat memory model and stdcall method
option casemap:none ; Case Sensitive
;Libaries and Include files used in this project
; Windows.inc defines alias (such as NULL and STD_OUTPUT_HANDLE in this code
include \masm32\include\windows.inc
; Functions that we use (GetStdHandle, WriteConsole, and ExitProcess)
; Listing of all available functions in kernel32.lib
include \masm32\include\kernel32.inc
; Actuall byte code available of the functions …Run Code Online (Sandbox Code Playgroud) 任何人都有使用任何libs使用python播放音频(现在特别是mp3)的经验吗?
细节:
使用是在wxPython应用程序中(是的,我已经尝试过wx.media.MediaCtrl)
好了,现在我已经尝试过了.
试过像http://www.daniweb.com/software-development/python/code/216465/play-mp3-files-via-pythons-win32com-support这样的代码
不起作用(没有音频)
试过wxPython MediaCtrl:有时工作,但最近只有文件播放工作,网址播放几秒钟,然后没有音频(但跟踪继续,我知道文件也完全下载,所以它不是媒体没有下载).我能够通过重新启动来解决这个问题然后它工作了一段时间然后破了,尝试再次重启,这次没有解决它,但是其他使用windows media apis(一个C#.NET应用程序)的玩家工作得很好,所以Windows Media Player.所以这是我猜的wxWidgets库中的一些错误
尝试使用mplayer,例如:http://www.blog.pythonlibrary.org/2010/07/24/wxpython-creating-a-simple-media-player/主要问题mplayer不喜欢设置属性,所以我可以'暂停,因为如果我这样做,那么就不会让我重新设置状态(参见我在这里使用的代码http://paste.pocoo.org/show/574269/)
在Linux上,我使用过gstreamer,经过一些令人头疼的事情后工作(虽然还有问题),MacOS X还没有测试过,但我会尝试使用quicktime和wx.media.MediaCtrl,希望能有效)
两条线之间有什么区别
push eax
mov [esp], eax
Run Code Online (Sandbox Code Playgroud)
是不是将eax推入堆栈(esp指向的是mov [esp],eax呢?)
我知道有可能使用objc_msgSend使用Objective C代码,我相信,手动运行Objective C运行时但是当我运行这段代码时,我得到引用NSString的错误(即使我从不使用它)以及其他未使用的类.
来自xcode的错误

我上面的目标C代码(注释掉)我试图'模仿'.
#include <Foundation/Foundation.h> /*Added suggestion by answer, same errors*/
#include <AppKit/AppKit.h>
int main()
{
// convert objective c into c code
/*
NSAlert *alert = [[NSAlert alloc] init];
[alert setAlertStyle:NSInformationalAlertStyle];
[alert setMessageText:@"Hello World"];
[alert setInformativeText:@"Hello World"];
[alert runModal];
*/
id alert = objc_msgSend(objc_msgSend(objc_getClass("NSAlert"), sel_registerName("alloc")), sel_registerName("init"));
objc_msgSend(alert, sel_getUid("setAlertStyle:"), NSInformationalAlertStyle);
objc_msgSend(alert, sel_getUid("setMessageText:"), CFSTR("Hello World!"));
objc_msgSend(alert, sel_getUid("setInformativeText:"), CFSTR("Hello World!"));
objc_msgSend(alert, sel_getUid("runModal"));
}
Run Code Online (Sandbox Code Playgroud) 好的,我在使用我正在处理的代码表达我的问题时遇到了问题,而没有丢弃大量的代码; 所以这里是同步的(而不是从它的异步视图中询问它).
对于类,何时应该通过方法参数访问变量,何时应该通过实例变量访问?
同步它会是这样的......注意:实际的服务器URL和解析是不同的,但只是复杂的事情.同样在以下示例中,get_token方法将会话作为参数,是否应该通过使用self.session来获取会话?
import urllib
import time
class SyncExampleClass(object):
def __init__(self):
self.session = None
self.token = None
self.session_time = -1
def get_session(self):
s = urllib.urlopen("http://example.com/session/").read()
self.session_time = int(time.time())
return s
def get_token(self, session):
t = urllib.urlopen("http://example.com/token/?session=%s" % session).read()
return t
def construct_api_call(self, api_method):
# if the session is over an hour old (is that the correct sign?)
if time.time() - 3600 > self.session_time or self.session is None:
self.session = get_session()
self.token = get_token(self.session)
call = urllib.urlopen("http://example.com/api/?method=%s%session=%s&token=%s" % (api_method, self.session, …Run Code Online (Sandbox Code Playgroud) 我有以下汇编代码(NASM)
global _main
extern _sizeof
extern _printf
extern _objc_msgSend
extern _objc_getClass
extern _sel_registerName
SECTION .data
alert_text : db "NSAlert", 0
alloc_sel : db "alloc", 0
init_sel : dw "init", 0
alert_class: resb 4
SECTION .text
_main:
; get the class
sub esp, 8
push alert_text
call _objc_getClass
add esp, 12
; save class
mov dword [alert_class], eax
; get alloc selector
sub esp, 8
push alloc_sel
call _sel_registerName
add esp, 12
; allocate it
sub esp, 4
push alloc_sel
; …Run Code Online (Sandbox Code Playgroud) 我最近把我的所有代码都手动导入到BlueJ的eclipse项目中,然后我开始使用设置"运行配置",最后认为我是免费的.然后我运行了代码,我收到了这个错误
java.lang.NoSuchMethodError: main
Exception in thread "main"
Run Code Online (Sandbox Code Playgroud)
所以我想我必须添加一个主方法(我从来没有在BlueJ中这样做,为什么?).所以我这样做只是调用了构造函数方法(在BlueJ中我只是创建一个新对象,JFrame会显示).所以我这样做了,同样的错误.尝试不同的事情后(例如将构造函数中的代码移动到不同的方法等).我把它放在主要方法中:
public void main(String[] args)
{
System.out.println("Hello, this is main why won't Java find this.");
}
Run Code Online (Sandbox Code Playgroud)
之后我仍然遇到了同样的错误,所以我决定将它添加到我的所有类中,以确保它没有使用另一个类作为主类.仍然是同样的错误,所以我想知道你是否有人遇到过这个问题.我也搜索了谷歌,我发现的所有问题都是private类等问题,而且感觉我所有的课程都是public(嘿,我来自Python :)).我知道那不是问题.请帮忙 :)
我的运行配置的图片

警告:长
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class AppFrame extends JFrame
{
public String status = "Status:";// Status of Applet
public int paint_count = 1;// Number of times applet has been painted
public int[] mousePos = {-1, -1};// Stores Mouse's Last Clicked X and Y Cordinates
public …Run Code Online (Sandbox Code Playgroud) 如果我有以下C代码
int main()
{
return 77;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用clang上的-S选项生成asm代码以获取以下内容(Intel语法)
$clang -O0 -mllvm --x86-asm-syntax=intel main.c -S
Run Code Online (Sandbox Code Playgroud)
那么代码就是
.section __TEXT,__text,regular,pure_instructions
.globl _main
.align 4, 0x90
_main: ## @main
.cfi_startproc
## BB#0:
push RBP
Ltmp2:
.cfi_def_cfa_offset 16
Ltmp3:
.cfi_offset rbp, -16
mov RBP, RSP
Ltmp4:
.cfi_def_cfa_register rbp
mov EAX, 77
mov DWORD PTR [RBP - 4], 0
pop RBP
ret
.cfi_endproc
.subsections_via_symbols
Run Code Online (Sandbox Code Playgroud)
然而,无论是gas还是nasm都会生成一个与ld链接的目标文件... clang或gcc会产生实际的好"准备好去"asm吗?gcc的默认汇编程序是gas(甚至没有安装在mac os x上......?对于clang来说不一样).
那么如何手动组装asm代码然后链接呢?