python+moviepy音视频处理(二):视频添加文字(字幕)、视频添加汉字不显示问题

这篇具有很好参考价值的文章主要介绍了python+moviepy音视频处理(二):视频添加文字(字幕)、视频添加汉字不显示问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

添加文字报错处理

中文不显示处理

代码实例

给视频添加滚动文字(一)

给视频添加滚动文字(二)


添加文字报错处理

报错内容:OSError: MoviePy Error: creation of None failed because of the following error:
[WinError 2] 系统找不到指定的文件。.
.This error can be due to the fact that ImageMagick is not installed on your computer, or (for Windows users) that you didn't specify the path to the ImageMagick binary in file conf.py, or that the path you specified is incorrect.

报错原因:moviepy处理视频使用的是 ffmpeg,生成文字使用的是 ImageMagick。Windows系统在执行 editor.TextClip() 的时候,会报出如上错误,原因是由于电脑上缺少ImageMagick造成的。
处理方法:需要去官网下载对应操作系统的ImageMagick。下载地址:http://www.imagemagick.org/script/download.php,由于是外网,下载速度比较慢。下载完成并安装到指定位置,然后修改site-packages\moviepy\config_defaults.py,在文件的尾部有如下内容:

import os

FFMPEG_BINARY = os.getenv('FFMPEG_BINARY', 'ffmpeg-imageio')
IMAGEMAGICK_BINARY = os.getenv('IMAGEMAGICK_BINARY', 'auto-detect')

# 把 `IMAGEMAGICK_BINARY = ` 后面的内容
# 换成 ImageMagick 安装路径下 magick.exe 的绝对路径,如下:

import os

FFMPEG_BINARY = os.getenv('FFMPEG_BINARY', 'ffmpeg-imageio')
IMAGEMAGICK_BINARY = r"C:\Program Files\ImageMagick-7.1.0-Q16\magick.exe"

中文不显示处理

moviepy对中文和多语言环境的支持做得并不好,包括中文文件名以及用于显示文字的TextClip就是典型的中文支持方面存在问题的。对于编解码的问题,可以通过修改解码语句中的编码类型为’asn’或‘cp936’等方式解决,对于文字显示的处理,稍微麻烦。解决办法:找到对应中文字库,将其字库文件拷贝到代码所在目录,将TextClip的参数font不用字体名,而是用字体文件名。字体库位置:C:\Windows\Fonts,鼠标右击字体文件,找到属性中安全下的对象名称,将对象名称复制下来作为font的值。

代码实例

from moviepy.editor import VideoFileClip
from moviepy import editor

clip = VideoFileClip('video.mp4')
text = '''
红笺小字。
说尽平生意。
鸿雁在云鱼在水。
惆怅此情难寄。

斜阳独倚西楼。
遥山恰对帘钩。
人面不知何处,
绿波依旧东流。
'''
text_clip = editor.TextClip(text, font=r'./font/STKAITI.TTF', fontsize=30, color='blue', bg_color='white', transparent=True)
"""
set_position:設置文字顯示位置【屏幕左上角为(0, 0),右下角为(屏幕宽度, 屏幕高度)】
    1、set_position((800, 500)): 显示在800, 500的位置上
    2、set_position(("center", "center")): 显示在屏幕的正中央
    3、set_position((0.4, 0.6), True): 显示在距离左边百分之40、距离上边百分之60的位置上
set_duration(10): 持续10秒
set_opacity(0.6): 设置透明度为0.6
set_start(5):设置开始显示的时间点
set_end(10):设置结束的时间点

"""
text_clip = text_clip.set_position(("center", "center")).set_duration(20).set_opacity(0.8)

video_clip = editor.CompositeVideoClip([clip, text_clip])  # 把文本剪贴板贴在视频上

video_clip.write_videofile("demo1.mp4")  # 保存視頻

给视频添加滚动文字(一)

from moviepy.editor import VideoFileClip, vfx
from moviepy import editor

demo_video = VideoFileClip('video.mp4')

text = '''
红笺小字。
说尽平生意。
鸿雁在云鱼在水。
惆怅此情难寄。

斜阳独倚西楼。
遥山恰对帘钩。
人面不知何处,
绿波依旧东流。
'''

text_clip = editor.TextClip(text * 4, font=r'./font/STKAITI.TTF', fontsize=20, color="red").set_position(
    ('center', 0)).set_duration(20).set_opacity(0.8).set_start(5).set_end(25)  # 可以直接使用链式操作

w, h = demo_video.size

x_speed = x_start = y_start = 0
y_speed = 20
text_clip = text_clip.fx(vfx.scroll, w, h, x_speed, y_speed, x_start, y_start)

video_clip = editor.CompositeVideoClip([demo_video, text_clip])
video_clip.write_videofile('demo_video01.mp4')

给视频添加滚动文字(二)

from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# 同畫面中合併視頻,視頻顯示位置設置或屏幕中文本字幕顯示位置set_pos('center')、set_pos((45,150)),見http://doc.moviepy.com.cn/index.html#中的剪輯定位
## 1、添加文字
clip = VideoFileClip('video.mp4')
text = '其形也,翩若惊鸿,婉若游龙。\n荣曜秋菊,华茂春松。\n髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。\n远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。\n秾纤得衷,修短合度。肩若削成,腰如约素。\n延颈秀项,皓质呈露。芳泽无加,铅华弗御。\n云髻峨峨,修眉联娟。丹唇外朗,皓齿内鲜,明眸善睐,靥辅承权。\n瑰姿艳逸,仪静体闲。柔情绰态,媚于语言。奇服旷世,骨像应图。\n披罗衣之璀粲兮,珥瑶碧之华琚。戴金翠之首饰,缀明珠以耀躯。\n践远游之文履,曳雾绡之轻裾。微幽兰之芳蔼兮,步踟蹰于山隅。'

txt_clip = TextClip(txt=text, fontsize=20, color='red', font=r'./font/STKAITI.TTF')

txt_clip = txt_clip.set_pos(lambda t: ('center', -100 + t * 20)).set_duration(25)  # 設置一個隨時間變化自動移動的動態字幕

video = CompositeVideoClip([clip, txt_clip])  # 将文本剪辑覆盖在第一个视频剪辑上

video.write_videofile('demo2023.mp4')

补充(视频属性判断)文章来源地址https://www.toymoban.com/news/detail-486297.html

clip = VideoFileClip('video.mp4')

# 是否作为遮罩使用
print(clip.ismask)  

# 帧的构建方法,通过构造方法传入或set_make_frame方法设置,帧的构建方法用于根据时间构建帧,该方法是get_frame获取帧时调用的方法。帧的构建可以从已有剪辑中获取或变换,也可以代码自己填充
print(clip.make_frame)  

# 当一个视频帧有遮罩时,使用该属性记录遮罩的剪辑。如果为None,则视频剪辑完全不透明。可以通过add_mask、set_opacity等方法来构建剪辑的遮罩,也可以通过set_mask来将已有的剪辑设置为视频剪辑的遮罩
print(clip.mask)

# aspect_ratio属性为剪辑的纵横比,实际上就是剪辑的宽/高。注意该属性为浮点数,只读,通过属性名访问
print(clip.aspect_ratio)

到了这里,关于python+moviepy音视频处理(二):视频添加文字(字幕)、视频添加汉字不显示问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Python进行可视化/音视频处理?

    要使用Python进行可视化和音视频处理,可以使用以下库: matplotlib:用于绘制各种类型的图表和图形,包括折线图、柱状图、散点图等。 seaborn:基于matplotlib的可视化库,提供更高级别的图表和样式,用于创建各种吸引人的统计图表。 plotly:用于创建交互式图表和数据可视化

    2024年02月09日
    浏览(67)
  • 「Python|音视频处理|场景案例」如何使用ffmpeg下载m3u8视频到本地并保存成mp4

    本文主要介绍如何使用ffmpeg批量下载视频到本地并保存成指定格式。 当我们希望将网页上的视频下载到本地的时候,我们可能获取到的视频地址是指向 .m3u8 格式的,当视频多的时候,手动下载并使用工具转换格式就显得工作量过大。 ffmpeg 是一个强大的音视频处理工具,具体

    2024年02月16日
    浏览(76)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(68)
  • Qt音视频开发47-文字和图片水印(可存储到MP4中)

    近期花了两周时间闭门啃硬骨头,主要就解决三个问题(音视频同步存储和推流、图片水印并将水印信息存储到文件或者推流、rtsp推流),这三个问题困扰了很多年,以至于找遍了网络和翻遍ffplay代码以及ffmpeg示例的代码,通过不下于上百次方案的调整和测试,几乎每次都是

    2024年02月16日
    浏览(53)
  • 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

    本篇文件主要分析 音视频文件 是怎么产生的 , 以及 音视频文件是如何播放的 ; 视频文件从录像到生成文件的全过程 : 采集图像帧 : 摄像头 硬件 负责 采集画面 , 采集的 初始画面 称为 \\\" 图像帧 \\\" , 一秒钟 采集 的 图像帧 数量 称为 \\\" 帧率 \\\" , 如 : 60 帧 就是 一秒钟采集 60 个画

    2024年02月11日
    浏览(79)
  • Py之AV:Python下音视频处理的良伴,AV库的全面介绍、详细安装和使用方法!

    Py之AV:Python下音视频处理的良伴,AV库的全面介绍、详细安装和使用方法! Python作为一门广泛使用的编程语言,其实也可以用来进行音视频的处理。AV库就是一个功能强大、易于使用的Python音视频处理库,能够方便地完成多种音视频格式的读取、解码和编码等操作。 本文将全

    2024年02月12日
    浏览(67)
  • [音视频处理] FFmpeg使用指北1-视频解码

    本文将详细介绍如何使用ffmpeg 4.4在C++中解码多种格式的媒体文件,这些媒体文件可以是视频、视频流、图片,或是桌面截屏或USB摄像头的实时图片。解码文件后,还将每帧图片转换为OpenCV的Mat格式以供后续使用。 目录 1 基于ffmpeg的媒体文件解码 1.1 简介 1.2 详细代码 2 ffmpeg函

    2024年02月07日
    浏览(67)
  • Java音视频处理——JavaCV

    目录   简介 Maven 软件环境 JavaCV-Examples OpenCV Cookbook Examples 概述 示例 OpenCV文档 如何使用JavaCV示例 示例代码的组织结构 示例列表 Why Scala? 学习地址 图像简单处理代码示例 1.打开保存一张图  2.画直线 3.画圆圈 4.画折现 5.添加文字水印 6.裁剪并局部放大 7.人脸检测 视频简单处

    2024年02月03日
    浏览(92)
  • 【Webpack】处理字体图标和音视频资源

    打开阿里巴巴矢量图标库open in new window 选择想要的图标添加到购物车,统一下载到本地 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体文件路径需要修改 src/main.js public/index.html type: \\\"asset/resource\\\" 和 type: \\\"asset\\\" 的区别: type: \\\"asset/resource\\\"  相当于

    2024年02月20日
    浏览(51)
  • FFmpeg音视频处理工具介绍及应用

    FFmpeg项目由 Fabrice Bellard在2000年创立。到目前为止,FFmpeg项目的开发者仍然与VLC、MPV、dav1d、x264等多媒体开源项目有着广泛的重叠。Ffmpeg(FastForward Mpeg)是一款遵循GPL的开源软件,在音视频处理方面表现十分优秀,几乎囊括了现存所有的视音频格式的编码,解码、转码、混合

    2024年02月08日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包