大多数网站上的视频都使用渐进式下载,这意味着视频会下载到我的计算机上,并且易于跟踪。有很多扩展可以做到这一点,甚至在开发工具中这很容易做到。
在某些网站上,视频会流式传输。这意味着我们不只是下载1个文件,我们下载了很多小包。在开发工具中,可以跟踪这些包。我感兴趣的网站是:http://www.rtlxl.nl/#!/goede-tijden-slechte-tijden-10821/c8e2bff7-5a5c-45cb-be2b-4b3b3e866ffb。
- 包的扩展名为.TS。
- 可以通过复制请求的URL来保存包
- 我无法播放这些文件。
我一定做错了什么,或者我错过了什么。我想知道我做错了什么。我想为个人使用创建一个chrome扩展,它可以捕获所有包的URL。当我有所有网址时,我想将它们传递给php脚本,下载它们并使用ffmpeg将它们粘贴到mp4文件中。
请帮我拿到包裹。
更新:
Stream Video Dowloader Chrome扩展程序允许无缝下载m3u8流。安装并按下播放视频,它将识别流。
除了@aalhanane和@Micheal Espinola Jr
由于m3u8x仅适用于Windows。一旦确定了m3u8网址,您还可以使用Jdownloader2或VLC Media Player下载并连接流。
Jdownloader2:只需在Jdownloader打开时复制m3u8网址即可。它将识别Linkgrabber选项卡中的流。
VLC 3:
打开网络 - >粘贴m3u8 url - >选中标记Streamoutput - >选择设置。选择输出文件,容器,视频和音频编码。 (例如output.mp4,container:mpeg4,video:h264,audio:mp4a)Start Stream。它不会播放视频,而是对其进行编码,通过移动视频播放进度条来显示编码进度。
--->打开Firefox
--->打开视频页面
--->播放视频
单击--->打开菜单
单击--->打开Web开发人员工具
单击--->开发人员工具栏
单击--->网络
--->转到过滤网址--->写“M3u8” - >查找“m3u8”
--->复制网址“.m3u8”
========================
现在下载软件“m3u8x”----> https://tajaribsoft-en.blogspot.com/2016/06/m3u8x.html#downloadx12
--->打开软件“m3u8x”
--->粘贴网址“m3u8”
--->选择选项“One ... One”
--->单击“下载”
--->开始下载
========================
图像“打开菜单”===>
图像“开发人员工具栏”===>
图像“m3u8x”===>
您需要下载所有传输流(.ts)文件,并将它们连接成一个mpeg进行播放。像这样的传输流具有关联的播放列表文件(.m3u8),列出了您需要下载和连接的所有.ts文件。如果可用,可能会有一个辅助.m3u8播放列表,它将单独列出字幕蒸汽文件(.vtt)。
使用this帖子
F12
- > network
Filter URLs
tshttp://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000_454.ts
将被复制为
http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000
在LINK
下面插入下面的脚本
#!/bin/bash
# insert here urls
LINK=(
'http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000' # replace this with your url
)
mkdir my-videos
cd mkdir my-videos
CNT=0
for URL in ${LINK[@]}
do
# create folder for streaming media
CNT=$((CNT + 1))
mkdir $CNT
cd $CNT
(
DIR="${URL##*/}"
# download all videos
wget $URL'_'{0..1200}.ts
# link videos
echo $DIR'_'{0..1200}.ts | tr " " "\n" > tslist
while read line; do cat $line >> $CNT.mp4; done < tslist
rm -rf media* tslist
) &
cd ..
done
wait
编辑
在python中添加脚本 - 在Windows和Linux上运行
import urllib2
import os
import shutil
my_lessons = [
# http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000_454.ts
"http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000" # replace this with your url
]
lesson_dir = "my_vids"
try:
shutil.rmtree(lesson_dir)
except:
print "ok"
os.makedirs(lesson_dir)
os.chdir(lesson_dir)
for lesson, dwn_link in enumerate(my_lessons):
print ("downloading lesson %d.. " % (lesson), dwn_link)
file_name = '%d.mp4' % lesson
f = open(file_name, 'ab')
for x in range(0, 1200):
try:
rsp = urllib2.urlopen(dwn_link + "_%d.ts" % (x) )
except:
break
file_name = '%d.mp4' % lesson
print "downloading %d.ts" % (x)
f.write(rsp.read())
f.close()
print "done good luck!! ================== "
如果脚本失败,或者下载空文件,请尝试删除try包以查看失败的内容
我需要从具有会话保护内容和application/mp2t
MIME内容类型的电子学习门户下载HLS视频和音频流。
手动将所有身份验证标头复制到下载脚本中会非常麻烦。
但是在Video DownloadHelper Firefox扩展和Companion App的帮助下,任务变得更容易了。它允许通过点击按钮将具有TS块列表和实际视频和音频流的m3u8播放列表下载到mp4文件中,同时正确保留认证头。
由此产生的独立视频和音频文件可以是merged与ffmpeg:
ffmpeg -i video.mp4 -i audio.mp4 -acodec copy -vcodec copy video-and-audio.mp4
或与mp4box:
mp4box -add audio.mp4#audio video.mp4 -out video-and-audio.mp4
也试过Video DownloadHelper Chrome extension,但它对我不起作用。
在macOS上简单的youtube-dl示例(在命令行终端;也支持Windows):
$ youtube-dl -F https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8
[generic] f08e80da-bf1d-4e3d-8899-f0f6155f6efa: Requesting header
[generic] f08e80da-bf1d-4e3d-8899-f0f6155f6efa: Downloading m3u8 information
[info] Available formats for f08e80da-bf1d-4e3d-8899-f0f6155f6efa:
format code extension resolution note
audio-English_stereo mp4 audio only [en]
628 mp4 320x180 628k , avc1.42c00d, video only
928 mp4 480x270 928k , avc1.42c00d, video only
1728 mp4 640x360 1728k , avc1.42c00d, video only
2528 mp4 960x540 2528k , avc1.42c00d, video only
4928 mp4 1280x720 4928k , avc1.42c00d, video only
9728 mp4 1920x1080 9728k , avc1.42c00d, video only (best)
$ youtube-dl --format 628 https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8
...
frame= 5257 fps=193 q=-1.0 Lsize= 6746kB time=00:03:30.16 bitrate= 263.0kbits/s speed=7.73x
video:6679kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.998669%
[ffmpeg] Downloaded 6907810 bytes
[download] 100% of 6.59MiB in 00:29
$ open f08e80da-bf1d-4e3d-8899-f0f6155f6efa-f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mp4
在启动流式视频时,使用浏览器的开发人员工具>网络获取m3u8(HLS清单)URL。
将其中一个.ts视频文件复制并粘贴到Chrome中的新标签中。删除.ts文件的标识号(0,1,2,3等或它的任何数字)并将扩展名从“.ts”更改为“.mp4”。这应该像往常一样在浏览器中显示视频文件。
我对dina的答案做了一些修改,以避免在没有那么多的情况下尝试下载/组合1200个部分。
我还发现在chrome的网络选项卡中按waterfall
排序很有帮助。这将按文件下载的时间排序,因此当您流式传输视频时,最近下载的部分将位于顶部,从而可以轻松找到.ts
链接。
#!/bin/bash
# Name of the containing folder
GROUP="My Videos"
# Example link: https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE_0.ts
# Insert below as: https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE
# INSERT LINKS TO VIDEOS HERE
LINK=(
'Title for the video link'
'https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE'
'Title for the next video'
'https://vids.net/EECEADFE/EECEADFE/m3u8/EECEADFE/EECEADFE'
)
# ------------------------------------------------------------------------------
mkdir "$GROUP"
cd "$GROUP"
I=0
while [ $I -lt ${#LINK[@]} ]
do
# create folder for streaming media
TITLE=${LINK[$I]}
mkdir "$TITLE"
cd "$TITLE"
mkdir 'parts'
cd 'parts'
J=$((I + 1))
URL=${LINK[$J]}
I=$((I + 2))
DIR="${URL##*/}"
# download all streaming media parts
VID=-1
while [ $? -eq 0 ];
do
VID=$((VID + 1))
wget $URL'_'$VID.ts
done
# combine parts
COUNTER=0
while [ $COUNTER -lt $VID ]; do
echo $DIR'_'$COUNTER.ts | tr " " "\n" >> tslist
let COUNTER=COUNTER+1
done
while read line; do cat $line >> $TITLE.ts; done < tslist
rm -rf tslist
mv "$TITLE.ts" "../$TITLE.ts"
cd ..
rm -rf 'parts'
cd ..
done