Qt audio and video development 19-haikang sdk video storage

I. Introducción

Con respecto a la llamada al SDK de Haikang para el almacenamiento de video, el flujo de procesamiento de la arquitectura del marco general sigue la práctica anterior de los núcleos vlc, ffmpeg y mpv. Para el almacenamiento de tiempo, configure un temporizador para juzgar y cierre el almacenamiento de video original cuando llegue el momento. , Y luego inicie un nuevo almacenamiento de video, vuelva a ingresar el nuevo nombre de archivo, para que este fragmento de código se pueda copiar directamente y se pueda usar, todo lo que tiene que hacer es reemplazar dos líneas de código, una línea es la función NET_DVR_SaveRealData para iniciar el almacenamiento de video, Una línea es la función NET_DVR_StopSaveRealData para detener el almacenamiento de video. El manual de Hikvision SDK es muy detallado y el nombre es relativamente estándar. Básicamente, puede conocer el significado general a través del nombre de la función del método, sin necesidad de adivinar.

También hay una función de captura de pantalla en la misma categoría que la función de almacenamiento de video. Esto se implementa en el kernel vlc, kernel ffmpeg y kernel mpv. La captura de pantalla resume tres tipos. La primera es la captura de pantalla en el modo de manejo. Esto debe llamarse Funciones de SDK relacionadas para ejecutar, el tamaño de la resolución es la imagen original; el segundo es la captura de pantalla en el modo de devolución de llamada, esto ya tiene los datos de la imagen, simplemente tome la imagen correspondiente al video guardado en el formulario y el tamaño de la resolución es el original Figura: El tercer tipo es una captura de pantalla de la ventana, que es una captura de pantalla de la ventana de video actual, y la resolución es el tamaño de la ventana actual;

Con respecto a las tres funciones de abrir archivos de video, almacenamiento de video y guardar capturas de pantalla, preste especial atención a la ruta china. Por supuesto, si solo hay una ruta en inglés, entonces no se requiere procesamiento. Sin embargo, para los chinos, la ruta china es definitivamente inevitable. Hay dos tratamientos posibles, uno es que la ruta debe convertirse al formato utf8 y el otro es usar QTextCodec para especificar el formato gb2312 para volver a traducir la ruta para que surta efecto. Por ejemplo, bajo el kernel Haikang sdk, de lo contrario, la ruta puede no ser válida.

2. Características

  1. Admite la reproducción de secuencias de video y archivos MP4 locales.
  2. Admite dos modos: manejo y devolución de llamada.
  3. Imágenes de pantalla multiproceso, no atascadas en la interfaz principal.
  4. Vuelva a conectar la cámara web automáticamente.
  5. Puede establecer el tamaño del borde, el desplazamiento y el color del borde.
  6. Puede establecer si desea dibujar etiquetas OSD, es decir, etiquetar texto o imágenes y posiciones de etiquetas.
  7. Se pueden configurar dos posiciones y estilos de OSD.
  8. Puede establecer si guardar en archivo y nombre de archivo.
  9. Puede arrastrar archivos directamente al control de haikangwidget para reproducirlos.
  10. Admite transmisión de video h264 / h265.
  11. Puede pausar y reanudar la reproducción.
  12. Admite el almacenamiento de archivos de video individuales y el almacenamiento de tiempo de archivos de video.
  13. Personalice la barra flotante superior, envíe una notificación de señal de clic y establezca si desea habilitarla.
  14. Puede establecer el relleno de estiramiento de la pantalla o el relleno de igual proporción.
  15. Puede configurar la decodificación para que tenga prioridad de velocidad, prioridad de calidad y procesamiento de ecualización.
  16. Puede tomar capturas de pantalla (imágenes originales) y capturas de pantalla (formas de video) de videos.
  17. Los archivos de video se almacenan como archivos MP4.
  18. Admite control de enfoque, control de panorámica / inclinación.
  19. Funciones personalizables.

Tres, representaciones

Inserte la descripción de la imagen aquí

Cuatro sitios relacionados

  1. Sitio nacional: https://gitee.com/feiyangqingyun/QWidgetDemo
  2. Sitio internacional: https://github.com/feiyangqingyun/QWidgetDemo
  3. Página de inicio personal: https://blog.csdn.net/feiyangqingyun
  4. Página de inicio de Zhihu: https://www.zhihu.com/people/feiyangqingyun/
  5. Dirección de experiencia: https://blog.csdn.net/feiyangqingyun/article/details/97565652

Cinco, el código central

void HaiKangThread::initSave()
{
    if (!saveFile || !isRtsp) {
        return;
    }

    if (saveInterval == 0) {
        saveVideo(fileName);
    }
}

void HaiKangThread::saveVideo()
{
    if (!saveFile || !isRtsp) {
        return;
    }

    //重新设置文件名称
    QString dirName = QString("%1/%2").arg(savePath).arg(QDATE);
    newDir(dirName);
    fileName = QString("%1/%2_%3.mp4").arg(dirName).arg(fileFlag).arg(STRDATETIME);
    saveVideo(fileName);
}

void HaiKangThread::saveVideo(const QString &fileName)
{
    if (hand >= 0) {
        //转码以便支持中文路径
        QTextCodec *codec = QTextCodec::codecForName("gb2312");
        QByteArray data = codec->fromUnicode(fileName);

        //先停止再设置
        NET_DVR_StopSaveRealData(hand);
        NET_DVR_SaveRealData(hand, data.data());
    }
}

Supongo que te gusta

Origin blog.csdn.net/feiyangqingyun/article/details/108253660
Recomendado
Clasificación