FFMPEG音频视频开发:Windows下基于QT+FFMPEG设计的摄像头视频推流与视频录制保存软件(采用QT库读取摄像头数据和音频)

一、基本介绍

该软件里推流和视频保存使用FFMPEG库完成,视频和音频可以同步推流和录制,FFMPEG本身支持跨平台编译开发,QT也支持跨平台,在Android、Linux、windows都运行良好,只需要在不同平台编译对应的ffmpeg库即可,逻辑代码部分通用。

由于核心代码和在发表博客里的代码差不多这里就不再贴出代码。

FFMPEG编程使用参考的链接: 

(1) 使用NDKR19C编译最新的FFMPEG和X264给Android平台使用:https://blog.csdn.net/xiaolong1126626497/article/details/104734472

(2) linux下使用QT调用FFMPEG读取摄像头一帧数据显示到标签控件上

https://blog.csdn.net/xiaolong1126626497/article/details/104719820

(3) QT在Android设备上实现FFMPEG开发: 完成拍照、MP4视频录制、rtsp推流

https://blog.csdn.net/xiaolong1126626497/article/details/104760149

(4) QT获取Android、Linux、Windows系统上的摄像头数据帧与声卡音频通过FFMPEG编码为MP4存储(v1.0)

https://blog.csdn.net/xiaolong1126626497/article/details/104858499

(5) QT采集摄像头数据帧与声卡音频通过FFMPEG实时推流到RTMP服务器(v1.0)

https://blog.csdn.net/xiaolong1126626497/article/details/104866323

二、windows下软件运行效果

(1)主界面效果

FFMPEG音频视频开发:Windows下基于QT+FFMPEG设计的摄像头视频推流与视频录制保存软件(采用QT库读取摄像头数据和音频)_第1张图片

(2)保存视频到本地,设置录制间隔为10秒一个视频

FFMPEG音频视频开发:Windows下基于QT+FFMPEG设计的摄像头视频推流与视频录制保存软件(采用QT库读取摄像头数据和音频)_第2张图片

(3)推流视频到B站,必须保证RTMP地址是有效的,如果地址无效软件会自动退出

FFMPEG音频视频开发:Windows下基于QT+FFMPEG设计的摄像头视频推流与视频录制保存软件(采用QT库读取摄像头数据和音频)_第3张图片

 

三、核心代码

代码里除了FFMEG代码之外,主要的核心代码是摄像头颜色转换代码,因为不同的摄像头输出的原始格式不一样,代码里还需要做颜色转换。

void VideoReadThread_0::slotOnProbeFrame(const QVideoFrame &frame)
{
   QVideoFrame cloneFrame(frame);
   cloneFrame.map(QAbstractVideoBuffer::ReadOnly);
  // qDebug()<<"height:"<

 

xxx.pro工程文件代码:

QT       += core gui
QT       += multimediawidgets
QT       += xml
QT       += multimedia
QT       += network
QT       += widgets
QT       += serialport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    Color_conversion.cpp \
    audio_video_encode_0.cpp \
    ffmpeg_code.cpp \
    main.cpp \
    widget.cpp

HEADERS += \
    Color_conversion.h \
    audio_video_encode_0.h \
    config.h \
    ffmpeg_code.h \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RC_ICONS=log.ico

win32
{
    message('运行win32版本')
    INCLUDEPATH+=$$PWD/ffmpeg-win32-shared-dll/include
    LIBS+=$$PWD/ffmpeg-win32-shared-dll/bin/av*
    LIBS+=$$PWD/ffmpeg-win32-shared-dll/bin/sw*
    LIBS+=$$PWD/ffmpeg-win32-shared-dll/bin/pos*
}

RESOURCES += \
    image.qrc

四、软件和FFMEG库下载地址

第一版下载地址(没有支持输出JPEG和RGB24的摄像头):  https://download.csdn.net/download/xiaolong1126626497/12304729

第二版下载地址(支持输出JPEG、RGB24、YUYV、NV21、BGR24源数据的摄像头):https://download.csdn.net/download/xiaolong1126626497/12304904

 

下面公众号有全套QT\C\C++\单片机基础教程,欢迎关注:

FFMPEG音频视频开发:Windows下基于QT+FFMPEG设计的摄像头视频推流与视频录制保存软件(采用QT库读取摄像头数据和音频)_第4张图片

你可能感兴趣的:(QT,FFMPEG)