用于为实时流创建 hls 分辨率的同步和并发

Synchronization and concurrency for creating hls resolutions for Live Streaming

是否有一个命令可以将 mp4 视频 + aac 转码为多种分辨率的 HLS?


我有一个转换服务器,我想直播多个分辨率,我必须同时创建所有分辨率,这个过程必须是并发的。
我提出了这个问题,因为我使用 运行 在 4 cmd 中分别使用以下代码来执行此过程,例如同时 创建视频的 4 个分辨率 :
1- 720p

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s hd720 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 720p/out.m3u8

2-480p

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s hd480 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 480p/out.m3u8

3-360p

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s nhd -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 360p/out.m3u8

4-200p

ffmpeg -i 123.mp4 -c:a aac -strict experimental -c:v libx264 -s cga -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 200p/out.m3u8

但是这样做有一些问题。
1- 每个分辨率的 .TS 部分不会与另一个分辨率部分同时创建(这个问题使得在切换分辨率时,玩家无法继续选择的分辨率,因为那个部分没有'尚未创建)。
2- 您有 运行 每个直播的线程。

这是我的答案,注意如果你想让每个分辨率的数字部分相同,你必须设置-hls_time

ffmpeg -re -i 123.mp4 
-c:a aac -c:v libx264 -s hd480 -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 480p/out.m3u8  
-c:a aac -c:v libx264 -s nhd -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 360p/out.m3u8 
-c:a aac -c:v libx264 -s cga -aspect 16:9 -f hls -hls_list_size 0 -hls_time 2 200p/out.m3u8