小编Rya*_*tin的帖子

如何读取python和ffmpeg或类似的实时麦克风音量

我试图用近乎实时的方式读取Python中USB麦克风音频的音量.

我有件,但无法弄清楚如何把它放在一起.

如果我已经有一个.wav文件,我可以简单地使用wavefile读取它:

from wavefile import WaveReader

with WaveReader("/Users/rmartin/audio.wav") as r:
    for data in r.read_iter(size=512):
        left_channel = data[0]
        volume = np.linalg.norm(left_channel)
        print volume
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想实时处理来自麦克风的音频,而不是文件.

所以我的想法是使用像ffmpeg这样的东西将实时输出PIPE到WaveReader,但我的Byte知识有点缺乏.

import subprocess
import numpy as np

command = ["/usr/local/bin/ffmpeg",
            '-f', 'avfoundation',
            '-i', ':2',
            '-t', '5',
            '-ar', '11025',
            '-ac', '1',
            '-acodec','aac', '-']

pipe = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=10**8)
stdout_data = pipe.stdout.read()
audio_array = np.fromstring(stdout_data, dtype="int16")

print audio_array
Run Code Online (Sandbox Code Playgroud)

这看起来很漂亮,但它没有做太多.它失败并显示[NULL @ 0x7ff640016600]无法为'pipe:'错误找到合适的输出格式.

我认为这是一个相当简单的事情,因为我只需要检查音量的音量.

有人知道如何完成这个吗?FFMPEG不是必需的,但它确实需要在OSX和Linux上运行.

python linux audio ffmpeg numpy

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

如何将实时视频帧从ffmpeg传输到PIL?

我需要使用ffmpeg/avconv将jpg帧传输到python PIL(Pillow)Image对象,使用gst作为中介*.我一直在寻找这个答案而没有太多运气.我想我很接近 - 但我被困住了.使用Python 2.7

我从python启动的理想管道如下所示:

  1. ffmpeg/avconv(作为h264视频)
  2. 管道 - >
  3. gst-streamer(帧分为jpg)
  4. 管道 - >
  5. Pil图像对象

我将控制的前几个步骤作为单个命令,将.jpgs写入磁盘的速度与硬件允许的速度一样快.

该命令看起来像这样:

command = [
        "ffmpeg",
        "-f video4linux2",
        "-r 30",
        "-video_size 1280x720",
        "-pixel_format 'uyvy422'",
        "-i /dev/video0",
        "-vf fps=30",
        "-f H264",
        "-vcodec libx264",
        "-preset ultrafast",
        "pipe:1 -",
        "|", # Pipe to GST
        "gst-launch-1.0 fdsrc !",
        "video/x-h264,framerate=30/1,stream-format=byte-stream !",
        "decodebin ! videorate ! video/x-raw,framerate=30/1 !",
        "videoconvert !",
        "jpegenc quality=55 !",
        "multifilesink location=" + Utils.live_sync_path + "live_%04d.jpg"
      ]
Run Code Online (Sandbox Code Playgroud)

如果使用popen或os.system运行,这将成功将帧写入磁盘.

但是我没有将帧写入磁盘,而是想要捕获我的子进程管道中的输出,并在写入时将帧读取到类似文件的缓冲区中,然后由PIL读取.

像这样的东西:

    import subprocess as …
Run Code Online (Sandbox Code Playgroud)

python linux ffmpeg gstreamer raspberry-pi

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

将数字字符串编码为缩短的字母数字字符串,然后再返回

快问.我试图在Python中查找或编写一个编码器,通过使用大写和小写字母缩短一串数字.数字字符串看起来像这样:

20120425161608678259146181504021022591461815040210220120425161608667
Run Code Online (Sandbox Code Playgroud)

长度总是一样的.

我最初的想法是编写一些简单的编码器来利用大写和小写字母和数字来缩短这个字符串,看起来更像是这样:

a26Dkd38JK
Run Code Online (Sandbox Code Playgroud)

这完全是武断的,只是想尽可能清楚.我确信有一种非常光滑的方式可以做到这一点,可能已经内置.也许这是一个令人尴尬的问题甚至要问.

此外,我需要能够采取缩短的字符串并将其转换回更长的数值.我应该写一些东西并发布代码,还是我应该已经知道的这是一个用Python函数构建的一行?

谢谢!

python string encode numeric

7
推荐指数
2
解决办法
5811
查看次数

恢复Android Phonegap应用的正确方法是什么?

我不确定这是否是预期的,如果它是一个错误,是否有解决方法.

当用户点击我们的Android Phonegap应用程序中的主页按钮时,应用程序会正确地最小化.当用户单击图标以启动应用程序时,它将从头开始重新启动.这是不可取的.

用户通过单击主页按钮最小化应用程序后,应用程序将有两种正常恢复方式:

  1. 长按主页按钮并单击应用程序将恢复应用程序的最后状态.
  2. 单击状态栏中的通知(推送通知)将恢复应用程序的最后状态.

所以我的问题是,当用户点击桌面上的应用程序图标时,我们需要做什么才能以与上述两项相同的方式恢复应用程序?该应用程序运行正常,上面列出的项目1确认.

任何帮助将不胜感激.谢谢!

android cordova

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

如何将数据(如用户ID)传递给Web工作者以从服务器获取其他推送通知数据?

我想我错过了一些非常容易的东西.

我正在注册一个服务工作者,通过GCM从我的服务器接收推送通知.这很好用.

不幸的是,我不能传递任何数据和我的推送通知一起,因此,当服务人员接收推,它不知道有这回事.因此,在我显示通知之前,我会回调我的服务器以请求有关推送的其他信息,例如标题,消息和图标.

我的问题是,当我回到我的服务器获取更多信息时,在显示推送之前,我在服务工作者中没有关于请求其他信息的用户的任何信息.为了收集该信息,我需要将用户ID和令牌传递给我的服务器.

所以我的问题归结为:如何从我的core.js代码中获取用户id和令牌变量到服务工作者,以便我可以使用它们从我的服务器收集其他信息?

在我的网络应用程序中,我正在注册服务工作者,如下所示:

core.js

var uid = "89123891231239"; // Dummy global id variable
var token = "eo4Dr8qhrFY"; // Dummy global token variable

function setupPushNotifications(){
    console.log("Setting up push notifications");

    if ('serviceWorker' in navigator) {

        navigator.serviceWorker.register('js/pushWorker.js').then(function(reg) {

            console.log(reg);

            reg.pushManager.subscribe({
                userVisibleOnly: true
            }).then(function(sub) {
                console.log('endpoint:', sub.endpoint);
            });

        }).catch(function(error) {
            console.log('Error: ', error);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个看起来像这样的服务工作者:

pushWorker.js

'use strict';

self.addEventListener('install', function(event) {
    self.skipWaiting();
    console.log('Installed', event);
});

self.addEventListener('activate', function(event) {
    console.log('Activated', event);
});

self.addEventListener('push', function(event) {  

    var uid = "EXISTS_IN_CORE.JS"; …
Run Code Online (Sandbox Code Playgroud)

javascript html5 push-notification web-worker google-chrome-app

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

在上传之前从Phonegap获取图像宽度和高度

这应该很容易,但我找不到答案.我需要获取图像的宽度和高度,通过Phonegap中的fileURI抓取,然后再将其上传到我们的服务器.当然,在上传之前必须有一些html5/Phonegap魔术.这里有一些真正减少的代码来显示我所处的位置:

function got_image(image_uri) {
    // Great, we've got the URI
    window.resolveLocalFileSystemURI(image_uri, function(fileEntry) {
        // Great, now we have a fileEntry object.
        // How do we get the image width and height?
    })
}

// Get the image URI using Phonegap
navigator.camera.getPicture(got_image, fail_function, some_settings)
Run Code Online (Sandbox Code Playgroud)

知道遗失的是什么吗?我希望我有西蒙麦克唐纳沙兹龙的快速拨号,但我没有.

javascript html5 cordova

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

使用Urban Airship&Phonegap,无法注册设备:"设备令牌为零"

从git hub(https://github.com/urbanairship/phonegap-ua-push)上的最新示例,以及Phonegap/Cordova最新版v2.3.0的全新版本,我们在iOS注册设备时遇到了麻烦UA.在我们更新到最新版之前,我们没有问题.我们正在注册这样的设备:

function on_reg(error, pushID) {
    console.log("UA Registration complete.")
}

push = window.pushNotification
push.registerEvent('registration', on_reg)
Run Code Online (Sandbox Code Playgroud)

但每当我们调用该代码时,我们会收到一条错误消息" 设备令牌为零.稍后将尝试注册 ".除非从未发生过.

这是日志:

2013-01-09 17:38:29.378分组[271:907] [D] - [UAPush updateRegistration] [第589行]检查注册状态

2013-01-09 17:38:29.380分组[271:907] [D] - [UAPush updateRegistration] [第609行]设备令牌为零.稍后将尝试注册

2013-01-09 17:38:29.744分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第275行]从钥匙串中检索设备ID信息.

2013-01-09 17:38:29.745分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第279行]设备ID结果不是nil.

2013-01-09 17:38:29.746分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第288行]已加载设备ID:C1E75722-ED34-4513-BBA5-CB9EDEBBD117

2013-01-09 17:38:29.747分组[271:907] [D] + [UAKeychainUtils getDeviceID] [第289行]已加载型号名称:iPhone4,1

2013-01-09 17:38:32.724分组[271:907] [D] - [UAAnalytics requestDidSucceed:response:responseData:] [Line 461] Google Analytics数据已成功发送.状态:200

我们做错了什么?

urbanairship.com ios cordova

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

“SignatureError:无法验证签名”- Okta,pySAML2

三天来,我一直在拉我的头发,试图将我的头包裹在 Okta 和 SAML 上。

在我的本地机器(OSX Mavericks)上,我能够成功地按照此处列出的步骤进行操作:http : //developer.okta.com/docs/guides/pysaml2

事情有效。

但是将所有内容转移到我们的生产服务器,它是一个 CentOS 机器,运行几乎相同的代码,我面临这个“SignatureError:无法验证签名”错误。

回溯(最近一次调用):auth_response = saml_client.parse_authn_request_response(SAMLResponse, entity.BINDING_HTTP_POST) File \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/client_base.py\ ",第 599 行,在 parse_authn_request_response 绑定中,**kwargs)

response = response.loads(xmlstr, False, origxml=origxml) File \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/response.py\", line 510, in加载 self._loads(xmldata, decode, origxml)

文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/response.py\",第 335 行,在 _loads **args) 文件 \"/usr/local/lib /python2.7.11/lib/python2.7/site-packages/saml2/sigver.py\",第 1756 行,在正确的_signed_response class_name(response), origdoc 中)

文件 \"/usr/local/lib/python2.7.11/lib/python2.7/site-packages/saml2/sigver.py\", line 1571, in _check_signature raise SignatureError(\"Failed to verify signature\") SignatureError : 无法验证签名

我已经在互联网上寻找解决此错误的方法。我是 SAML 和 Okta 的新手。

我的假设是这与 xmlsec1 在我们的生产机器上的不同行为有关。但是版本是一样的。有很多依赖项,所以我不确定问题可能出在哪里。

有没有人遇到过这个错误?关于我可以尝试什么的任何想法?

python encryption cryptography saml-2.0 okta

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

iOS推送通知噩梦,规定应用ID和证书

嘿Apple开发人员,我正试图弄清楚iOS配置配置文件,证书和应用ID如何与推送通知配合使用.我以为我接近让这个工作,但也许不是.

当我运行我的应用程序并尝试注册推送通知时,我在控制台中收到此错误:

2012-06-26 17:52:29.380 Grouped[1732:707] badgeNumber: 0
2012-06-26 17:52:30.089 Grouped[1732:707] [INFO] device is ready
2012-06-26 17:52:32.654 Grouped[1732:707] JSLOG: Registering with APNS via the App Delegate
2012-06-26 17:52:32.655 Grouped[1732:707] Register success callback set
2012-06-26 17:52:32.661 Grouped[1732:707] didFailToRegisterForRemoteNotificationsWithError:Error 
Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for 
application" UserInfo=0x18a0c0 {NSLocalizedDescription=no valid 'aps-environment' 
entitlement string found for application}
Run Code Online (Sandbox Code Playgroud)

我现在做了几个小时的研究,无法弄清楚我做错了什么.我创建了一个与我的应用ID相关联的新配置文件.我可以在手机上看到它.

有任何想法吗?

奖金问题:为什么在推送通知中正确配置iOS应用程序这么复杂?

apple-push-notifications ios

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