赞
踩
之前我们的视频转码项目中 是没有加入音频的
现在 需要加入音频 ,由于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 都能正常播放
20240303 更新 增加了视频转码的功能 利用libx264 进行CPU转码 效果如下:
流媒体服务器 SRS 还是 ZLMediaKit 都可以正常播放
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。