Youtube扒视频+ffmpeg批量将 png图像转换为avi、MP4以及将avi、MP4转换为单帧图像
程序员文章站
2022-05-28 15:18:28
...
Youtube扒视频+ffmpeg批量将 png图像转换为avi、MP4以及将avi、MP4转换为单帧图像
最近有科研需求,需要去youtube上扒视频来制作数据集,遇到了如何将avi及mp4转换为png 以及 将png图像转换为视频的操作。
选择的工具为ffmpeg,由于需要超大量的转换过程,因此还学习了一下如何写bat命令批量处理。
将如何youtube扒视频、批量转换的代码分享给大家,希望能用上
-
Youtube扒视频。
Python有一个库叫Pytube,该库用来扒视频非常的方便。可直接用pip安装
pip install pytube
然后我们可以登陆上youtube选择自己需要的视频,复制下链接。建立一个txt文档,存下这些链接如图所示:
接着用python写个脚本批量下载就行:
from pytube import YouTube
from urllib.error import HTTPError
from urllib import request
import os
import sys
proxies={
'http': 'socks5://127.0.0.1:1080',
'https': 'socks5://127.0.0.1:1080' //这里是需要好挂vpn的
}
videopath = '这里写存放txt文档的路径,挑选的时候可以分个类'
save_path = '这里存放视频保存的位置'
files = os.listdir(videopath)
for file in files:
if os.path.exists(save_path+file[:-4]) == False:
os.mkdir(save_path+file[:-4])
saving = save_path+file[:-4]+'//'
txts = open(videopath+file,'r')
lines = txts.readlines()
for line in lines:
url = line
tag = 22 //这里可以用print(video.streams)查看有哪些tag你可以使用,可以选择视频or音频
video = YouTube(url,proxies=proxies)
video.streams.get_by_itag(tag).download(saving)
print("file = {}, url={} have finished".format(file,url))
脚本文件可以根据自己的存储需求进行修改,这里就不过多赘述了
- 写bat命令用ffmpeg批量将视频转成帧:
@echo off
set a=195 //这里是视频的名字,我这里因为视频重命名为数字了,所以循环的时候用数字
set b=86 //这里是要存储帧文件夹的名字,我这里也变成数字了,可以自行修改
:loop
md 0%b% //创建文件夹
ffmpeg -i %a%.avi -r 60 %b%\img%%04d.png //这里可更改为绝对路径
set /a a+=1
set /a b+=1
if %a% == 239 goto end
goto loop
:end
- 写bat命令用ffmpeg批量将帧合成为视频 (这种方式是无损的,其实也有损,因为RGB转YUV会有损)
@echo off
set a=195 //存放所有帧的文件夹名字
:loop
ffmpeg -r 120 -i 绝对路径\%a%\%%08d.png -c:v libvpx-vp9 -lossless 1 放视频的绝对路径\%a%.avi //这里可*更改合成视频的名字
set /a a+=1
if %a% == 240 goto end //有多少个文件夹就合成几个视频
goto loop
:end
最后还有参考的一个批量修改文件夹名字的脚本:
set a=62 //想要改成的名字
setlocal EnableDelayedExpansion
FOR /f "tokens=*" %%i IN ('dir /a:d /b') DO (
set /A a+=1
ren "%%i" "0!a!" //前者是当前文件名,后者是要修改成为的名字
)
已经制作完一半数据集了 真的非常头疼了!!!!!!
上一篇: ipynb文件打开使用