Qt+ffmpeg+avilib实现录屏录音的功能(包含合成)

步骤:

1.录屏

思路:子线程进行截屏的方式进行录制,再使用avilib将截取到的图片保存为视频文件。

参考文章:https://my.oschina.net/smartlliu/blog/209182

子线程录制通过上文中的ToAviThread来实现

void ToAviThread::run()
{
    QScreen *screen = QApplication::primaryScreen();
    QDesktopWidget* desktopWidget = QApplication::desktop();
    QRect screenRect = desktopWidget->screenGeometry();

    //设置保存路径
    out_fd = AVI_open_output_file(toAviFilePath.toLocal8Bit().data());
    if(out_fd == NULL)
    {
        qDebug()<<"open file erro";
    }

    //size根据自身情况来设置,这里是之前保存过的一个变量,其实和上面的screenRect是一样的
    QSize size = GNConfig::getInstance()->getMainSize();

    //avilib设置尺寸帧率和格式
    AVI_set_video(out_fd, size.width(), size.height(), 6, "mjpg");//设置视频文件的格式
    
    while(!stopFlag)
    {
        //pause逻辑
        sync.lock();
        if(is_pause)
        {
            pauseCond.wait(&sync); // in this plac

你可能感兴趣的:(qt)