小编Sol*_*dus的帖子

使用ffmpeg从网络摄像头捕获帧,从微观捕获音频并保存到文件

在过去的几周里,我一直在努力使用ffmpeg API,因为我找不到清晰的文档,而且我也发现很难搜索,因为我在网上找到的所有解决方案都不涉及c API而是ffmpeg.c命令行程序.我正在创建一个程序,需要从网络摄像头和音频中捕获视频,在屏幕上显示帧并将音频和帧记录到视频文件中.我也使用QT作为这个项目的框架.

我已经能够在屏幕上显示帧,甚至记录它们,但我的问题是音频和视频的记录.我决定创建一个更简单的测试程序,它只将流保存到文件而不显示屏幕上的帧,从ffmpeg文档中的remuxing.c示例开始.我的代码如下:

//This is the variables on the .h
AVOutputFormat *ofmt;
AVFormatContext *ifmt_ctx, *ofmt_ctx;

QString cDeviceName;
QString aDeviceName;

int audioStream, videoStream;
bool done;

//The .cpp
#include "cameratest.h"
#include <QtConcurrent/QtConcurrent>
#include <QDebug>

CameraTest::CameraTest(QString cDeviceName, QString aDeviceName, QObject *parent) :
    QObject(parent)
{
    done = false;
    this->cDeviceName = cDeviceName;
    this->aDeviceName = aDeviceName;
    av_register_all();
    avdevice_register_all();
}

void CameraTest::toggleDone() {
    done = !done;
}

int CameraTest::init() {
    ofmt = NULL;
    ifmt_ctx = NULL;
    ofmt_ctx = NULL;

    QString fullDName = cDeviceName.prepend("video=") + …
Run Code Online (Sandbox Code Playgroud)

c c++ video qt ffmpeg

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

QML MouseArea 将事件传播到按钮

我正在开发一个应用程序,它有一个类似于 Gmail/Inbox 应用程序菜单的菜单,适用于 Android。基本上,当您按下按钮打开菜单时,它会滑入视图。用户可以将其滑开或按下菜单上的按钮。对于滑动,我使用了SwipeArea来自kovrov的代码,稍作改动来检查按下和释放之间的速度 - 如果它太慢,我不认为它是滑动。我还在MouseArea, ie上将传播属性设置为 truepropagateComposedEvents: true并为 clicked 事件添加了以下代码:

onClicked: {
    mouse.accepted = false;
}
Run Code Online (Sandbox Code Playgroud)

现在我有以下代码:

Button {
    x: 10
    y: 50
    width: 200
    onClicked: {
        console.log("Button clicked!");
    }
}
SwipeArea {
    anchors.fill: parent

    onMove: {
        var newX = menu.x + x;
        if(newX <= menu.maxX && newX >= menu.minX) menu.x = newX;
    }
    onSwipe: {
        if(direction === "left" && timePassed <= menu.fastSwipe) root.hideMenu(menu.x, timePassed);
        else {
            var middle …
Run Code Online (Sandbox Code Playgroud)

qt android qml qtquick2

5
推荐指数
0
解决办法
1314
查看次数

拥有指向数据结构中元素的指针是否安全?(带有 QT 的 C++)

我正在开发的软件具有以下结构:

ClassA:
QHash<int, ClassB>

ClassB:
QHash<int, ClassC>

ClassC:
QMap<ID, QSharedPointer<ClassD> > (this is because I need to have the items ordered)
QHash<int, QSharedPointer<ClassD> > (this exists so I can access an item via id)
Run Code Online (Sandbox Code Playgroud)

我的问题是,将要编辑的指针指向数据结构内的元素是否安全。我在尝试调试时遇到错误,其中调试器无法在断点处停止,并且出现 SIGTRAP 错误,但我不确定它是否与内存问题有关。

举一个更好的例子,与我正在开发的软件相关,我有一个QHash<int, Take>代表视频列表的。用户一次只能编辑一个视频,所以我有一个指向当前视频的指针,它是 Hash 中的一个 Take。每个 Take 都有一堆可以编辑的参数,但最常见的是 Notes 的 QMap。做这样的事情安全吗?

Take *currentTake = &takes[currentTakeId];

----//---

currentTake->addNote(new Note());
currentTake->changeSomeParameter();
etc
Run Code Online (Sandbox Code Playgroud)

c++ memory qt pointers

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

透视变换仅适用于 svg 标签,不适用于 g 或图像

我正在开发一个项目,该项目涉及对图形进行一系列透视变换,用户最终将能够在它们中导航。我一直在开发一个转换原型,我一直在这段代码的帮助下开发该原型

基本上,我有 4 个点,使用 numberic.js 函数计算矩阵,然后将 matrix3D css3 转换应用于 svg 元素。

您可以在此处看到转换工作(点击转换按钮)(简化的 js 代码如下)。问题是,如果我将转换应用于 SVG 内部的 g 标签或图像,则转换会出现错误,我无法弄清楚为什么。

var margin = {top: 152.5, right: 200, bottom: 152.5, left: 200},
    width = 700 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;
var sourcePoints = [[0, 0], [width, 0], [width, height], [0, height]],
    targetPoints = [[225.201, 48.411], [1188.39, 185.159], [1869.12, 892.339], [217.525, 231.14]];

var svgTransform;

var transform = ["", "-webkit-", "-moz-", "-ms-", "-o-"].reduce(function(p, v) { 
        return v …
Run Code Online (Sandbox Code Playgroud)

html javascript css svg perspective

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

标签 统计

qt ×3

c++ ×2

android ×1

c ×1

css ×1

ffmpeg ×1

html ×1

javascript ×1

memory ×1

perspective ×1

pointers ×1

qml ×1

qtquick2 ×1

svg ×1

video ×1