小编Use*_*222的帖子

(FFmpeg) VP9 Vaapi 从给定的官方 ffmpeg 示例编码到 .mp4 或 .webm 容器

我正在尝试实现 vp9 硬件加速编码过程。我遵循 ffmpeg 官方 github 的示例(此处 -> vaapi_encode.c)。

但给定的示例仅将 .yuv 文件保存到 .h264 文件,我想将帧保存到 .mp4 或 .webm 容器。并具有质量控制能力等。

我不是从文件中读取帧,而是从实时源中收集帧。当实时视频中有完整的 5 秒帧时,使用 vp9_vaapi 将这些帧编码为 5 秒 .mp4 文件。

我可以将实时直播中的所有 5 秒帧保存到 .mp4 或 .webm 文件中,但它们无法正确播放(更准确地说:继续加载,然后我打开)。

官方网站示例的结果:

在此输入图像描述

cpu编码vp9 .mp4文件结果:

在此输入图像描述

编辑:结果 在此输入图像描述

mp4 encoding ffmpeg hardware-acceleration vaapi

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

在 #define 宏中控制条件 Openmp

我想用一个#define标志来控制是否使用 openmp。由于#pragma不能不在 a 内#define,所以我尝试了

#define USE_OPENMP  // Toggle this on/off

#ifdef USE_OPENMP
    #define OMP_FOR(n)   __pragma("omp parallel for if(n>10)") 
#else
    #define OMP_FOR(n)   // do nothing        
#endif
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中我可以:

int size_of_the_loop = 11;
OMP_FOR(size_of_the_loop) // activate openmp if(n>10)
for(){
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我对#define相关的东西不熟悉,想知道是否可以实现这一目标?谢谢。

c++ parallel-processing openmp visual-studio

5
推荐指数
2
解决办法
3649
查看次数

C ++多线程性能比单线程代码慢

我正在学习在c ++中使用线程,
我用整数创建了一个很长的向量,并设置了另一个整数x。我想计算该整数与向量中整数之间的差。

但是,在我的实现中,使用两个线程的函数比使用单个线程的函数要慢。我想知道为什么是原因,以及如何正确实现线程以使其运行得更快。

这是代码:

#include <iostream>
#include <vector>
#include <thread>
#include <future>
#include <math.h>

using namespace std;


vector<int> vector_generator(int size) {
    vector<int> temp;
    for (int i = 0; i < size; i++) {
        temp.push_back(i);
    }
    return temp;
}

vector<int> dist_calculation(int center, vector<int> &input, int start, int end) {
    vector<int> temp;
    for (int i = start; i < end; i++) {
        temp.push_back(abs(center - input[i]));
    }
    return temp;
}


void multi_dist_calculation(int center, vector<int> &input) {
    int mid = input.size() / 2; …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

2
推荐指数
1
解决办法
178
查看次数