使用轻量服务器实现抖音或任意直播视频的录制并发送

2023-07-17 23:52:42 浏览数 (2)

配置云服务器环境

通过SSH连接服务器,更新源:

代码语言:javascript复制
sudo apt update

安装ffmpeg:

代码语言:javascript复制
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update
sudo apt install ffmpeg

安装Python 3环境:

代码语言:javascript复制
sudo apt update
sudo apt install python3 python3-pip

获取抖音直播真实地址

1. 在抖音App中浏览要录制的直播间,点击分享获得分享链接

2. 使用Python请求分享链接,解析出m3u8格式的直播源地址

代码语言:javascript复制
python
import requests 

dy_share_url = 'https://v.douyin.com/xxx'
res = requests.get(dy_share_url)
m3u8_url = res.text.split('src":"')[1].split('"}')[0] 

设定录制脚本

使用ffmpeg命令行录制,检测开播状态,开启录制:

代码语言:javascript复制
python
import os
import time
while True:
   if requests.get(m3u8_url).ok:
     os.system(f'ffmpeg -i {m3u8_url} -c copy output.mp4')  
   else:
     time.sleep(300)

可以通过多进程同时录制多个直播间:

代码语言:javascript复制
python
from multiprocessing import Process

# 定义录制函数
def record_room(room_url, output):
  stream = ffmpeg.input(room_url)
  stream.output(output).run()

if __name__ == '__main__':

  # 多个直播间
  rooms = [room1, room2, ...]

  # 启动多进程录制
  processes = []
  for i, room in enumerate(rooms):
    process = Process(target=record_room, args=(room, f'output{i}.mp4'))
    process.start()
    processes.append(process)
  
  # 等待所有进程结束
  for process in processes:
    process.join()

支持多进程同时录制多个房间:

代码语言:javascript复制
python
rooms = ['room1.m3u8', 'room2.m3u8']

for i, room in enumerate(rooms):
  p = Process(target=record ,args=(room, f'output{i}.mp4'))
  p.start()

发送通知邮件

1. 录制完成后,构造邮件文本和附件

代码语言:javascript复制
python
msg = EmailMessage()
msg['Subject'] = '抖音直播录制结果' 

with open('output.mp4', 'rb') as f:
  video = MIMEApplication(f.read())
  video.add_header('Content-Disposition', 'attachment', filename='output.mp4')
  msg.attach(video)

msg.set_content('本次录制结果...')

2. 使用smtplib模块发送邮件

代码语言:javascript复制
python
s = smtplib.SMTP_SSL('smtp.xxx.com')
s.login('你的邮箱','密码') 
s.sendmail('你的邮箱', '对方邮箱', msg.as_string())
s.quit()

结束语:

利用云服务器的高性能,可以方便录制任意抖音直播或m3u8视频内容。可以考虑在推送到企微或者切片发送到微信。

0 人点赞