AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理泰国仓储,本土仓发货2-3元/单
指纹浏览器,就用AdsPower谷歌/FB/Bing/Yahoo代理商开户7200W全球动态不重复住宅IP代理全球优质流量,选TrafficStars
出售Facebook,友缘号,FB广告号,insFB/TT/KW 加白开户ADPLEXITY + ADVERTCN比Adplexity还好用的Spy工具
广
FB/Google/TK海外多媒体极速下户
BINOM TRACKER 60% OFF!MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量
百度国际MediaGo,独家原生流量虚拟信用卡+独立站收款行业首创新型指纹Cloak, 谷歌奇效!Kookeey⚡️100%独享⚡️原生住宅IP
⚡IPFoxy住宅代理全场88折⚡全球虚拟卡, 支持U充值免账户投放 FB 广告(送项目)2024做什么 - Media buy 项目库
免费黑五教程(持续更新、欢迎交流)Facebook 批量上广告Bridgeway - 联盟营销网络IPCola 全新住宅代理 ⚡️ 免费试用
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户Adsterra 的CPA/CPM/CPC 网站流量在线注册美国/英国/香港等海外公司
EU KETO/CBD - JumbleberryFB二三解1元/个9Proxy ⚡️ $0.04/IP, 无限带宽 cloak斗篷/ss/nutra/cpa/Dating
E.PN 虚拟卡Asocks代理服务器$3/GB高薪诚求实力FB投手(独立站)《全新虚拟卡+全球收付款》
广告位出租全球低价纯净住宅/移动IP-免费试用广告代投, 东南亚物流, 虚拟信用卡VMLogin指纹浏览器+多账号防关联
查看: 9791|回复: 7

爬虫生成视频字幕然后youtube

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-9-8 13:22:29 | 显示全部楼层 |阅读模式
adsterra
本帖最后由 xiaoxue 于 2019-3-4 20:50 编辑

#爬虫调用test.py 生成视频

  1. # -*- coding: utf-8 -*-
  2. from aip import AipSpeech
  3. import os
  4. import sys
  5. from PIL import Image, ImageDraw,ImageFont

  6. """ 你的 APPID AK SK """
  7. APP_ID = 'XXX'
  8. API_KEY = 'XXX'
  9. SECRET_KEY = 'XXX'
  10. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
  11. def tupiandaxiao_old(file):
  12.         try:
  13.                 im = Image.open(file)
  14.                 # 图片的宽度和高度
  15.                 img_size = im.size
  16.                 '''
  17.                 裁剪:传入一个元组作为参数
  18.                 元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)
  19.                 '''
  20.                 # 截取图片中一块宽和高都是250的
  21.                 print(file+"图片宽度和高度分别是{}".format(img_size))
  22.                 im = im.resize((1280, 720),Image.ANTIALIAS)
  23.                 im.save(file)
  24.         except IOError:
  25.                 return False


  26. def tupiandaxiao(file):
  27.         try:
  28.                 base_img = Image.new("RGB",(1280,720),"#000000")
  29.                 (w, h) =  base_img.size


  30.                 tmp_img = Image.open(file)
  31.                 if tmp_img.size[1] < 720:
  32.                         tmp_img = tmp_img.resize((720, 720),Image.ANTIALIAS)

  33.                 (tmpw, tmph) = tmp_img.size

  34.                 neww = (w/2) - (tmpw/2)
  35.                 newh = (h/2) - (tmph/2)

  36.                 base_img.paste(tmp_img,(neww,newh,(neww+tmpw),(newh+tmph)))
  37.                 base_img.save(file)
  38.         except IOError:
  39.                 return False        

  40. def file_name(file_dir):   
  41.     L=[]   
  42.     for root, dirs, files in os.walk(file_dir):  
  43.         for file in files:  
  44.                          if file[0] == '.':
  45.                                  continue
  46.                          L.append(os.path.join(root, file))
  47.     return L


  48. if len(sys.argv) < 2:
  49.         print "filename is Null..."
  50.         exit()
  51. outfilename = sys.argv[1]




  52. file = open('./text.txt','r')
  53. text = file.readlines()
  54. if text == '':
  55.         print 'text is null!!!'
  56.         exit()
  57. text = ''.join(text)
  58. print text



  59. text = unicode(text, 'utf-8')

  60. n = 500
  61. #print([text[i:i+n] for i in xrange(0, len(text), n)])
  62. namei = 0
  63. for i in xrange(0, len(text), n):
  64.         audio = client.synthesis(text[i:i+n])
  65.         file = open('./tmp/audio/'+str(namei)+'.mp3','wb')
  66.         namei = namei + 1
  67.         file.write(''.join(audio))
  68.         file.close()

  69. pics = file_name('./tmp/pic/')
  70. picsz = len(pics)
  71. for pic in pics:
  72.         tupiandaxiao_old(pic)
  73. audios = file_name('./tmp/audio/')
  74. audios = sorted(audios)
  75. audiosz = len(audios)
  76. if len(audios) <= 1:
  77.         os.system('cp ' + audios[0] +' ./tmp/j5.mp3')
  78. else:        
  79.         runmp3str = "ffmpeg -y "
  80.         for i in audios:
  81.                 runmp3str = runmp3str + "-i " + i + " "
  82.         runmp3str = runmp3str + " -filter_complex '[0:0] [1:0] concat=n=" + str(audiosz) + ":v=0:a=1 [a]' -map '[a]' ./tmp/j5.mp3"
  83.         print runmp3str
  84.         os.system(runmp3str)

  85. timesec = os.popen('ffprobe -i ./tmp/j5.mp3 -show_entries format=duration -v quiet -of csv="p=0"').read().replace('\n','')
  86. framerate = picsz / float(timesec)
  87. print ('framerate:%s - timesec:%s' % (framerate,timesec))
  88. #os.system('cat ./tmp/pic/* |ffmpeg  -y -f image2 -loop 1 -framerate ' + str(framerate) + ' -f image2pipe -i - -c:v libx264  -t ' + str(timesec) + ' ./tmp/output.mp4')
  89. runvideostr = 'cat ./tmp/pic/* |ffmpeg -loglevel warning -threads 2 -y -i ./tmp/j5.mp3 -f image2 -loop 1 -framerate ' + str(framerate) + ' -f image2pipe -i - -c:v libx264  -t ' + str(timesec) + ' -max_muxing_queue_size 99999 -r 25 -shortest ./tmp/outout2.mp4'
  90. print runvideostr
  91. os.system(runvideostr)
  92. runvideostr = "ffmpeg -loglevel warning -threads 2 -y -i ./tmp/outout2.mp4 -c:v libx264 -crf 22 -preset slow -pix_fmt yuv420p -c:a libmp3lame  -ac 2 -ar 44100 -vf "drawtext=fontcolor=f9f1ea:shadowx=2:shadowy=2:fontsize=30:fontfile=msyh.ttf:textfile=text.txt:reload=1:y=h-line_h-52:x=w-(mod(8*n\\,w+tw)-tw/40)" -vcodec libx264 ./tmp/" + outfilename.replace('.mp4','.mkv')
  93. print runvideostr
  94. os.popen(runvideostr)

  95. runmp3str = "ffmpeg -loglevel warning -i ./tmp/" + outfilename.replace('.mp4','.mkv') + " -i pt.mkv  -filter_complex "[1:v]loop=-1:size=500:,setpts=N/FRAME_RATE/TB,scale=1280x720[t1];[0:v]scale=1240x680, setpts=PTS-STARTPTS,format=yuva420p[t0];[t1][t0]overlay=20:20:shortest=1:enable='between(t\\,0.5,"+ str(timesec) +")'" -c:a copy -y -threads 4 ./tmp/output.mkv"
  96. print runmp3str
  97. os.system(runmp3str)

  98. runmp3str = "ffmpeg -loglevel warning -y -i pt.mp4 -i ./tmp/output.mkv -filter_complex '[0:v] scale=1280x720,fade=t=out:st=8:d=2 [v0]; [1:v] fade=t=in:st=0:d=2 [v1]; [v0][0:a][v1][1:a] concat=n=2:v=1:a=1[v]' -map '[v]' -threads 4 ./tmp/" + outfilename
  99. print runmp3str
  100. os.system(runmp3str)

复制代码

pt.mp4 是片头 与test.py 放到 一个目录上传 用的 youtube_upload 到github.com自取。
写的非常的乱。 能用的拿去用吧。
相关帖子
回复

使用道具 举报

22

主题

873

广告币

1206

积分

高级会员

Rank: 4

积分
1206

社区QQ达人

发表于 2018-9-14 18:00:50 | 显示全部楼层
再整个画中画吧。不然很容易被人举报。画中画的话  我这边封号概率小

评分

参与人数 1广告币 +5 收起 理由
leeker + 5

查看全部评分

回复 支持 1 反对 0

使用道具 举报

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
 楼主| 发表于 2018-9-8 13:25:18 | 显示全部楼层
本帖最后由 xiaoxue 于 2021-10-19 08:14 编辑

爬虫

  1. ...

复制代码


回复 支持 反对

使用道具 举报

23

主题

33

广告币

723

积分

中级会员

Rank: 3Rank: 3

积分
723

社区QQ达人

发表于 2018-9-9 17:32:55 | 显示全部楼层
这个不错,貌似采集的是公众号的文章生成视屏?
不忘初心。
回复 支持 反对

使用道具 举报

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
 楼主| 发表于 2018-9-15 00:47:24 来自手机 | 显示全部楼层
Black_industrie 发表于 2018-9-14 18:00
再整个画中画吧。不然很容易被人举报。画中画的话  我这边封号概率小

是画中画 用的fade。
回复 支持 反对

使用道具 举报

30

主题

34

广告币

116

积分

初级会员

Rank: 2

积分
116

社区QQ达人

发表于 2018-10-3 13:43:19 来自手机 | 显示全部楼层
我想弱弱的问一下,youtube是怎么审核视频是不是原创的或者有没有侵权

点评

你传上去之后系统会进行判断  详情 回复 发表于 2018-10-10 13:05
回复 支持 反对

使用道具 举报

0

主题

3

广告币

42

积分

初级会员

Rank: 2

积分
42
发表于 2018-10-10 13:05:58 | 显示全部楼层
黄伟 发表于 2018-10-3 13:43
我想弱弱的问一下,youtube是怎么审核视频是不是原创的或者有没有侵权

你传上去之后系统会进行判断
个人博客https://www.2-1.online
回复 支持 反对

使用道具 举报

3

主题

25

广告币

29

积分

初级会员

Rank: 2

积分
29

社区QQ达人

发表于 2021-8-2 16:32:12 | 显示全部楼层
这玩意CC字幕加录屏不是更好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2024-4-26 04:19 , Processed in 0.051407 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表