一、使用Python自带的write_videofile
1、函数说明如下:
def write_videofile(self, filename, fps=None, codec=None, bitrate=None, audio=True, audio_fps=44100, audio_nbytes=4, audio_codec=None, audio_bitrate=None, audio_bufsize=2000, rewrite_audio=True, remove_temp=True, write_logfile=False, verbose=True, threads=None, ffmpeg_params=None, """Write the clip to a videofile. Name of the video file to write in. The extension must correspond to the "codec" used (see below), or simply be '.avi' (which will work with any codec). Number of frames per second in the resulting video file. If None is provided, and the clip has an fps attribute, this fps will be used. Codec to use for image encoding. Can be any codec supported by ffmpeg. If the filename is has extension '.mp4', '.ogv', '.webm', the codec will be set accordingly, but you can still set it if you don't like the default. For other extensions, the output filename Some examples of codecs are: ``'libx264'`` (default codec for file extension ``.mp4``) makes well-compressed videos (quality tunable using 'bitrate'). ``'mpeg4'`` (other codec for extension ``.mp4``) can be an alternative to ``'libx264'``, and produces higher quality videos by default. ``'rawvideo'`` (use file extension ``.avi``) will produce a video of perfect quality, of possibly very huge size. ``png`` (use file extension ``.avi``) will produce a video of perfect quality, of smaller size than with ``rawvideo``. ``'libvorbis'`` (use file extension ``.ogv``) is a nice video format, which is completely free/ open source. However not everyone has the codecs installed by default on their machine. ``'libvpx'`` (use file extension ``.webm``) is tiny a video format well indicated for web videos (with HTML5). Open source. Either ``True``, ``False``, or a file name. If ``True`` and the clip has an audio clip attached, this audio clip will be incorporated as a soundtrack in the movie. If ``audio`` is the name of an audio file, this audio file will be incorporated as a soundtrack in the movie. frame rate to use when generating the sound. the name of the temporary audiofile to be generated and incorporated in the the movie, if any. Which audio codec should be used. Examples are 'libmp3lame' for '.mp3', 'libvorbis' for 'ogg', 'libfdk_aac':'m4a', 'pcm_s16le' for 16-bit wav and 'pcm_s32le' for 32-bit wav. Default is 'libmp3lame', unless the video extension is 'ogv' or 'webm', at which case the default is 'libvorbis'. Audio bitrate, given as a string like '50k', '500k', '3000k'. Will determine the size/quality of audio in the output file. Note that it mainly an indicative goal, the bitrate won't necessarily be the this in the final file. Sets the time that FFMPEG will spend optimizing the compression. Choices are: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. Note that this does not impact the quality of the video, only the size of the video file. So choose ultrafast when you are in a hurry and file size does not Number of threads to use for ffmpeg. Can speed up the writing of the video on multicore computers. Any additional ffmpeg parameters you would like to pass, as a list of terms, like ['-option1', 'value1', '-option2', 'value2']. If true, will write log files for the audio and the video. These will be files ending with '.log' with the name of the Boolean indicating whether to print infomation. Boolean indicating whether to show the progress bar.
2、使用代码如下:
from moviepy.editor import VideoFileClip clip = VideoFileClip("myvideo.mp4").subclip(100,120) clip.write_videofile("my_new_video.mp4")
二、加载opencv的videoWriter
1、函数说明如下:
videoWriter = cv.videoWriter(video_name, file_format, fps, isColor)
参数说明:
video_name:视频名称
file_format:文件格式
fps:帧率
isColor:输出格式,等于0时输出灰度视频,不等于0时输出彩色视频
2、使用代码如下:
videoCapture = cv.VideoCapture(0) size = (int(videoCapture.get(cv.CAP_PROP_FRAME_WIDTH)), int(videoCapture.get(cv.CAP_PROP_FRAME_HEIGHT))) videoWrite = cv.VideoWriter('MySaveVideo.avi', cv.VideoWriter_fourcc('I', '4', '2', '0'), fps, size) success, frame = videoCapture.read() # 通过设置帧数来设置时间,减一是因为上面已经获取过一帧了 numFrameRemainling = fps * 5 - 1 while success and numFrameRemainling > 0: success, frame = videoCapture.read()
参考:https://blog.csdn.net/li_l_il/article/details/83616586
|