GStreamer学习2.1----获取mp4中的图片

2024-06-11 06:28

本文主要是介绍GStreamer学习2.1----获取mp4中的图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里通过获取mp4中的图片例子来加深Gstreamer的理解,问问AI实现这样功能的命令,

得到

gst-launch-1.0 filesrc location=test.mp4 ! qtdemux ! queue ! h264parse ! avdec_h264 ! videoconvert ! jpegenc ! multifilesink location=output_image_%03d.jpg

在window环境上试了下,有问题

WARNING: erroneous pipeline: no element "avdec_h264"

修改为下面的命令后,可以保存图片了

gst-launch-1.0 filesrc location=test.mp4 ! decodebin ! jpegenc ! multifilesink location=output_image_%03d.jpg

接下来可以根据这个命令来生成对应的api代码了,目前AI生成的代码一般会有问题,需要修改,

#include <gst/gst.h>#define FILE_PATH "D:\\2024\\06\\Test\\test.mp4"static void pad_added_handler(GstElement* src, GstPad* new_pad, gpointer user_data) {GstElement* dest = GST_ELEMENT(user_data);GstPad* dest_pad = gst_element_get_static_pad(dest, "sink");g_print(" pad '%s' ,sink pad '%s'.\n", GST_PAD_NAME(new_pad), GST_PAD_NAME(dest_pad));if (gst_pad_is_linked(dest_pad)) {g_printerr("Destination pad is already linked.\n");goto exit;}if (gst_pad_link(new_pad, dest_pad) != GST_PAD_LINK_OK) {g_printerr("Failed to link pads.\n");goto exit;}exit:gst_object_unref(dest_pad);
}int main(int argc, char* argv[]) {GstElement* pipeline, * filesrc, * decodebin, * jpegenc, * app_sink;GstBus* bus;GstMessage* msg;GstStateChangeReturn ret;gst_init(&argc, &argv);pipeline = gst_pipeline_new("image-pipeline");filesrc = gst_element_factory_make("filesrc", "filesrc");decodebin = gst_element_factory_make("decodebin", "decodebin");jpegenc = gst_element_factory_make("jpegenc", "jpegenc");app_sink = gst_element_factory_make("multifilesink", "app_sink");if (!pipeline || !filesrc || !decodebin || !jpegenc || !app_sink) {g_printerr("Not all elements could be created.\n");return -1;}g_object_set(filesrc, "location", FILE_PATH, NULL);g_object_set(G_OBJECT(app_sink), "location", "output_image_%03d.jpg", NULL);gst_bin_add_many(GST_BIN(pipeline), filesrc, decodebin, jpegenc, app_sink, NULL);g_signal_connect(decodebin, "pad-added", G_CALLBACK(pad_added_handler), jpegenc);if (!gst_element_link(filesrc, decodebin) || !gst_element_link(jpegenc, app_sink)) {g_printerr("Elements could not be linked.\n");gst_object_unref(pipeline);return -1;}ret = gst_element_set_state(pipeline, GST_STATE_PLAYING);if (ret == GST_STATE_CHANGE_FAILURE) {g_printerr("Unable to set the pipeline to the playing state.\n");gst_object_unref(pipeline);return -1;}bus = gst_element_get_bus(pipeline);msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);if (msg != NULL)gst_message_unref(msg);gst_object_unref(bus);gst_element_set_state(pipeline, GST_STATE_NULL);gst_object_unref(pipeline);return 0;
}

在windows vs中,中文注释可能会导致程序问题,这个比较奇怪。

执行后,可以看到生成了很多图片

这篇关于GStreamer学习2.1----获取mp4中的图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050400

相关文章

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过