FFmpeg-python使用的一二之二

前言

上一篇有相关资料索引、也描述了开发背景。
 这篇会主要描述2部分内容:

  1. 基于FFmpeg-python,实现FFmpeg-python API中没有说到的功能实现方式。
  2. FFmpeg-python不能满足需求时,我们要如何解决。

功能实现方案

  1. 人物视频先做处理、再和背景、前景overlay;
  2. 人物直接在背景视频上overlay、再和前景overlay;
     两种方案的利弊:方案1需要的参数只有人物视频的参数(开始时间、持续时间);方案2则还需要人物视频对应背景视频的时刻。
    方案1碰到的问题、时间损耗

FFmpeg-python的功能补充说明

  • 多视频overlay方式
     FFmpeg.overlay().overlay()
  • BUG:人物的png序列帧与透明背景视频overlay、Y坐标<0时(此时输出视频、可以发现视频是正常的),再和背景视频overlay,会导致人物出现透明;所以这个功能,我最终使用FFmpeg实现而不是FFmpeg-python
  • concat时,针对其中一个视频片段处理时(旋转缩放等操作),处理的操作最终会被应用在所有的视频上,而不是应用在单独的视频片段上
  • 其他待补充。。。(有想起来但是又忘掉的…)

命令行与FFmpeg-python结合使用

 当FFmpeg-python的API不能满足我们的功能需求时,我们可以使用FFmpeg来实现,实现方式是在python中调用命令行。
 如果使用两种方案混合使用,就需要考虑1、文件调用与FFmpeg使用过程否有冲突;2、多次处理视频的运行顺序。经测试:1、无冲突 2、两种方式混合使用时,会根据代码顺序运行,且只有上一操作结束才会进行下一操作(单线程情况下)
 Tip:python使用命令行运行FFmpeg指令的方式:os.system(“指令”)

python打包exe

 我用的是pyinstaller,使用方式和指令,网上有很多,这里就不再赘述。这里指记录自己觉得需要记录的东西:
 在使用过程中,碰到一个问题,就是在pycharm中的Terminal中使用pyinstaller打包时,没有自动包含依赖。

  • 原因:在pycharm的Terminal中运行pyintaller时,Terminal中的python用的是环境变量里的python,而pycharm中的工程以及依赖包有时是安装当前工程中(我的项目是如此设置的,现在发现利弊共存),而不是环境变量中的python中,所以Terminal中运行pyinstaller时,并没有相应的依赖包可安装。
  • 解决方案:
     1.给环境变量中的python安装缺失的依赖包
     2.使用pycharm中的python、pyinstaller进行打包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值