基于CSDN完成TEASOFT的MOOC编辑整理

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CSDN完成TEASOFT的MOOC编辑整理相关的知识,希望对你有一定的参考价值。

简 介: CSDN平台中的Markdown编辑器具有多媒体(很可惜没有音频,视频存储)的存储编辑能力。这样对于TEASOFT软件制作视频所需要的文字、图片、多媒体等文件,在CSDN的Markdown文件以及Nutdisk中的MicroVideo目录的联合存储。便可以对视频文档的准备进行网络联合制作,加速制作过程。

关键词 csdnteasoftmooc

背景介绍 目 录
Contents
录制所需要的资源 资源存储于应用 资源汇总 文字资源 动图资源 多媒体资源 相关命令 gif2mpg mpeg2gif dopaste 总 结

 

§00 景介绍

  利用TEASOFT教学软件可以进行MOOC课程视频拍摄资源整理。一方面可以利用CSDN的Markdown编辑将所需要制作视频的脚本资源进行规划,同时也将所需要的资源进行汇总存储。

  下面就利用CSDN文档完成TEASOFT 慕课视频拍摄资源汇总相关的方法进行整理。

0.1 录制所需要的资源

  根据 微视频制作方法与要素 对于需要准备的资料包括有以下种类:

  • 内容的逻辑层,显示了内部逻辑关联 与 因果关系;
  • 文字和语言:除了多数的标题之外,就是视频中的Caption。
  • 用于细节展示所使用到的多媒体资源:
    • 图片;
    • 动图;
    • 视频;
    • 音效;

0.2 资源存储于应用

0.2.1 资源的存储

  关于内容的逻辑,通过利用关系图、思维导图、表格、图形、公式以及标题文字组成。这部分内容主要承载在TEASOFT的DOP文件中。最终在Markdown中进行集中展示;

  对于文字和解说语言则使用Markdown内的注释语言进行。

这是用于视频内语言文本对应的存在的格式。

  关于图片、动图(尺寸小于5M字节)可以存储于Markdown文档中。关于视频、音效等则存储在:

  • D盘下的Nutdisk的 MicroVideo子目录

  除此之外,可以将搜索到的所用的资源在网络上的连接进行存储。在正式合成的过程中再进行下载。

0.2.2 资源的导入

  文件的导数包括:

  • 将文本设置TEASOFT的每一步的解说备注中;
  • 将图片、动图、AVI导入TEASOFT的背景图片和动图;
  • 将音乐盗图TEASOFT的音乐打开指令中。

 

§01 源汇总


  源汇总包括有如何将资源进行存储以及如何将存储资源导入TEASOFT两方面内容。

1.1 文字资源

1.1.1 文本存储

  文本,作为解说词的文本存储在Markdown文档中,与正常的编辑过程是一致的。

这是一个测试的解说词的文本,存储于一个Action中的解说词。
产生一个新的NULLAction,完成解说词的定义。

可能带来的问题是什么? 这应该是自然过渡到下一个Action的解说磁。

1.1.2 文本的使用

  也就是将编辑CSDN中的文档添加到Action的注解中。使用MemoForm中的命令:

  • Record - PasteClipboard - WMF-PY-HELP
  • 使用 dopaste命令

  修改:现在TEASOFT软件还存在一定的问题:

  • 自动过滤">"
  • 按照相邻 > 产生NULL, 不相邻的 > 则自动过渡到下一个HELP中。
  • 当第一个ActionPoint==-1的时候,好像是增加的NULL,

1.1.3 清除所有帮助信息

  利用AcitonForm中的 Help按钮,使用 CONTROL+SHIFT 点击HELP 按钮(右上角第二个),便可以清除所有帮助信息以及NULLAction。

1.2 图片、动图资源

1.2.1 图片、动图存储

  将所需要的图片存储在Markdown只要使用正常的 cdpp,csdnpp指令即可,便可以将图片存储Markdown中。

  注意: 在粘贴这在图片的过程中不能够添加图片注释。也就是只能够添加图片的尺寸。

1.2.2 图片、动图使用

  这里有三种方法,分别如下。

(1)图片、动图拷贝

  使用鼠标右键,获得图片拷贝,然后TEASOFT粘贴剪切板最终加入Action的背景图片。

(2)图片地址拷贝

  使用鼠标右键,获得图片的地址。然后使用命令csdnpp * ,便可以将图片加入Action背景图片。

(3)利用dopaste粘贴

  这个命令可以将文字、图片,动图,视频都进行粘贴。这是一个直接从Markdown编辑器中将资源粘贴到TEASOFT中的Action方法。

1.3 多媒体资源

1.3.1 多媒体存储

  多媒体资源包括有:MPEG(相当于GIF),AVI,MP3,WAV,它们无法直接存储在

  利用指令: gif2mpg 将录制的GIF转换成MPEG,并拷贝到 MicroVideo中备用。

  • gif2mpg * : 转换完之后,将第一张图片添加到 Markdown中;
  • gif2mpg + : 只是将MicroVideo中的文件名称添加到Markdown中;
  • gif2mpg . : 将 d:\\temp中的 1.avi, 1.MP3, 2.wav 移动到 MicroVideo中,并将文件名称添加到Markdown中。

(1)按照文字截取动图

  根据解说词语的长度,截取对应的动图。通过以下两步:

  • 将解说文字拷贝到剪切板;或者拷贝到ClearClipboardBackupString中。
  • 利用Record命令中的 GIF-》Freeze完成图片的截取。

  或者利用 Screen 中的 Capture GIF 命令。

  • 直接执行:采集GIF;
  • CONTROL: 采集GIF,并运行 gif2mpeg
  • MENU:copy CSDN中的选择字符,采集GIF 并运行 gif2mpeg.

  修改:在CaptureGIF中,对于Shift 命令,直接返回。

1.3.2 多媒体使用

(1)形成Action

  将Markdown中的资源进行拷贝。利用 dopaste 命令完成资源到TEASOFT的转换。


  将Markdown中的资源进行拷贝。利用 dopaste 命令完成资源到TEASOFT的转换。

(2)解压缩MPEG

  对于所有的MPEG文件,在使用前利用 mpeg2gif 进行解压缩,生成BMP文件,便可以在播放的时候形成快速播放。

 

§02 关命令


  面给出进行整理和编辑过程中所用到一些命令。

2.1 gif2mpg

  将采集到的gif2文件转换成mpeg,并进行存储。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# GIF2MPG.PY                     -- by Dr. ZhuoQing 2020-02-21
#
#   gif2mpg *                       # Change to microvideo
#   gif2mgp +                       # 
#   gif2mpg .                       # Move d:\\temp\\1.avi to MicroVideo
#                                   # move 1.wav, 1.mp3 to MicroVideo
#
#
# Note:
#============================================================

from head import *
import shutil

import cv2
import numpy as np
import glob

from io import BytesIO
import win32clipboard
#------------------------------------------------------------

csdn_title = '写文章-CSDN博客'
#------------------------------------------------------------
microvideo_dir = r'd:\\Nutdisk\\MicroVideo'
microvideo_flag = 0
numstr = 'GM%d'%(int(time.time()))

#------------------------------------------------------------
def send_to_clipboard(clip_type, data):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(clip_type, data)
    win32clipboard.CloseClipboard()

#------------------------------------------------------------
img_array = []
size = (100, 100)
mpegfile = []
microvideo_flag = 0
avimove_flag = 0

#------------------------------------------------------------
if len(sys.argv) > 1:
    if sys.argv[1] == '*':
        microvideo_flag = 1
    if sys.argv[1] == '+':
        microvideo_flag = 2
    if sys.argv[1] == '.':
        avimove_flag = 1

#------------------------------------------------------------
if microvideo_flag > 0:
    gifiddim = tspgetgifid()
    if len(gifiddim) == 0:
        printf('DOP has no GIF dop .\\a')
        exit()

    #------------------------------------------------------------
    outfile = numstr

    frameps = 25
    #------------------------------------------------------------
    for gifid in gifiddim:
        filedir = tspgetdoppath(gifid)
        gifpage = tspgetgifpage(gifid)
        filename = tspgetdopfile(gifid)
        nameonly, ext = os.path.splitext(filename)

        for i in range(gifpage):
            filename = os.path.join(filedir, '%04d%s'%(i, ext))
            img = cv2.imread(filename)
            mpegfile.append(filename)

            height,width,layers=img.shape
            size = (width, height)
            img_array.append(img)


    tspdeletedop(gifiddim)
    tsprv(-1)

    #--------------------------------------------------------
    filename = '%s_%d_%d.MPG'%(outfile, width, height)
    outfilename = os.path.join(microvideo_dir, filename)

    out = cv2.VideoWriter(outfilename, cv2.VideoWriter_fourcc(*'MPEG'), frameps, size, True)
    for id,img in enumerate(img_array):
        out.write(img)
        tspshowinfor('%d '%id)

    out.release()

    if microvideo_flag == 2:
        clipboard.copy(filename + '\\n')
        tspsendwindowkey(csdn_title, "v", control=1, noreturn=1)
    else:

        tspsendwindowkey(csdn_title,"c", control=1, noreturn=1)
        originstr = clipboard.paste()
        if len(originstr) > 0:
            tspsendwindowkey(csdn_title, " ")

        #----------------------------------------------------
        image = Image.open(mpegfile[0])
        output = BytesIO()
        image.convert('RGB').save(output, 'BMP')
        data = output.getvalue()[14:]
        output.close()
        send_to_clipboard(win32clipboard.CF_DIB, data)

        tspsendwindowkey(csdn_title, 'v', control=1, noreturn=1)

        for i in range(40):
            time.sleep(.5)
            readdata = tspread()

            if readdata[2] == 1: break
            if readdata[7] != 0: break
            if readdata[8] != 0: exit()
            if readdata[9] != 0: exit()

            tspsendwindowkey(csdn_title, 'c', control=1, noreturn=1)
            if clipboard.paste().find('在这里插入图片描述') >= 0:
                tspbeep(1500, 200)
                time.sleep(.25)
                break


            printf('\\a')

        for i in range(20):
            readdata = tspread()

            if readdata[7] == 0 and readdata[8] == 0 and readdata[9] == 0: break

            tspbeep(2500, 15)
            time.sleep(.25)


        tspsendwindowkey(csdn_title, 'ac', control=1, noreturn=1)

        pastestr = clipboard.paste().split('![在这里插入图片描述](')

        if len(pastestr) < 2:
            printf("Can not find the ![Insert picture] discriptor !\\a")
            exit()

        tspsendwindowkey(csdn_title, 'z', control=1)
        pastestr = pastestr[1].split(')')[0]
        pastestr = pastestr.split('?')[0]

        insertstr = '![%s](%s#pic_center =320x)'%(filename,pastestr)
        clipboard.copy(insertstr+'\\n'+originstr)
        tspsendwindowkey(csdn_title, "v", control=1, noreturn=1)

#        printf(pastestr)
        clipboard.copy("")

    exit()


#------------------------------------------------------------
def avi2csdn(filename, newfile):
    cam = cv2.VideoCapture(filename)
    ret, frame = cam.read()
    cv2.imwrite(r'd:\\temp\\1.bmp', frame)
    image = Image.open(r'd:\\temp\\1.bmp')

    output = BytesIO()
    image.convert('RGB').save(output, 'BMP')
    data = output.getvalue()[14:]
    output.close()
    send_to_clipboard(win32clipboard.CF_DIB, data)

    tspsendwindowkey(csdn_title, 'v', control=1)
    cam.release()

    for i in range(40):
        time.sleep(.5)
        readdata = tspread()

        if readdata[2] == 1: break
        if readdata[7] != 0: break
        if readdata[8] != 0: exit()
        if readdata[9] != 0: exit()

        tspsendwindowkey(csdn_title, 'c', control=1, noreturn=1)
        if clipboard.paste().find('在这里插入图片描述') >= 0:
            tspbeep(1500, 200)
            time.sleep(.25)
            break


        printf('\\a')

    for i in range(20):
        readdata = tspread()

        if readdata[7] == 0 and readdata[8] == 0 and readdata[9] == 0: break

        tspbeep(2500以上是关于基于CSDN完成TEASOFT的MOOC编辑整理的主要内容,如果未能解决你的问题,请参考以下文章

怎么解释三线圈直流电机工作原理更好?

杂乱无章的整理

TEASOFT软件中图片之间结构保持渐变过程

搭建AI Studio 中Python开发环境

七剑下天山-告别时域分析的过渡课堂练习-SS2022s

如何在TEASOFT中加入直线与曲线?