我有一个代码可以使用 m3u8 容器将 UDP 直播频道编码为 HLS 流。我的问题是,有没有办法简化多个频道的制作,并确保每个频道的质量与第一个频道相同?
c:\tmp\ffmpeg -i udp://239.255.0.109:1234 -acodec aac -b:a 96k -ac 2 -vcodec libx264 -g 60 -sc_threshold 0 -f hls -hls_list_size 10 -hls_time 10 -hls_flags delete_segments /tmp/stream/espn2_hls.m3u8
以上方法有效 - 我可以只执行以下操作并更改 IP 和 m3u8 流名称吗?我觉得这应该可行,但不完全确定语法是否 100%,是否可以在某些地方简化,或者我是否需要提高工作站的处理能力?
-i udp://239.255.0.108:1234 -acodec aac -b:a 96k -ac 2 -vcodec libx264 -g 60 -sc_threshold 0 -f hls -hls_list_size 10 -hls_time 10 -hls_flags delete_segments /tmp/stream/espn_hls.m3u8 \
-i udp://239.255.0.111:1234 -acodec aac -b:a 96k -ac 2 -vcodec libx264 -g 60 -sc_threshold 0 -f hls -hls_list_size 10 -hls_time 10 -hls_flags delete_segments /tmp/stream/nfl_hls.m3u8 \
-i udp://239.255.0.113:1234 -acodec aac -b:a 96k -ac 2 -vcodec libx264 -g 60 -sc_threshold 0 -f hls -hls_list_size 10 -hls_time 10 -hls_flags delete_segments /tmp/stream/wbff_hls.m3u8
答案1
接近但不完全。
如果命令中有多个输入,则每个输出的流仍需要映射。如果没有用户映射,ffmpeg 将自行做出选择,并且所有输出的选择都相同。
为每个输出添加地图。
-i udp://239.255.0.108:1234 -map 0:v -map 0:a ... /tmp/stream/espn_hls.m3u8 \
-i udp://239.255.0.111:1234 -map 1:v -map 1:a ... /tmp/stream/nfl_hls.m3u8 \
-i udp://239.255.0.113:1234 -map 2:v -map 2:a ... /tmp/stream/wbff_hls.m3u8