rtmp推送aac转码hls

博客指出在rtmp推送aac转码hls时,只能推送原始数据,若带上7个头字节,服务端会转码失败,强调了字节处理对转码的重要性。

rtmp推送aac转码hls,只能推送原始数据,不能带7个头字节,不然服务端会转码失败。

### 配置 RTMP 服务器实现流媒体推送 #### 使用 Tiangolo Nginx-RTMP 模块配置 RTMP 服务器 为了设置一个基本的 RTMP 流媒体服务,可以采用基于 NGINX 的扩展模块——Tiangolo Nginx-RTMP 来完成。安装完成后,在 `nginx.conf` 文件内加入如下配置: ```nginx rtmp { server { listen 1935; # 监听端口 chunk_size 4096; application live { live on; record off; # 不记录直播数据 # 推送至另一个 RTMP 服务器 (可选) push rtmp://other-server/live; } # 可以定义多个应用来处理不同的业务逻辑 application hls { live on; hls on; # 开启 HLS 支持 hls_path /tmp/hls; # 存储 HLS 输出文件的位置 hls_fragment 5s; # 设置 ts 片段长度 } } } ``` 上述配置创建了一个名为 "live" 的应用程序用于接收来自 FFmpeg 等工具发送过来的 RTMP 流,并允许通过 RTMP 协议访问该直播频道[^1]。 #### 利用 FFmpeg 进行视频推流 当 RTMP 服务器已经准备好之后,可以通过命令行工具 FFmpeg 将本地多媒体文件或是摄像头捕获的画面编码成适合网络传输的形式并上传给 RTMP 服务器。下面是一个简单的例子说明怎样把 MP4 文件转码为 FLV 并向指定 URL 发起推流请求: ```bash ffmpeg -re -i input.mp4 -c:v libx264 -preset ultrafast -maxrate 800k \ -bufsize 1200k -pix_fmt yuv420p -g 50 -c:a aac -b:a 96k \ -f flv rtmp://localhost:1935/live/stream_key ``` 这段脚本中的参数解释如下: - `-re`: 读取输入时按照原速率进行重采样; - `-i input.mp4`: 输入源为当前目录下的 `input.mp4` 文件; - 后续选项指定了输出格式、编解码器选择和其他一些优化措施; - 最后的部分则是目标 RTMP 地址加上自定义的应用名 (`live`) 和流密钥(`stream_key`) 。 #### 实现跨协议转换支持更多设备接入 除了传统的 RTMP 方式外,现代 Web 应用更倾向于使用 WebSocket 或 HTTP-based Streaming 如 HLS/WebRTC 。对于这种情况,SRS(Simple Realtime Server) 提供了一种解决方案,它不仅兼容 RTMP ,还能够轻松集成这两种新兴技术。这意味着即使客户端不直接支持 RTMP ,也可以借助 SRS 完成交互操作[^4]。 例如,如果想要让浏览器用户观看由 RTMP 推送上来的实况影像,则可以在 SRS 上启用相应的功能模块并将产生的 HLS 流分发出去;反之亦然 —— 把从 WebRTC 获取的内容转发回传统 RTMP 终端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值