使用 FFmpeg 来实现直播推流
安装 FFmpeg 就不加赘述了。
该模式下可以实现在一台机器上观看录屏机器的直播。
在录屏机器上启动 FFmpeg。
Windows
c:/ffmpeg/bin/ffmpeg -f dshow -rtbufsize 1024M -framerate 30 -t 300 -i video="screen-capture-recorder" -c:v libx264 -crf 0 -preset ultrafast -f mpegts udp://ip:port
Mac
ffmpeg -f avfoundation -t 300 -i "1" -f mpegts udp://ip:port
❗ ℹ️
ip: 观看直播机器的 IP 地址或机器名
port:观看直播机器的端口
观看直播机器上可使用 FFmpeg 客户端或其他流媒体播放器(如 mpv)来观看直播。
mpv udp://127.0.0.1:port
# or
ffplay udp://127.0.0.1:port
该模式下通过一台机器做直播流转发来作为服务器,其他客户端可连接至服务器来观看直播。
录屏:
ffmpeg -f avfoundation -t 300 -i "1" -f mpegts udp://serverip:port
服务器转发:
ffmpeg i udp://127.0.0.1:port -f mpegts udp://serverip:port
客户端:
mpv udp://127.0.0.1:port
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
Example 1:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:
Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
Constraints:
1 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104
function merge(intervals: number[][]): number[][] {
if (intervals.length {'<='} 1) {
return intervals
}
intervals.sort((a, b) => {
if (a[0] < b[0]) {
return -1
}
if (a[0] > b[0]) {
return 1
}
return a[1] - b[1]
})
for (let i = 0; i < intervals.length - 1; i += 1) {
if (intervals[i][1] >= intervals[i + 1][0]) {
intervals.splice(i, 2, [intervals[i][0], Math.max(intervals[i + 1][1], intervals[i][1])])
i -= 1
}
}
return intervals
};
手动 attach chrome.debugger
setTimeout(function(){debugger;}, 2000);
福乐欢欣的生活不到终结便无可传述,正如美丽奇妙的造物只要还存于眼前,自身便是活生生的记录,唯有陷入危境或永久损毁,才会进入歌谣。 -- 精灵宝钻