If you need help on how to download a video that you can’t achieve to download with this method. Please leave a comment, contact me or talk to me on the chat !
You often want to save a video on your hard drive to be able to watch later on a travel when you don’t have access to internet. There is one way to do it on websites that uses HTTP Live Streaming HLS.
Quick method :
An easier method is to use directly the m3u8 file available by filtering “m3u8” in the developer Filter box.
Replace the m3u8 url in the following ffmpeg command :
ffmpeg -i "url" -c copy -bsf:a aac_adtstoasc 11.mp4
Long method :
Let’s take for example an episode of “LES RECETTES POMPETTES” http://noovo.ca/videos/les-recettes-pompettes/alex-nevsky when using the developper option (F12) on the Network section we can quickly see that small 10 seconds transport stream video files are received from the streaming server http://v10-a.akamaihd.net/hls/618566855001/201701/5300522320001/618566855001_5300522320001_s-4.ts?pubId=618566855001&videoId=5300467502001
If we analyse the link we see the extension .ts, that is the 10 seconds transport stream. The file name ends with 4 that’s the 4th 10 second transport stream.
If we look at the video duration on the website we see that it lasts 21 min we can than calculate the number of files to download 24*60/10 = 144 files.
With a small bash file we can loop trough the list of files and download them :
#!bin/sh #Download transport stream files from server server="http://v10-a.akamaihd.net/hls/618566855001/201701/5300522320001/618566855001_5300522320001_s-" extension=".ts" max=144 for i in `seq 1 $max` do wget "$server$i$extension" done
Last step and not the least is to concatenate all the files to output them into a single transport stream of 21 minutes. For that task we can use ffmpeg concatenate function (you can get ffmepg by using sudo apt-get ffmpeg command ) :
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.ts
or inline loop the current folder .ts files using :
ffmpeg -f concat -safe 0 -i <(for f in ./*.ts; do echo "file '$PWD/$f'"; done) -c copy output.ts
The -sage 0 above is not required if the paths are relative.
The -i mylist.txt is a file text that contains the list of input files to concatenate it should be with the following format :
# this is a comment file '/path/to/file1' file '/path/to/file2' file '/path/to/file3'
Finally the output.ts will be the name of your final file you should specify the output type .ts or another format .mkv
Source 2: https://trac.ffmpeg.org/wiki/Concatenate