码迷,mamicode.com
首页 > 其他好文 > 详细

抓取火神山建造的过程直播录像-制作短视频

时间:2020-01-30 17:30:18      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:间隔   ESS   use   武汉   port   整理   modified   处理过程   media   

当前(2020年春节)正值疫情爆发期间,全国上下万众一心抗击新型冠状病毒。比较引人注目的一件事便是,央视推出了一个火神山和雷神山医院的建造直播,全国上下“云监工”达到近5000万(截止2020-01-30数据)。看到这个视频,我就想能不能将这个直播画面保存下来,最后将画面只间隔选取,做个长镜头的短视频,展现出武汉版的"小汤山”医院从无到的建造过程,想想应该很振奋人心。

思路

首先获取直播流媒体的地址。然后编写一个脚本,自动从地址中下载当前时刻直播视频片段(ts文件格式),并保存到本地目录。再后,在系统中设置该脚本的自动执行的时间间隔,每隔一段时间就去抓一下视频。最后对抓取的视频片段,进行整理为短视频。

实现过程

获取直播流媒体的地址

直播平台网址是https://m.yangshipin.cn/static/2020/c0126.html. 地址获取参考https://stackoverflow.com/questions/22188332/download-ts-files-from-video-stream.

技术图片

最终我获得的网站是:

https://mobilelive-play.ysp.cctv.cn/ysp/9A7AA421CEB0886A30EC77031C6893C8BA69FD329B704F8485C4498BCB18D0A976A397AC2864A552B10CBB3D7FCB2EB15B28B5C966F9BF8A90A3A0D06F8283A8270DEA3E30AEA861DA7DA5B81DD258CB378E322826849FE5ACF1C50D9DE53424/2001891501_hd.m3u8?svrtime=1580313397&pid=600016618&cdn=5201&revoi=3C838DFA3FCF88B98661EE4397856546DB7D4CF4A3D8479119FCDC6A3B05B95ECF145CD6ED28C36E61E66363C2D64CEBC5740A34F6B3A6445A82247128154B8AD17728BBCA3C3665B6F9B781290428748A01DE8F9AC62E3253E550DCA8420E2CD268CC509C7709766553D9AC4D31C3701DCBAED8ADC3D051D1E989B105CF16AD33E743CDCDB4530FF9A017C2260FED1423FD480A7ADC2651

自动下载的脚本片段

在上述寻找地址的地方其实有提到一个自动下载工具(m3u8x),但这里作为学习,还是采用编写python脚本的方式来实现。脚本如下

 1 import requests
 2 
 3 url=https://mobilelive-play.ysp.cctv.cn/ysp/9A7AA421CEB0886A30EC77031C6893C8BA69FD329B704F8485C4498BCB18D0A976A397AC2864A552B10CBB3D7FCB2EB15B28B5C966F9BF8A90A3A0D06F8283A8270DEA3E30AEA861DA7DA5B81DD258CB378E322826849FE5ACF1C50D9DE53424/2001891501_hd.m3u8?svrtime=1580313397&pid=600016618&cdn=5201&revoi=3C838DFA3FCF88B98661EE4397856546DB7D4CF4A3D8479119FCDC6A3B05B95ECF145CD6ED28C36E61E66363C2D64CEBC5740A34F6B3A6445A82247128154B8AD17728BBCA3C3665B6F9B781290428748A01DE8F9AC62E3253E550DCA8420E2CD268CC509C7709766553D9AC4D31C3701DCBAED8ADC3D051D1E989B105CF16AD33E743CDCDB4530FF9A017C2260FED1423FD480A7ADC2651
 4 headers = {"Connection": "keep-alive", 
 5         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
 6  "Accept":"*/*" ,
 7  "Origin":"https://m.yangshipin.cn" ,
 8  "Sec-Fetch-Site":"cross-site" ,
 9  "Sec-Fetch-Mode":"cors" ,
10  "Referer":"https://m.yangshipin.cn/static/2020/c0126.html?from=groupmessage&isappinstalled=0" ,
11  "Accept-Encoding":"gzip, deflate, br" ,
12  "Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8" ,
13  "If-Modified-Since":"Thu, 30 Jan 2020 00:03:07 GMT" ,
14         }
15 
16 r1 = requests.get(url, stream=True,headers= headers)
17 
18 fnames= r1.text.split(\n)[-6::2]
19 print(fnames)
20 
21 import time
22 
23 def download_file(url):
24     local_filename = url.split(/)[-1]
25     # NOTE the stream=True parameter below
26     with requests.get(url, stream=True) as r:
27         r.raise_for_status()
28         gt = time.gmtime(time.time())
29         local_filename = {:4d}{:02d}{:02d}-{:02d}{:02d}.ts.format(gt.tm_year,gt.tm_mon, gt.tm_mday, gt.tm_hour, gt.tm_min)
30         with open(local_filename, wb) as f:
31             for chunk in r.iter_content(chunk_size=8192): 
32                 if chunk: # filter out keep-alive new chunks
33                     f.write(chunk)
34                     # f.flush()
35     return local_filename
36 
37 download_file(https://mobilelive-play.ysp.cctv.cn/ysp/A197B7700944C6A8FE1F3A4384EC3DB3EFB4915F1ABA51A9E765C3E4D5492FB5CCC9754A5383AE916B1234F6AA8B37809E669A611CECF72538ED2981F211834C740EC82B9CCEA4A04F7DE249E9C5BA5DEA370A03B75EB4BD78C9ADBCC3788E16/+fnames[-1])
38   
注意这里的头文件requests需要给一定header,否则网站认为你是程序访问的,不给你返回,头文件的信息可通过右击步骤一中的网站,copy as cUrl来得到。

脚本自动执行

本人机器上运行的为linux系统,采用cron来设置定时执行脚本比较方便,参考https://blog.csdn.net/katyusha1/article/details/78619549

cron中的设置为

0-59/5 * * * * python ~/Downloads/a.py.

制作短视频

ffmpeg是个优秀的视频处理命令行工具。处理过程中,视频抓取采用的是每5每种抓一次,只选视频片段的一帧,保存为图片,讲图片合成视频即可。 如下为处理的bash脚本。

1 i=1
2 for avi in `ls -rt 2020*.ts`
3 do
4 ffmpeg -i $avi -vframes 1 pics/$i.jpeg
5 i=$((i+1))
6 done
7 ffmpeg -i pics/%d.jpeg aa.mp4

最终的视频结果如(到目前为止)

与技术无关

直播造医院,充分表达面对疫情国人的决心,也展示了了不起的中国速度,为中国的土木人点赞。

抓取火神山建造的过程直播录像-制作短视频

标签:间隔   ESS   use   武汉   port   整理   modified   处理过程   media   

原文地址:https://www.cnblogs.com/zwlwf/p/12243074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!