利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP

news/2025/2/12 22:48:02/

之前我们的视频转码项目中 是没有加入音频的 

现在 需要加入音频 ,由于RTMP只支持AAC的 音频流   而有的RTSP流的音频编码并不是AAC 

大多数都是G711编码  还分为G711A 和G711U  

之前用ffmpeg命令行可以直接 完成转码 并推送到RTMP

但是考虑到无法获取更详细的状态 

这次 利用代码实现  

很早之前 在海思平台上通过libfaac实现过 此功能 那会是将录制的视频音频保存到mp4文件 

默认的MP4文件也是不支持 G711编码的  

由于ffmpeg本身已经支持711 到aac的转换 (底层可能还是用的libfaac  没仔细研究过)

所以本次就通过 只依赖于FFMpeg 实现 没有任何一台与其他第三方库(网上有通过EasyAACEncoder实现的)  

可以 保存为文件 也可以 推流到RTMP

目前  只加了 音频  

视频后面慢慢加  

大多数时间都花在调试上 

目前有很多异常未处理 

但是功能已经没问题了 

完整代码 付费 提供 

支持文件到文件 

rtsp到文件 

文件到rtmp

rtsp到rtmp

RTSP流的编码信息 :

RTMP 推送的音频信息(视频还没加)

可以看到 输入RTSP的音频编码是G711A

RTMP的音频编码是AAC

ffplay播放效果如下

20240302 更新 今天加入了视频  早上11点来公司 调试调到18点才搞好。

目前的视频是未转码的 下一步需要做视频转码  

特别坑 一直以为是时间戳的问题   最后调试发现  是 packet的streamindex问题 把音频的packet 写到视频的packet里面了 

效果如下  图 左边是 rtsp流  右边是推送的rtmp流

经测试  rtmp推送到 ZLMediaKit的话 ffplay能正常播放  vlc播放不了 

推送到srs流媒体服务器的话  ffplay vlc 都能正常播放  


http://www.ppmy.cn/news/1368975.html

相关文章

2314576

☞ 通用计算机启动过程 1️⃣一个基础固件:BIOS 一个基础固件:BIOS→基本IO系统,它提供以下功能: 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检&#xff0c…

APS面试审核准备的常规问题

之前根据其他人的经验贴,准备了一些可能APS 面试审核可能会遇到的常规问题,现在简单分享一下。 一般会考虑到留学资金来源,在德国能不能顺利毕业;学的是什么专业内容之类的,判断去德国会不会好好学习;对德国…

Vue开发实例(七)Axios的安装与使用

说明: 如果只是在前端,axios常常需要结合mockjs使用,如果是前后端分离,就需要调用对应的接口,获取参数,传递参数;由于此文章只涉及前端,所以我们需要结合mockjs使用;由于…

repo介绍和安装

介绍 https://blog.devwiki.net/2023/11/27/Windows-repo.html 安装: https://blog.csdn.net/ysy950803/article/details/104188793

kafka文件存储机制和消费者

1.broker文件存储机制 去查看真正的存储文件: 在/opt/module/kafka/datas/ 路径下 kafka-run-class.sh kafka.tools.DumpLogSegments --files ./00000000000000000000.index 如果是6415那么这个会存储在563的log文件之中,因为介于6410和10090之间。 2.…

Docker技术概论(2):Docker环境的搭建

Docker技术概论(2) Docker环境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…

数据可视化原理-腾讯-热力图

在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…

vue3 开发记录

1.引入nprogress插件,显示未声明文件 无法找到模块“nprogress”的声明文件。 解决方法: vite-env.d.ts // 解决引入模块的报错提示 declare module "nprogress";2.在 .evn 文件中创建了自定义环境变量 VITE_APP_BASE_URL 但在项目中使用时出…