当前位置: 首页 > news >正文

ffmpeg-avio实战:打开本地文件或者网络直播流dome

        使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客

        

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>  
#include <libavformat/avio.h>
#include <libavutil/file.h>
#include <libavutil/dict.h>
#include <stdio.h>
#include <libavutil/error.h>int main()
{const char* url = "/home/yth/ffmpeg_text/videos/elon.mp4";int err = -1;//1.av_register_all();avformat_network_init(); //初始化网络相关的功能,用于处理网络的流媒体printf("hello ffmpeg\n");AVFormatContext* pFormatCtx = NULL; //用于存储媒体文件或流的信息AVInputFormat* piFmt = NULL; //指向输入格式的指针,用于指定打开文件时的格式    printf("helloc, avformat_alloc_context\n");if((pFormatCtx = avformat_alloc_context()) == NULL) //为pFormatCtx分配内存{printf("fail avformat_alloc_context()\n");goto avformat_alloc_context_err;}pFormatCtx->probesize = 5000000;pFormatCtx->max_analyze_duration  = 5000000;//2.printf("打开媒体流\n");//打开本地文件或网络流直播流//替换为实际的rtsp地址 或在文件路径//rtsp地址: rtsp://127.0.0.1:8554/rtsp1//本地文件: ./ymx.mp4err = avformat_open_input(&pFormatCtx, url,  NULL, NULL);if(err < 0){char errbuf[AV_ERROR_MAX_STRING_SIZE];av_strerror(err, errbuf, sizeof(errbuf));fprintf(stderr,"fail avformat_open_input:%s\n",errbuf );goto avformat_open_input_err;}else{printf("open stream success\n"); //成功打开}//3.err = avformat_find_stream_info(pFormatCtx, NULL); //获取流的信息,填充pFormatCtxif(err < 0 ){printf("fail avformat_find_stream_info\n");goto avformat_find_stream_info_err;}else{printf("open stream success\n"); //获取流信息成功printf("有n路流 = %d\n", pFormatCtx->nb_streams);}avformat_find_stream_info_err:avformat_close_input(&pFormatCtx); //关闭输入文件或流
avformat_open_input_err:avformat_network_deinit(); //取消网络流库的初始化
avformat_alloc_context_err:return err;}

        如果是本地文件没有使用 av_register_all(); 打开媒体文件失败,打印失败原因。比如,如果上面没有调用函数av_register_all,则会打印“XXX failed!:Invaliddata found when processing input”.   

        这是代码的实现,我们来执行一下,配合其他工具看看打开的视频流消息是不是对的。

        两路流是正确的。

 

相关文章:

ffmpeg-avio实战:打开本地文件或者网络直播流dome

使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客 #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> #include <libavutil/file.h> #include &l…...

css预处理器sass

在前端开发的世界中&#xff0c;CSS 是构建网页样式的基础。然而&#xff0c;随着项目规模的增大&#xff0c;纯 CSS 的编写和维护往往会变得复杂而繁琐。为了解决这些痛点&#xff0c;Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;应运而生。Sass 是一种 C…...

VulnHub-Acid(1/100)

参考链接&#xff1a; ​​​​​​​【VulnHub】Acid靶场复盘-CSDN博客 靶场渗透&#xff08;二&#xff09;——Acid渗透_ambassador 靶场渗透-CSDN博客 网络安全从0到0.5之Acid靶机实战渗透测试 | CN-SEC 中文网 Vulnhub靶场渗透练习(四) Acid - 紅人 - 博客园 红日团队…...

MATLAB语言的正则表达式

MATLAB 中的正则表达式使用指南 引言 在数据处理和文本分析中&#xff0c;正则表达式是一种强大而灵活的工具。MATLAB 作为一种广泛应用于科学计算和数据分析的编程语言&#xff0c;提供了对正则表达式的支持&#xff0c;使得用户可以方便地进行字符串匹配与处理。本文将深入…...

通过 route 或 ip route 管理Linux主机路由

目录 一&#xff1a;route 使用说明1、查看路由信息2、删除指定路由3、增加指定路由 二&#xff1a;ip route 使用说明1、查看主机路由2、新增主机路由3、删除主机路由 通过route 或者ip route修改Linux主机路由后属于临时生效&#xff0c;系统重启后就恢复默认值了&#xff0c…...

MYSQL--------SQL 注入简介MySQL SQL Mode 简介

SQL 注入简介 定义&#xff1a;SQL 注入是一种常见的安全漏洞&#xff0c;攻击者通过在输入中插入恶意的 SQL 语句&#xff0c;利用应用程序中未正确处理的输入数据&#xff0c;来改变 SQL 查询的逻辑&#xff0c;从而执行非预期的操作&#xff0c;如绕过身份验证、获取未授权…...

第6章——HTTP首部

第六章——HTTP首部 HTTP报文结构 ​ 都必有报文首部 HTTP请求报文 HTTP响应报文 HTTP首部字段 ###传递重要信息 首部字段结构 ​ 首部字段名&#xff1a;字段值&#xff08;&#xff0c;字段值&#xff0c;字段值&#xff09; 首部字段类型 ​ 通用首部字段 请求首部字…...

多行输入模式(dquote> 提示符)double quote(双引号)

文章目录 1、引号不匹配具体原因解决办法如何避免此问题 2、double quote&#xff08;双引号&#xff09;出现原因解决办法预防措施 ~/Downloads/productqualification-develop git:[main] git commit -m "漏添加到暂存区的代码“ dgqdgqdeMac-mini productqualification-…...

【什么是MVCC?】

MVCC&#xff08;Multi - Version Concurrency Control&#xff09;即多版本并发控制。 一、背景和概念 在数据库系统中&#xff0c;并发控制是非常重要的。当多个事务同时访问和修改数据时&#xff0c;需要一种机制来确保数据的一致性和正确性。MVCC 是一种并发控制的技术&a…...

HarmonyOS开发:粒子动画应用实战

目录 引言 粒子动画技术概述 关于粒子动画 粒子发射器的实现 设置粒子颜色 关于粒子的生命周期 粒子扰动场的设置 粒子动画的简单实现 最后 引言 做应用开发的小伙伴想必都清楚动画是必备技能&#xff0c;尤其是在移动应用开发中的动画使用频率是非常高的。而粒子动画…...

数据库课设——网上花店销售管理系统(上)

声明&#xff1a;此次课设为本人专业课课设报告内容&#xff0c;仅供参考&#xff0c;不要照搬 1 问题的提出 随着互联网发展与电子商务普及&#xff0c;网上花店兴起&#xff0c;其突破地域限制、提供便捷购物体验且市场呈快速增长趋势。该系统需具备多方面功能以满足花店运营…...

用于AI的 数据存储其获取介绍

用于 AI 的数据存储和获取方法依赖于系统架构、数据类型&#xff08;结构化、非结构化、时序数据、嵌入向量等&#xff09;以及使用场景&#xff08;训练数据存储、实时推断、历史数据分析等&#xff09;。以下是主要存储方式的分类和简介&#xff1a; 1. 文件存储 介绍&…...

flutter 专题二十四 Flutter性能优化在携程酒店的实践

Flutter性能优化在携程酒店的实践 一 、前言 携程酒店业务使用Flutter技术开发的时间快接近两年&#xff0c;这期间有列表页、详情页、相册页等页面使用了Flutter技术栈进行了跨平台整合&#xff0c;大大提高了研发效率。在开发过程中&#xff0c;也遇到了一些性能相关问题和…...

L28.【LeetCode笔记】移动零(三种解法)

目录 1.题目 2.向前覆盖法 分析 代码 提交结果 3.优解:双指针 代码 提交结果 4.其他不符合题意的方法:使用队列 代码 提交结果 1.题目 https://leetcode.cn/problems/move-zeroes/description/ 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾…...

jenkins入门10--自动化构建

build periodically&#xff1a;设定类似cron周期性时间触发构建 * * * * * (五颗星&#xff0c;中间用空格隔开&#xff09; 第一颗表示分钟&#xff0c;取值0~59 第二颗表示小时&#xff0c;取值0~23 第三颗表示一个月的第几天&#xff0c;取值1~31 第四颗表示第几月&#xf…...

el-table拖拽表格

1、拖拽插件安装 npm i -S vuedraggable // vuedraggable依赖Sortable.js&#xff0c;我们可以直接引入Sortable使用Sortable的特性。 // vuedraggable是Sortable的一种加强&#xff0c;实现组件化的思想&#xff0c;可以结合Vue&#xff0c;使用起来更方便。 2、引入拖拽函数…...

如何轻松反转C# List<T>中的元素顺序

在C#中&#xff0c;有多种方法可以反转 List<T> 的元素顺序。以下是几种常见的方法&#xff1a; 方法一&#xff1a;使用 List<T>.Reverse 方法 List<T> 类提供了一个内置的 Reverse 方法&#xff0c;可以就地反转列表中的元素顺序。 using System; using…...

Transformer中Self-Attention以及Multi-Head Attention模块详解(附pytorch实现)

写在前面 最近在项目中需要使用Transformer模型来处理图像任务&#xff0c;所以稍微补充一下这部分的知识&#xff0c;本篇主要了解一下Self-Attention以及Multi-Head Attention模块。 原论文链接&#xff1a;https://arxiv.org/pdf/1706.03762 原文代码&#xff1a;tensor2…...

在Nvidia Jetson ADX Orin中使用TensorRT-LLM运行llama3-8b

目录 背景&#xff1a;步骤 1.获取模型权重第 2 步&#xff1a;准备第 3 步&#xff1a;构建 TensorRT-LLM 引擎 背景&#xff1a; 大型语言模型 &#xff08;LLM&#xff09; 推理的关键瓶颈在于 GPU 内存资源短缺。因此&#xff0c;各种加速框架主要强调减少峰值 GPU 内存使…...

六十一:HTTP/2的问题及HTTP/3的意义

随着互联网的快速发展&#xff0c;网络协议的升级成为优化用户体验和提升网络效率的重要手段。HTTP/2 于 2015 年发布&#xff0c;标志着超文本传输协议的重大改进。然而&#xff0c;尽管 HTTP/2 带来了许多新特性&#xff0c;它也存在一定的问题。在此背景下&#xff0c;HTTP/…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...