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

ffmpeg, video, youtube, youtube-dl

Solution

This command will extract a 5 second snippet:

`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`

With the `-g` option, youtube-dl only outputs the video stream URL.

Tested with ffmpeg 4.3, youtube-dl 2020.07.28 and a Youtube radio live stream.

Reference: superuser

Problem

At the moment i am recording a LIVE stream video from youtube with youtube-dl (https://github.com/rg3/youtube-dl) The command i use for this: ``` youtube-dl --id -f 92 https://www.youtube.com/watch?v=VYlQJbsVs48 ``` 92 is a format code that i got after executing a command to get the formats, that gave me this list: ``` 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) ``` This is creating a file called VYlQJbsVs48.mp4.part that gets bigger and bigger of course. Is there a way to extract a video snippet from that live stream or form the part file? Or maybe there is a better way of doing this? What i have noticed is that if i force quit iTerm2 while youtube-dl is running the .part file it creates wont contain any index information (something to do with an moov atom not being present in the mp4 file - which is the information about the number of frames and other things - metadata i think), so it makes me think i cannot extract from the file. Maybe if there would be a way that youtube-dl can write the index information at all times or maybe another way that i can record the live stream and get video snippets while its recording. I forgot to mention i am doing this on OSX Yosemite. I have FFMPEG installed with homebrew and youtoube-dl I am more than happy to try stuff on UBUNTU if there is a solution. Any help would be greatly appreciated. Thank you. Alex

Original source