ffmpeg 读取 rtmp流 编码成ts m3u8文件

开头:把文件转成m3u8 方法(原样拷贝)

ffmpeg -re -i /root/video.mpg -codec copy -map 0 -f segment -segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts


读取rtmp流 的方式:

ffmpeg -v verbose -i rtmp://192.168.1.10:1935/live/stream  -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 20 -profile:v main -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -start_number 1 -f segment -segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts



主要参数解释:



 
-hls_time n: 设置每片的长度,默认值为2。单位为秒


-hls_list_size n:设置m3u8文件播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5,一般用于直播流,点播文件建议设置成0,即全部保存。


-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量
-ac channels        set number of audio channels  

### Linux 下 FFmpeg HTTP 推教程 在 Linux 系统中,可以通过 FFmpeg 实现基于 HTTP 的推功能。以下是关于如何配置和执行此操作的具体说明。 #### 配置环境 为了实现 HTTP 推,通常需要设置一个支持 HLS (HTTP Live Streaming) 或其他 HTTP 协议的服务器来接收并分发媒体数据。常见的解决方案包括使用 Nginx 并安装 `nginx-rtmp-module` 插件[^3],或者直接利用 FFmpeg 提供的功能生 HLS 文件。 #### 命令示例 以下是一个典型的命令用于将 RTSP 输入源换并通过 HTTP 进行推: ```bash ffmpeg -re -i rtsp://input_stream_address \ -crf 23 -preset fast -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k \ -vcodec libx264 -r 25 -b:v 800k -s 1280x720 \ -f hls -hls_time 10 -hls_list_size 6 /path/to/output.m3u8 ``` 上述命令中的选项解释如下: - `-re`: 按照输入文件的实际速率读取数据。 - `-i`: 指定输入地址。 - `-crf`, `-preset`: 控制视频质量与编码速度[^1]。 - `-acodec`, `-ar`, `-ac`, `-b:a`: 设置音频编解码器及其属性。 - `-vcodec`, `-r`, `-b:v`, `-s`: 定义视频编解码器及相关参数。 - `-f hls`: 输出格式指定为 HLS。 - `-hls_time`: 设定每段 TS 文件的时间长度(单位秒)。 - `/path/to/output.m3u8`: 输出播放列表路径。 当目标不是本地存储而是远程 HTTP 地址时,则需调整最后一部分指向服务端 URL: ```bash ... -f flv http://your_http_server/live/stream_key ``` 这里假设服务器已准备好接受来自该链接的数据包上传请求。 #### 注意事项 - **带宽管理**: 考虑网络条件合理设定比特率 (`-b:v`) 和分辨率 (`-s`) 参数以优化用户体验同时减少丢帧现象发生几率。 - **安全性考量**: 对公开暴露的服务接口采取必要的身份验证措施防止未授权访问。 #### QT+FFmpeg 应用场景扩展 对于更复杂的项目需求比如开发 GUI 工具集以上程, 可参考 QT 加 FFMPEG 构建自定义推客户端的方法[^2], 结合 C++ 编程语言调用相应库函数完相同逻辑处理过程. ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值