LISHUZUOXUN_yangjiang/LSZXVideo/video_sender.py

87 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!coding=utf-8
import socket
import struct
import os
import time
import sys
FFMPEG_EXE = os.path.join(sys.path[0], 'LSZXVideo\\ffmpeg.exe')
# os.popen(FFMPEG_EXE)
input_dir = os.path.join(sys.path[0], "LSZXVideo\\Video")
output_dir = os.path.join(sys.path[0], "LSZXVideo\\Output_Video")
# 如果没有Output_Video这个文件夹则创建这个文件夹
if not os.path.exists(output_dir):
os.mkdir(output_dir)
class VideoSending(object):
def __init__(self):
self.input_video_path = input_dir
self.new_resolution = "640x400"
self.new_fps = "10"
self.output_video_path = output_dir
self.filename = None
def convert_video(self, video_path):
video_name, _ = os.path.splitext(video_path)
input_video_path = self.input_video_path + os.sep + video_path
output_video_path = self.output_video_path + os.sep + video_name + ".mp4"
ffmpeg_command = (f"{FFMPEG_EXE} -i %s -s %s -r %s %s" % (
input_video_path, self.new_resolution, self.new_fps, output_video_path))
os.system(ffmpeg_command)
def video_sending(self, ip, videoname, port=8025):
# 创建套接字
ADDR = (ip, port)
ip_port = ADDR
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
try:
s.connect(ip_port) # 建立连接
if s:
break
except socket.error as e:
print('Socket recv data error:', e)
time.sleep(0.5)
# print("成功连接服务器")
self.filename = os.path.join(self.output_video_path, videoname)
# fileinfo_size = struct.calcsize('128sl')
fhead = struct.pack('128sl', videoname.encode('gbk'), os.stat(self.filename).st_size)
s.send(fhead) # 发送文件名称和大小
# 发送视频
f = open(self.filename, 'rb')
while True:
try:
data = f.read()
if not data:
# print('{0} 数据传输完成...'.format(filename))
break
s.send(data)
except socket.error as e:
print('Socket recv data error:', e)
s.connect(ip_port)
s.recv(1024)
# print("所有数据传送完成...")
# 断开
def delete_video(self):
for root, dirs, files in os.walk(self.output_video_path):
for name in files:
if name.endswith(".mp4"):
os.remove(os.path.join(root, name))
if __name__ == '__main__':
a = VideoSending()
input_video_list = os.listdir('Video')
for video_path in input_video_list:
print(video_path)
# a.convert_video(vide_path)
# output_video_list = os.listdir('./Output_Video')
# for filename in output_video_list:
# a.video_sending(ip='192.168.1.28', videoname=filename)
# a.delete_video()