天天看点

一键下载M3U8/HLS 并保存为TS文件

下载m3u8 并存成一个TS的脚本, 试过优酷的可以,但如果m3u8 里面有多种清晰度的TS片参杂,那就要再写一点逻辑来控制下载哪些啦:

#!/bin/bash

#howToUse: ./down_m3u8.sh url output.ts

#检测参数
if [ $# != 2 ] ; then 
echo "USAGE: $0 url output.ts" 
exit 1; 
fi 

input_m3u8=$1
output_ts=$2
temp_m3u8=temp.m3u8
n=1;

if echo "$input_m3u8" | grep -E '^http' >/dev/null ;then
    wget $input_m3u8 -O $temp_m3u8
else
    temp_m3u8=$input_m3u8
fi

echo "Download segments:"

#1. 这种方法简便,但没有下载"..."提示,容易误以为卡住了
#wget -q -i $temp_m3u8 -O $output_ts

#2. 这种方法麻烦,但有下载"..."提示
rm $output_ts
cat $temp_m3u8 | while read myline
do 
  if echo "$myline" | grep -E '^http' >/dev/null ;then
    echo -n "."
    wget -q "$myline" -O "$output_ts.t";
    cat "$output_ts.t" >> $output_ts
    let "n = $n + 1"
  fi
done
rm "$output_ts.t"
echo "Done"
           

继续阅读