目录

  随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧,用的不多的技巧可能一个星期就忘了。

  想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记,这也只是一时的,书不在手边的时候那些笔记就和没记一样,不是很方便。

  很多时候我们遇到了问题,一般情况下都是选择在搜索引擎检索相关内容,这样来的也更快一点,除非真的找不到才会去选择翻书。后来就想到了写博客,博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅,不用随身携带。

  同时由于写博客是对外的,既然是对外的就不能随便写,任何人都可以看到。经验对于我来说那就只是经验而已,公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。

  既然决定了要写博客,那就只能认真去写。不管写的好不好,尽力就行。千里之行始于足下,一步一个脚印,慢慢来 ,写的多了慢慢也会变好的。权当是记录自己的成长的一个过程,等到以后再往回看时,就会发现自己以前原来这么菜😂。

  本系列博客所述资料均来自互联网,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。

RTMP简介

  1. 是流媒体协议。
  2. RTMP协议是 Adobe 的私有协议,未完全公开。
  3. RTMP协议一般传输的是 flv,f4v 格式流。
  4. RTMP一般在 TCP 1个通道上传输命令和数据。

详细资料:https://cloud.tencent.com/developer/article/1038381

graph TB
    A(vedio)
    B(audio)
    A --> C(H.264)
    B --> D(AAC)
    C --> E(RTMP包)
    D --> E

nginx简介

xxxxxxxxxxxxxxxxxxxxxxxx

安装与使用

安装

sudo apt-get install nginx # 安装Nginx
sudo apt-get install libnginx-mod-rtmp  # 安装libnginx-mod-rtmp
sudo apt install ffmpeg --推流,拉流工具

配置nginx

vim /etc/nginx/nginx.conf  #打开配置文件
set mouse=a #支持鼠标操作
rtmp {
    server {
        listen 1935;  #rtmp server 缺省端口
        chunk_size 4096;   #d配置 RTMP 消息块 4096 字节

        # 点播配置
        application vod {
            play /home/haska/videos; #video path
        }

        # 直播流配置
        application live{
            live on;
        }
    }
}

nginx常用指令

sudo service  nginx reload   #不重启重新载入最新配置文件内容
sudo service  nginx stop     #停止服务
sudo service  nginx restart  #重启服务

使用ffmpeg推流

推流指令

  • 一次性推流
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://192.168.0.103:1935/live/test

该指令是推流一个文件,推结束后,就会停止,客户端拉流完成后也会结束。

  • 添加参数循环推流
ffmpeg -re -stream_loop 1 -i test.mp4 -c copy -f flv rtmp://192.168.0.103:1935/live/test
  • 使用脚本循环推流
for((;;)); do \
ffmpeg -re -i "H:\video.mp4" \
-c copy \
-f flv -y rtmp://10.100.1.4:1935/live/12345; \
sleep 1; \
done

指令详解

-re ffmpeg 默认打开文件以后,处理速度很快。为了让 ffmpeg 模拟本地设备,以流的速度处理,需要此选项。
-i 这是输入文件选项。
-c 这是推流的过程中,直接 copy 编码的 H264/AAC 流,避免解码、编码。
-f 这是输出格式,我们这里用 -f flv 标明需要通过 flv 格式推流。后面小节会单独讲解 AVC/AAC 如何打包 flv tag的。

使用VLC软件点播

点播

rtmp://192.168.0.103:1935/vod/test.mp4

测试过程中发现不能点播MP3文件,原因不明

直播

rtmp://192.168.0.103:1935/live/test

  那么本篇博客就到此结束了,这里只是记录了一些我个人的学习笔记,其中存在大量我自己的理解。