如何从 ffmpeg 实时写入的视频文件中提取视频片段

How to extract a video snippet from a video file that is being written in by ffmpeg in realtime

目前我正在使用 youtube-dl (https://github.com/rg3/youtube-dl) 从 youtube 录制直播视频

我为此使用的命令:

youtube-dl --id -f 92 https://www.youtube.com/watch?v=VYlQJbsVs48

92 是我在执行获取格式的命令后得到的格式代码,它给了我这个列表:

format code  extension  resolution note
140          m4a        audio only DASH audio  144k , m4a_dash container, aac  @128k (48000Hz)
141          m4a        audio only DASH audio  272k , m4a_dash container, aac  @256k (48000Hz)
160          mp4        256x144    DASH video  124k , 15fps, video only
133          mp4        426x240    DASH video  258k , 30fps, video only
134          mp4        640x360    DASH video  616k , 30fps, video only
135          mp4        854x480    DASH video 1116k , 30fps, video only
136          mp4        1280x720   DASH video 2216k , 30fps, video only
137          mp4        1920x1080  DASH video 4141k , 30fps, video only
151          mp4        72p        HLS
132          mp4        240p       HLS
92           mp4        240p       HLS
93           mp4        360p       HLS
94           mp4        480p       HLS
95           mp4        720p       HLS
96           mp4        1080p      HLS  (best)

这正在创建一个名为 VYlQJbsVs48 的文件。mp4.part 当然会越来越大。

有没有办法从直播中提取视频片段或形成部分文件?或者也许有更好的方法?

我注意到,如果我在 youtube-dl 是 运行 时强制退出 iTerm2,它创建的 .part 文件不会包含任何索引信息(与 moov 原子有关不存在 在 mp4 文件中——这是关于帧数和其他东西的信息——我认为是元数据),所以这让我觉得我无法从文件中提取。

也许如果有一种方法可以让 youtube-dl 随时写入索引信息 或者我可以通过其他方式记录直播并获取视频片段它的录音。

我忘了说我是在 OSX Yosemite 上做的。我用自制软件和 youtoube-dl 安装了 FFMPEG

如果有解决方案,我很乐意尝试 UBUNTU。

如有任何帮助,我们将不胜感激。

谢谢。

亚历克斯

此命令将提取 5 秒的片段:

ffmpeg -i $(youtube-dl -f 92 -g https://www.youtube.com/watch?v=36YnV9STBqc) -c:v copy -c:a copy -t 00:00:05 snippet.mp4

使用-g选项,youtube-dl只输出视频流URL。

使用 ffmpeg 4.3、youtube-dl 2020.07.28 和 Youtube 广播直播进行测试。

参考:superuser