小编Nie*_*een的帖子

iOS:Airplay的音频和视频点按

我制作了一个视频播放器,用于分析当前正在播放的视频中的实时音频和视频轨道.视频存储在iOS设备上(在Apps Documents目录中).

一切正常.我使用MTAudioProcessingTap来获取所有音频样本并进行一些FFT,我只是通过从当前播放的CMTime(AVPlayer currentTime属性)中复制像素缓冲区来分析视频.正如我所说,这很好.

但现在我想支持Airplay.只是airplay本身并不困难,但是一旦Airplay被切换并且视频正在ATV播放,我的水龙头就会停止工作.不知何故,MTAudioProcessingTap将不会处理,像素缓冲区全部为空......我无法获取数据.

有没有办法获得这些数据?

为了获得像素缓冲区,我只需每隔几毫秒触发一个事件并检索播放器的currentTime.然后:

CVPixelBufferRef imageBuffer = [videoOutput copyPixelBufferForItemTime:time itemTimeForDisplay:nil];
CVPixelBufferLockBaseAddress(imageBuffer,0);

uint8_t *tempAddress = (uint8_t *) CVPixelBufferGetBaseAddress(imageBuffer);

size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);

CVPixelBufferUnlockBaseAddress(imageBuffer,0);
Run Code Online (Sandbox Code Playgroud)

tempAddress我的pixelbuffer 在哪里,videoOutput是一个实例AVPlayerItemVideoOutput.

对于音频,我使用:

AVMutableAudioMixInputParameters *inputParams = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:audioTrack];

// Create a processing tap for the input parameters
MTAudioProcessingTapCallbacks callbacks;

callbacks.version = kMTAudioProcessingTapCallbacksVersion_0;
callbacks.clientInfo = (__bridge void *)(self);
callbacks.init = init;
callbacks.prepare = prepare;
callbacks.process = process;
callbacks.unprepare = unprepare;
callbacks.finalize = finalize;

MTAudioProcessingTapRef tap;
OSStatus err …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios airplay

10
推荐指数
1
解决办法
960
查看次数

由于GEM_HOME的要求,启动Ruby应用程序非常慢

我目前正在研究一个ruby应用程序,但它运行得非常(非常!)慢..直到现在,我已经尝试了一些事情,我可以将其缩小到主要问题:Ruby正试图寻找它的需要在$ LOAD_PATH中的每个目录中.

基本上我正在观察的是,ruby正在查看大量文件,试图查看是否需要存在.如果它找不到它们,它将进入下一个目录.好消息是我可以看到这种情况发生在strace上.有很多这样的输出:

open("/boa_proj_build/nsteen/.gem/gems/i18n-0.7.0/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/thread_safe-0.3.5/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/tzinfo-1.2.2/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/minitest-5.8.2/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/activesupport-4.2.4/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/climate_control-0.0.3/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/cocaine-0.5.7/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/boa_proj_build/nsteen/.gem/gems/boa_loggable-0.2.2/lib/commander/help_formatters/base.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT …
Run Code Online (Sandbox Code Playgroud)

ruby

6
推荐指数
1
解决办法
218
查看次数

低通音频滤波器,在iOS上计算RMS

我正在为iPad上的应用程序工作,我想分析我正在播放的视频中的音频.使用MTAudioProcessingTap一切顺利.目前我有一些测试代码来测试/测量左右声道的音量.这一切都很顺利:

void process(MTAudioProcessingTapRef tap, CMItemCount numberFrames,
         MTAudioProcessingTapFlags flags, AudioBufferList *bufferListInOut,
         CMItemCount *numberFramesOut, MTAudioProcessingTapFlags *flagsOut)
{
    OSStatus err = MTAudioProcessingTapGetSourceAudio(tap, numberFrames, bufferListInOut,
                                                  flagsOut, NULL, numberFramesOut);

    if (err)
        NSLog(@"Error from GetSourceAudio: %ld", err);

    float leftVolume, rightVolume;

    for (CMItemCount i = 0; i < bufferListInOut->mNumberBuffers; i++)
    {
        AudioBuffer *pBuffer = &bufferListInOut->mBuffers[i];
        int cSamples = numberFrames * pBuffer->mNumberChannels;

        float *pData = (float *)pBuffer->mData;

        float rms = 0.0f;

        for (int j = 0; j < cSamples; j++)
        {
            rms += pData[j] * pData[j];

        }

        if …
Run Code Online (Sandbox Code Playgroud)

measurement core-audio ios lowpass-filter

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

MS Access 与带有两个 JOIN 的 MySQL 后端查询会导致查询过多

我有 2 个表,Customers并且Countries,像这样:

顾客:

    +----+------+-----+---------------+----------------+
    | ID | Name | ... | OfficeCountry | BillingCountry |
    +----+------+-----+---------------+----------------+
    | 1  | Bill | ... | 1             | 1              |
    | 2  | Joe  | ... | 2             | 1              |
    +----+------+-----+---------------+----------------+
Run Code Online (Sandbox Code Playgroud)

国家:

    +----+-------------+
    | ID | Name        |
    +----+-------------+
    | 1  | USA         |
    | 2  | Netherlands |
    +----+-------------+
Run Code Online (Sandbox Code Playgroud)

(我从表中删除了一些列,Customers只保留了该问题的一些相关列)这两列的目的是计费国家/地区和物理办公地点可能不同。该表中还有更多地址信息,但在本示例中被删除。

JOIN对这两个表进行查询,结果如下:

SELECT
    ID,
    some, 
    fields,
    Countries_1.Name AS OfficeCountryName,
    Countries_2.Name AS BillingCountryName
    
FROM …
Run Code Online (Sandbox Code Playgroud)

mysql sql ms-access odbc

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

iOS在播放视频时处理音频流

我正在尝试为iOS创建一个视频播放器,但有一些额外的音轨阅读.我一直在检查MPVideoPlayerController,以及AV基金会的AVPlayer,但它有点模糊.我想要做的是播放视频(来自本地.mp4),当电影播放时获取当前音频缓冲区/帧,所以我可以做一些计算和其他(不是视频/音频相关)动作在当前播放的音频上.这意味着视频应该继续播放,其音频轨道,但我也想要实时原始音频数据进行计算(例如:获取特定频率的振幅).

有没有人有这样做的例子或提示?当然,我查看了Apple的AV Foundation库文档,但对我来说还不够清楚.

audio video real-time avfoundation ios

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

iOS:如何从 AVAsset 或 AVAssetTrack 获取音频采样率

像这样加载 AVAsset 后:

AVAsset *asset = [AVAsset assetWithURL:url];
Run Code Online (Sandbox Code Playgroud)

我想知道音频轨道的采样率是多少。目前,我得到这样的音轨:

AVAssetTrack *audioTrack = [[asset tracksWithMediaCharacteristic:AVMediaCharacteristicAudible] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

哪个有效。但是我似乎找不到任何类型的属性,即使在使用 Google 之后也找不到 ;-) ,这给了我采样率。这如何正常工作?甚至有可能吗?(我开始越来越怀疑,因为谷歌搜索并没有给我很多信息......)

core-audio avfoundation ios

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

禁止重载PHP类构造函数

是否有可能 - 在PHP中 - "禁用"覆盖类的构造函数的功能?

只是为了使场景清晰:我有一个抽象类A,带有构造函数.这个构造函数对于类的工作是必不可少的.然后我有一些"兄弟姐妹","扩展"抽象类A.他们 - 有意识地 - 必须扩展该类,但我不希望他们触及构造函数.

我知道可以调用parent :: __ construct(),但这样我就不会强制使用该模式.在我的同事正在实施扩展我的抽象类的新类的情况下,我不希望没有混淆.当然,所有内容都记录在案,但是你们都知道在阅读内容时它会如何发展;-)

关于如何禁用构造函数的覆盖的任何想法?(在这种情况下,我会创建一个可以覆盖的抽象init()方法,但是我的"抽象构造函数"将对其进行调整).或者任何其他想法来实现这种想要的情况?

谢谢!NIEK

php oop overriding

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