ARTS 第十七周

发布于 August 17, 2020

TL;DR

  • 使用 FFmpeg 来实现直播推流
  • 56. Merge Intervals
  • 手动 attach chrome.debugger
  • 福乐欢欣的生活不到终结便无可传述 ...

Review

使用 FFmpeg 来实现直播推流

安装 FFmpeg 就不加赘述了。

模式 1:端到端

该模式下可以实现在一台机器上观看录屏机器的直播。

在录屏机器上启动 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

模式 2:Client-Server 模式

该模式下通过一台机器做直播流转发来作为服务器,其他客户端可连接至服务器来观看直播。

录屏:

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

Algorithm

56. Merge Intervals

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
};

Tip

手动 attach chrome.debugger

setTimeout(function(){debugger;}, 2000);

Reference

Share

福乐欢欣的生活不到终结便无可传述,正如美丽奇妙的造物只要还存于眼前,自身便是活生生的记录,唯有陷入危境或永久损毁,才会进入歌谣。 -- 精灵宝钻​​​​

E