一些基础理论知识准备
致敬雷神
[总结]FFMPEG视音频编解码零基础学习方法
https://blog.csdn.net/leixiaohua1020/article/details/15811977
http://bbs.eeworld.com.cn/thread-506472-1-1.html

FFMPEG命令行相关
https://www.jianshu.com/p/4178472bea67
https://blog.csdn.net/MoeDisk/article/details/83140673
FFmpeg官网: http://www.ffmpeg.org

FFmpeg doc : http://www.ffmpeg.org/documentation.html

FFmpeg wiki : https://trac.ffmpeg.org/wik

推流延迟
https://www.cnblogs.com/tla001/p/7040344.html
总体框架图


音视频编码基本原理(理论部分)
https://blog.csdn.net/leixiaohua1020/article/details/28114081
视频压缩编码的方式:
视频压缩的主要依据:
数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。
变换编码:主要是将空间域描述的图像信号变换到频率域,然后对变换后的系数进行编码处理,,图像在空间上具有较强的相关性,变换到频率域可以实现去相关和能量集中.用DTC变换,可以得到DTC的系数矩阵,然后再根据人眼对频率的敏感程度,进行量化,DCT系数经过量化之后大部分经变为0,而只有很少一部分系数为非零值,此时只需将这些非0值进行压缩编码即可。
熵编码: 其基本原理是对信源中出现概率大的符号赋予短码,对于出现概率小的符号赋予长码,从而在统计上获得较短的平均码长。
运动估计和运动补偿:这两种方法主要利用帧间图像的在时间上的相关性,去减少数据量.
运动估计:一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。
运动补偿:通过计算最相似的图像块与该图像块之间的位置信息,可以得到一个运动矢量。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。这个相减过程叫运动补偿。
实际上就是在处理连续的帧时,依据当前帧跟前后帧的差值进行编码.节约计算量.
混合编码:就是结合前几种方式.
下图给出了混合编码(即变换编码+ 运动估计和运动补偿+ 熵编码)的模型。该模型普遍应用于MPEG1,MPEG2,H.264等标准中

音频编码基本原理
比特:bit(比特)是表示信息的最小单位,一个Byte由8 bits组成
比特数:“比特数”是这样一个单位,16比特就是指把波形的振幅划为2的16次方即65536个等级,根据模拟信号的轻响把它划分到某个等级中去,就可以用数字来表示了。
比特率:比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,每秒传送数据就越多,
量化:量化在数字信号处理领域,是指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。要采用四舍五入的方法将每一个采样值归并到某一个临近的整数,这样就可以用一定字长的二进制码来表示采样值,这种取有限个数值近似地表示某一连续变化信号的过程称为量化。
采样大小:量化过程中有多少个等级。常用16bit ,2的16次方。
压缩依据:冗余信息,强频对弱频的遮蔽效应。
压缩方法

对每一个音频声道中的音频采样信号,首先都要将它们映射到频域中,这种时域到频域的映射可通过子带滤波器实现。每个声道中的音频采样块首先要根据心理声学模型来计算掩蔽门限值, 然后由计算出的掩蔽门限值决定从公共比特池中分配给该声道的不同频率域中多少比特数,接着进行量化以及编码工作,最后将控制参数及辅助数据加入数据之中,产生编码后的数据流。

实践环节
win下先测试
在win下基于obs软件进行推流,推流到已经开通好流媒体服务的阿里云服务器上,再用vlc软件进行拉流。

具体软件操作参考阿里云的帮助文档
https://help.aliyun.com/document_detail/98333.html?spm=a2c4g.11186623.6.585.1bfb132eMde7ur
https://help.aliyun.com/document_detail/52142.html?spm=a2c4g.11186623.2.17.7a0a6812lk1bN2
https://help.aliyun.com/document_detail/45212.html?spm=a2c4g.11186623.2.15.7a0a6812lk1bN2

树莓派下
先上参考链接
https://blog.csdn.net/weixin_42534940/article/details/89302092
https://blog.csdn.net/zimengyu2020/article/details/106035285/
还参考了一些其他的,今天累了不整理了,网上挺多的

配置阿里云流媒体服务器
这里就略过了,可以看阿里云的帮助文档

在阿里云流媒体服务器的直播管理可以生成推流地址和播流地址

装好ffemp之后
FFmpeg采集树莓派USB摄像头
转码推送RTMP流(H264)
使用 h264_omx 硬件加速
ffmpeg -framerate 15 -video_size 640x480 -i /dev/video0 -vcodec h264_omx -f flv rtmp://push1.test.etonetech.com/app/stream?auth_key=1591201865-0-0-10c18d7a944c20464b370fa16ba31e13(这里为推流的地址)
这个地址有效时长默认是一个小时,阿里云服务器里可以调有效时长

成功命令记录

sudo apt-get install libx264-dev
wget http://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2
sudo tar jxvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1/
sudo ./configure --prefix=/opt/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-avresample --enable-libx264 --disable-yasm
sudo make
sudo make install
ffmpeg(测试是否安装好ffmpeg)
sudo apt-get install libsdl2-dev

最终调用指令
ffmpeg -framerate 15 -video_size 640x480 -i /dev/video0 -vcodec h264_omx -f flv rtmp://push1.test.etonetech.com/app/stream?auth_key=1591201865-0-0-10c18d7a944c20464b370fa16ba31e13

树莓派基于ffmpeg+阿里云流媒体服务器实现视频直播相关推荐

  1. 基于阿里云ECS服务器的k8s集群环境搭建

    前言:  网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个 操作手册,希望对想搭建k8s环境的盆友有所帮助. 声明:  ...

  2. 阿里云ECS服务器怎么安装宝塔面板?

    首先,宝塔Linux面板安装前的环境要求: 1.操作系统:全新系统(支持CentOS.Ubuntu.Debian.Fedora.Deepin) 2.确保是纯净的操作系统,没有安装过其它环境带的Apac ...

  3. 阿里云gpu服务器计算性能,gpu服务器价格(最新收费标准)

    阿里云GPU云服务器是基于GPU应用的计算服务,多适用于AI深度学习,视频处理,科学计算,图形可视化,等应用场景,型号有AMD S7150, Nvidia M40, Nvidia P100,Nvidi ...

  4. 阿里云ECS服务器跨账号迁移

    阿里云ECS服务器跨账号迁移 一.创建快照 1.点击实例id进入实例详情 2.选择快照选项卡,点击创建快照按钮 3.创建快照(系统盘+数据盘) 注意:点击云盘选项卡同样可以创建快照 4.查看快照列表, ...

  5. 用阿里云托管服务器怎么托管_云托管使企业更具竞争力的8个原因

    用阿里云托管服务器怎么托管 Organisations are flocking to cloud computing in greater numbers than ever before and ...

  6. 阿里云ECS服务器的wordpress博客域名购买、认证、备案、解析以及绑定

      详细介绍了阿里云ECS服务器域名购买.认证.备案.解析以及绑定到wordpress博客的过程.   此前我们讲过了阿里云ECS服务器基于Docker+WordPress搭建个人博客网站的主要步骤, ...

  7. 阿里云AMD服务器ECS实例g6a、c6a和r6a性能参数详解

    阿里云AMD服务器ECS计算型c6a.通用型g6a和内存型r6a实例,CPU采用2.6GHz主频的AMD EPYCTM ROME处理器,睿频3.3GHz,计算性能稳定,云服务器吧来详细说下阿里云ECS ...

  8. 阿里云AMD服务器计算型c6a和通用型g6a实例性能参数详解

    阿里云服务器AMD实例专场性能更强,基于x86架构自研神龙芯片,虚拟化损耗为0,活动包括AMD计算型c6a和通用型g6a,云服务器配置2核4G.4核8G.2核8G1年和4核16G,AMD服务器网来详细 ...

  9. 用阿里云托管服务器怎么托管_云托管就像圣诞老人的4种方式

    用阿里云托管服务器怎么托管 You might think it Christmas crackers to believe a beardy, old sleigh driver donning a ...

最新文章

  1. 为什么携程要做好持续交付?
  2. oracle 修改数据表结构常用sql
  3. Java栈内存溢出代码实例
  4. 虚拟主机选择php版本,虚拟主机的php用什么版本好
  5. python 日志输出变量_python中记录打印的log模块logging的用法实例
  6. Selenide太难?这样做简洁又高级,学会了工资翻一倍
  7. 解决 could not initialize proxy [com.xxx.xxx.xxx.entity.xxxInfo#1] - no Session
  8. 软考中级软件设计师备考经验分享
  9. 支付路由适配服务技术实现
  10. HDU 6319 Problem A. Ascending Rating (单调队列)
  11. 四个步骤告诉你如何进行渠道效果监测
  12. 手机无线如何共享给台式计算机,教你用手机做热点分享wifi给台式电脑用,不是用数据网络哦...
  13. 计算机系统期末考试感想
  14. DAMA数据管理知识体系指南之数据安全管理
  15. lucene6.6+拼音分词+ik分词实现
  16. 解决Ubuntu18.04下VMware开启虚拟网络编辑器无反应
  17. python animation 轨迹_在jupyter noteb之外显示动画
  18. [mov,mp4,m4a,3gp,3g2,mj2 @ 0000025ce897db40] moov atom not found
  19. visio的.vsd格式文件转换.eps格式文件的方法+Gsview裁剪EPS文件
  20. 网络层—网络层提供的两种服务

热门文章

  1. CF刷题——2500难度的几道题
  2. 「GXOI / GZOI 2019」逼死强迫症
  3. 小汪汪服务器不稳定,全速升级!《小汪汪》城镇建设有窍门
  4. Windows11下安装jdk
  5. 直播系统开发语音源码功能开发
  6. 8421码到5421码的转换_如何实现用283加法器实现8421码到5421码的转换
  7. 让Excel也像百度搜索框一样,录入时逐步提示
  8. 【屏蔽贴吧广告】贴吧广告屏蔽办法-解决方案 【普通用户 非会员】
  9. 高校教材管理系统mysql_高校教材管理系统的设计与实现
  10. 爱码物联|汽车制造行业,汽车零部件质量溯源解决方案