51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

使用 FFmpeg 推流

FFmpeg 推流会用到的参数 {#FFmpeg-推流会用到的参数}

-re 推流
-i 输入文件
-rtsp_transport tcp TCP 推流,UDP 推流缺省即可
-stream_loop -1 循环次数, -1 为无限循环
-c:v libx264 以 H.264 进行重新编码
-c:a aac 以 AAC 编码输出音频
-b:v 1m 输出视频码率
-b:a 320k 输出音频码率
-r 25 输出帧率
-ar 44100 输出音频采样率
-ac 2 输出音频声道数
-f flv 以 FLV 格式输出

推送流数据至 RTMP 服务器 {#推送流数据至-RTMP-服务器}

RTMP 的封装格式为 FLV,视频流格式为 H.264,音频流格式为 AAC

RTMP 链接说明

视频 {#视频}

如果原视频的格式匹配,可以直接推送原视频:

|-----------|-------------------------------------------------------------------------------------| | 1 | ffmpeg -re -i "video.mp4" -c copy -f flv "rtmp://127.0.0.1/stream/12345678" |

如果考虑到带宽不足等因素,可以对视频进行重新编码,但这样会消耗较多计算资源:

|-----------|---------------------------------------------------------------------------------------------------------------------------| | 1 | ffmpeg -re -i "video.mp4" -vcodec libx264 -acodec aac -b:v 1m -b:a 320k -f flv "rtmp://127.0.0.1/stream/12345678" |

效果

音频 {#音频}

由于大多数直播平台都不支持音频流,所以需要将音频流转换为视频流,这里使用 lavfi 生成一段白色的视频流,然后将音频流和视频流进行混合推流:

|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 | ffmpeg -f lavfi -re -i "color=s=1920x1080:r=25:c='#FFFFFF':d=5" -f flac -re -stream_loop -1 -i "audio.flac" -c:v libx264 -b:v 320k -c:a aac -b:a 320k -f flv "rtmp://127.0.0.1/stream/12345678" |

播放列表 {#播放列表}

FFmpeg 支持播放列表,只需要通过 -i 参数将播放列表文件输入。
创建播放列表文件 playlist.txt

|---------------|---------------------------------------------------------------| | 1 2 3 | file 'video1.mp4' file 'video2.mp4' file 'video3.mp4' |

在格式相同的情况下可以直接通过一条命令推流:

|-----------|----------------------------------------------------------------------------------------| | 1 | ffmpeg -re -i "playlist.txt" -c copy -f flv "rtmp://127.0.0.1/stream/12345678" |

网络视频流 {#网络视频流}

FFmpeg 的 -i 参数输入的可以是视频流或 m3u8 文件,这样可以实现转播网络视频流:

|-----------|----------------------------------------------------------------------------------------------------------------------| | 1 | ffmpeg -re -i "http://127.0.0.1/stream/12345678/play.m3u8" -c copy -f flv "rtmp://127.0.0.1/stream/12345678" |

赞(0)
未经允许不得转载:工具盒子 » 使用 FFmpeg 推流