推流指令
将本地文件以 RTMP 方式推送到服务器
- 格式
ffmpeg -i 数据源 -acodec copy -vcodec copy -f flv RTMP服务器地址
- 示例
ffmpeg -i ./"Agents of SHIELD Season 7 01.mkv" -acodec copy -vcodec copy -f flv rtmp://pili-publish.xxx.com/dev-test/05810586409?e=1602643284&token=XQG3bWdjVJ4VFQDDXnMwyp0312XC-lsKGl685yA8:pP0uSpckPM7uW7MBXbx8c7DhC60=
- 将本的的视频 Agents of SHIELD Season 7 01.mkv 文件以 flv 文件格式推送到 RTMP 服务器上
HLS 推流指令
以 hls 推流,服务器开放 http 接口为: http://192.168.8.73:9080/hls/record/{tag}/{tsName} ( ffmpeg 参数最后一个URL)。 ffmpeg 会向此地址发送两种包,一种是 m3u8 的*放播**列表,另一个则是 `TS 的视频流。请求URL示列如下:
m3u8*放播**列表 = http://192.168.8.73:9080/hls/record/8101430143-2/stream.m3u8
ts流url = http://192.168.8.73:3333/hls/record/8101430143-2/stream0.ts
- HLS 推流完整指令示例:
ffmpeg -i http://localhost:8080/video/8101430143-1 -vcodec copy -acodec aac -bf 0 -f hls -hls_list_size 10 -hls_wrap 5 -hls_time 5 -hls_base_url http://192.168.8.73:9080/hls/play/8101430143-1/ -method put http://192.168.8.73:9080/hls/record/8101430143-1/stream.m3u8
- 此示例中,数据来源来 http 接口地址。
- hls_list_size:设置*放播**列表保存的最多记录条数,设置为0则会保留所有分片信息,默认为5
- hls_wrap:设置多少片后开始覆盖,如果设置为0则不覆盖,默认为0。此功能能够避免在磁盘上存储过多的分片,而且能够限制写入磁盘的最多分片数量 。
- hls_time:设置每片的时间长度,默认为2,单位/秒
- hls_start_number:设置*放播**列表中的 sequence number 值,默认为0。即从0开始计数。
- hls_base_url:在*放播**列表中,记录 ts 文件的URL前缀。生成的 ts 会在此地址后面拼接成完整的请求地址。如: stream0.tx 会拼接到 hls_base_url 值的后面。
其它参数:
-i 要处理视频文件的路径
-acodec 音频处理的格式
-strict experimental 更标准的严格性
-ar 设置音频采样率
-ac 设置通道为2
-b:a 要将输出文件的音频比特率设置为96 kbit/s
-r 要强制输出文件的帧频为24 fps
-b:v 要将输出文件的视频比特率设置为5ee kbit/s。
-s 分辨率,传输的带宽根据分辨率来设定的,-b:v不能控制
-f 强制输出的视频格式
-hls_time 为切片的秒数
-hls_list_size 设置*放播**列表保存的最多条目,我这里设置为e会保存有所片信息,默认值为5
-hls_wrap 为切片的个数
-force_key_frames "expr:gte(t,n_forced*1)" 强制设置关键帧间隔时间,项改为5秒,则修改后的参数为: -force_key_frames "expr:gte(t,n_forced*5)"