在过去的几周里,我一直在努力使用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) 我正在开发一个应用程序,它有一个类似于 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) 我正在开发的软件具有以下结构:
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) 我正在开发一个项目,该项目涉及对图形进行一系列透视变换,用户最终将能够在它们中导航。我一直在开发一个转换原型,我一直在这段代码的帮助下开发该原型
基本上,我有 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)