FFMPEG读取本地文件推流到RTMP服务器!

news2025/1/12 12:18:10

前言:

今天我们再来分享一个开源代码项目,这个代码项目是通过读取本地的TS文件,然后推流到RTMP服务器上面。

一、项目框图和运行效果:

1.1.项目的框图:

20cadb5ecd0a84cd63efd8cb65cc947a.png

1.2.运行效果:

3c0b6577d8e5890112bf402ad55fae99.png

二、模块的讲解:

2.1.初始化文件读取模块:

68cc92d93ca72b1e037c63d9c060b4e1.png

这一块代码的作用是打开本地ts文件,avformat_open_input的作用是打开本地流媒体文件,并获得ts流文件的基本信息。并利用avformat_find_stream_info检测文件信息,包括编码的宽和高。

2.2.初始化FFMPEG输出模块:

d65d1eef1863936db857dd1cdaa11765.png

输出模块使用avformat_alloc_output_context2的API进行初始化,并利用avio_open打开输出的IO文件流。

2.3.把输入模块的编解码参数拷贝到输出模块中

a2ba0d15972ddd782df7c8cbbbcaaeae.png

根据nb_streams来创建AVStream,并利用avcodec_parameters_copy把输入模块的编解码参数拷贝到output的avstream。此时output的avstream就有了输入模块的编解码参数。并利用avformat_write_header来初始化模块的头部。

2.4.av_read_frame读取ts流每一帧数据,并进行时间基转换,然后推流到RTMP服务器

a4a96fdeb9b04f4b71bb364d0cfeebc5.png

这一块的代码主要是利用av_read_frame的api读取每一帧音视频数据,然后利用av_packet_rescale_ts的api进行时间基转换。这个转换是把FFMPEG文件输入的时间基传输到output的时间基,视频转换的时间基是以帧率为单位。转换时间基完成之后就使用av_interleaved_write_frame把转换后的数据推流到RTMP服务器。

2.5.释放所有资源

43dedad91c989a3d73b7c3444d756ccd.png

当推流完成之后,就要释放资源。avformat_free_contex的api主要是释放AVFormatContext的资源,avio_close主要是释放AVIOContext的资源。av_packet_free释放的是packet资源。

三、完整的代码:

下面我们来看看一个完整的代码:

ba80a88e8e2e970498d2e1ec1dcba8c4.pngf37d1c51c311697b6dbc727035a7667a.pngb9f0ffa924de69ac35e3566cf9aa4447.png

最后:

对嵌入式音频开发感兴趣的朋友,可以加入星球来学习,课程内容说明如下:

ai识别加音视频推流实战项目进度,整个项目从7月份开始,前两部分的ai识别工程基本上已经讲解完了(还有人脸识别的工程代码会进行重新重构一篇),当然这里面等录制完了第三部分的音视频推流开发内容,还会对ai识别这部分做补充,比如说yolo或者ssd等算法模型的原理讲解,还有就是自己怎么去训练模型;目前已经开始在录制音视频推流开发的第三部分,已经录制了两个小节部分,第三部分的内容会多搞点,比如理论知识的讲解,然后再结合我们的推流代码工程,可以学习到mpp和ffmpeg,以及rtmp、srt等相关协议,还包括h264、h265的码流结构和编码结构等相关知识点,甚至还包括工作当中常遇见家的问题,比如说,音视频不同步的问题,同时最近又添加了最新的课程内容:

bda174ea830c829da8816bc77393abed.png

最新课程内容更新:

c022cbaba6e0d10a20edf65167984778.jpeg

可以直接扫码加入星球:

c47e6c72835c9d7951980c2048c2c179.jpeg

最后感谢大家的支持哈,加入了星球的朋友,记得加我微信:tu18879499804,我拉大家进解答群!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做了6年的软件测试了,想提升一下自己,学一下自动化测试,但是没有方向,怎么办?

前言 最后后台一位粉丝和我说做了6年的功能测试,在职场没有突破涨薪,陷入了一个迷茫的境地,想学自动化测试但是又不知道从哪里入手!!!今天静姐就带这位粉丝盘一盘自动化测试如何进阶?&#xff…

Python OpenCV 单目相机标定、坐标转换相关代码(包括鱼眼相机)

前言 本文不讲原理,只关注代码,有很多博客是讲原理的,但是代码最多到畸变矫正就结束了,实际上就是到 OpenCV 官方示例涉及的部分。   在官方示例中使用黑白棋盘格求解了相机的内外参和畸变系数,并对图像做了畸变矫正…

多态实现原理

学习Java的时候就已经学习了多态但是对于多态的原理还是不是很明白所以写下这篇文章来记录一下 如果后面有新的理解也继续添加到本页面 什么是多态 多态是面向对象编程里面的概念,一个接口的多种实现不同的实现方式,即为多态 这里的接口不应理解得太死板…

国考省考行测:关联词分析法,转折,总结,条件,递进,并列,各种关联词的典型词语和重点在哪

国考省考行测:关联词分析法,转折,总结,条件,递进,并列,各种关联词的典型词语和重点在哪 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论&a…

Twitter营销你需要做的细节

优化首页 1. 塑造品牌形象 品牌对于企业来说是一种无形的价值,所以在任何平台上都要注意加深品牌印象,在推特上也是一样的,比如一样的logo,让访问过你网站的人一眼就认出你来。这样,品牌的不断深入,才能让…

如何用mac搭建本地svn服务器(如何将mac变成版本管理服务器)

前言 一、搭建本地svn服务器 1.建立代码库 2.配置文件修改 3.启动本地svn服务 二、搭建过程中常见问题 如果Mac os升级到10.0以上,自带的svn不支持了怎么办 三、mac本地使用svn软件管理svn库 cornerstone3安装 四、使用Cornerstone会存在的问题 Mac打开应用提示已损…

硬件 RAID 与软件 RAID 之间的区别

独立磁盘冗余阵列 (RAID) 是一种将多个物理驱动器组合到一个单元中的虚拟磁盘技术。这是一种通过使用多个驱动器来提高存储介质的性能和可靠性的方法。驱动器配置为在磁盘之间划分数据以分配负载,或者复制数据以确保在磁盘发生故障后可以恢复…

Oauth2.0实现单点登录的原理流程,这次总该懂了!

单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。 1 什么是单点登录 1.1 多点登录 传统的多点登录系统中,…

正大国际期货:外盘期货恒指八大交易法则!

现在比较流行的期货并不算多,主流的就是恒指期货、美原油期货和黄金期货还有德指期货、道指、铜、天然气等等,恒指期货是最适合亚洲人投资的期货品种,现在国内很多投资人也会选择恒指期货入手。那么投资者要遵循哪些法则才可能在期货市场中获…

安装虚拟机以及linux(Centos 7)系统

背景:模拟部署系统至Linux服务器上并运行 下载VMware Workstation Pro并激活,自行百度下载。 打开虚拟机“创建新的虚拟机” 然后选择自定义,选择好后点击下一步 直接下一步 稍后安装操作系统 客户机操作系统选择Linux,版本选择…

element集成第三方icon图标

引言 集成阿里图标库 进入阿里icon,新建项目 选择一个自己喜欢的icon库,将里面的图标加入购物车中 因为没有批量导入购物车,所以一般情况下需要一个一个去点,太浪费时间,那么请在控制台输入以下代码,批量…

Spring 中 @Bean 注解流程分析

代码案例 现在 SpringBoot、SpringCloud 基本上都是通过 Bean 注解来将组件交给 Spring 管理,所以对 Bean 的流程应该要有所了解。 这里先定义一个 Blue 的实体类,如下: public class Blue { }然后定义一个入口类,通过 Bean 注…

rocketMq介绍和安装

rocketMq介绍和安装 Mq介绍 MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。 QQ和微信就是典型的MQ。 MQ的作用 主要有以下三个…

天翼物联2项成果成功入选“工信部2022年移动物联网应用典型案例库”

近日,工信部公布了2022年移动物联网应用典型案例征集活动入库案例名单,天翼物联牵头申报的“智慧农业——水肥一体化物联网项目”、“智能表计——抄表机器人物联网项目”成功入选。 本次典型应用案例征集由工业和信息化部组织开展,征集范围包…

产品结构设计的技巧和规则?

说到产品,产品结构设计在当今时代非常重要。它不仅感受到用户的青睐,而且影响销售,因此每个人都非常重视产品结构设计。那你知道产品结构设计的技巧和规则吗? 一、选材方面: 1.耐温等塑料制品的使用环境.耐寒.食品卫生.耐磨等; 2…

resnet(3)------卷积层与激活函数与池化层

文章目录一. 卷积层二. 激活函数1. Sigmoid函数2. tanh函数3. Relu函数三. 池化层一. 卷积层 上一篇文章我们讲到过可以通过控制卷积层的个数来提取图像的不同特征,但是事实上卷积是一种线性运算,更准确的说是一种线性加权运算,而线性运算是…

web课程设计网页规划与设计——惊奇漫画网站

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

基于蚁群优化算法的直流电机模糊PID控制(Matlab实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

基于jsp+mysql+ssm电影视频预约推荐系统-计算机毕业设计

项目介绍 本基于SSM框架的电影预约推荐系统主要包含了等系统用户管理、影视分类管理、电影预约信息管理、预约信息审核管理多个功能模块,系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统是独立的运行,不依附于其他系统,可移植&…

MaxSite CMS 代码问题漏洞(CVE-2022-25411)

0x01 漏洞介绍 MaxSite CMS是俄国MaxSite CMS开源项目的一款网站内容管理系统。Maxsite CMS存在代码问题漏洞,该漏洞允许攻击者可利用该漏洞通过精心制作的PHP文件执行任意代码。漏洞在/admin/options 处的远程代码执行 (RCE) 漏洞允许攻击者通过构建的 PHP 文件执行任意代码…