使用单个ffmpeg实例将多个RTSP流转码为HLS - 无法正常工作

时间:2017-11-12 15:54:58

标签: ffmpeg

我正在尝试使用ffmpeg的单个实例将多个RTSP流转换为HLS。我正在使用的命令是这样的:(我把它分成多行,这样更容易阅读)

我面临的问题是,当我查看生成的ts文件时,ffmpeg正在将相同的视频流(url1)写入m1和m2目录。我究竟做错了什么? url1和url2都有效。如果我将命令分解为两个不同的ffmpeg进程,它就可以正常工作。

感谢。

 /usr/local/bin/ffmpeg -i rtsp://url1 -fflags flush_packets 
 -max_delay 2 -flags -global_header -hls_time 2 -hls_list_size 3 
 -hls_segment_filename m1/video%03d.ts -hls_flags delete_segments 
 -vcodec copy -y m1/video1.m3u8 
 -i rtsp://url2 -fflags flush_packets 
 -max_delay 2 -flags -global_header -hls_time 2 -hls_list_size 3 
 -hls_segment_filename m2/video%03d.ts -hls_flags delete_segments 
 -vcodec copy -y m2/video2.m3u8

1 个答案:

答案 0 :(得分:1)

ffmpeg需要格式为

的语法
ffmpeg -i input1 -i input2 ... -i inputn output1 output2 ... outputn
设置-map选项的

表示输入到输出的路由。

所以,

 -i rtsp://url1 -i rtsp://url2
 -map 0 -fflags flush_packets -max_delay 2 -flags -global_header 
 -hls_time 2 -hls_list_size 3 -hls_segment_filename m1/video%03d.ts 
 -hls_flags delete_segments -vcodec copy -y m1/video1.m3u8
 -map 1 -fflags flush_packets -max_delay 2 -flags -global_header 
 -hls_time 2 -hls_list_size 3 -hls_segment_filename m2/video%03d.ts 
 -hls_flags delete_segments -vcodec copy -y m2/video1.m3u8