將用戶錄製的動畫和語音錄製成視頻
python
方案設計:使用ffmpeg錄製,視頻格式爲mp4,錄製平臺爲windows
方案驗證:在windows平臺cmd中使用如下命令:ffmpeg -f gdigrab -offset_x 18 -offset_y 90 -video_size 1376x768 -i desktop -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -r 24 -y -acodec aac -ac 1 -ar 44100 -ab 64k d:\\out.mp4
驗證結果:錄製成功
方案設計:定製錄製頁面;獲取url中的pk,到後臺請求history渲染
方案驗證:定製錄製頁面路由示例:http://127.0.0.1:8010/screen/capture/?pk=476;
驗證結果:驗證成功
方案設計:實現線上任務下發到本地windows機器中
方案驗證:
client = GearmanClient(['localhost:4730', ])
url = "http://127.0.0.1:8010/screen/shot/?pk=%s" % id
client.submit_job("convert2image", json.dumps(url))
convert_worker =GearmanWorker(['http://127.0.0.1:4730', ])
convert_worker.set_client_id('convert')
convert_worker.register_task('convert2image', self.task_listener)
def task_listener(self, gearman_worker, request):
print(request.data)
驗證結果:驗證成功
方案設計:使用Webdriver加載錄製頁面,播放動畫
方案驗證:
option = ChromeOptions()
option.add_argument('--disable-gesture-requirement-for-media-playback')
option.add_argument('--window-size=1366,868')
option.add_argument('--disable-infobars')
driver = Chrome(chromedriver.exe, chrome_options=option)
driver.get("www.baidu.com")
驗證結果:驗證成功
方案設計:單線程運行woker接受任務
方案驗證:
class Worker(QThread):
def __init__(self):
super().__init__()
self.worker = None
def run(self):
self.worker = self.init_worker()
self.worker.work()
def init_worker(self):
convert_worker = GearmanWorker(['http://127.0.0.1:4730', ])
convert_worker.set_client_id('convert2image')
convert_worker.register_task('convert2image', self.task_listener)
return convert_worker
def task_listener(self, gearman_worker, request):
print(request.data)
驗證結果:驗證成功
方案設計:調用cmd執行視頻錄製命令,能夠主動中止命令運行
方案驗證:
class RecordProcess(QProcess):
def start(self, cmd: str, *__args):
super().start(cmd, *__args)
def quit(self):
self.writeData(b'q')
驗證結果:驗證成功
方案設計:執行command運行任務
方案驗證:
class Command(BaseCommand):
def handle(self, *args, **options):
app = QApplication(sys.argv)
win = MainWindow()
win.show()
app.exit(app.exec_())
驗證結果:驗證成功
功能流程圖web