Coder Social home page Coder Social logo

Comments (10)

jianchang512 avatar jianchang512 commented on May 13, 2024 1

有没有可能像剪映一样,增加一个“定格”功能,即原始视频画面内容不动,如果需要延长视频时间和音频同步,就将一部分画面定格一段时间。这样就相当于从原始视频中抽了一些帧做了延时,再插入到原来的视频里,不涉及原始视频的大量计算,会不会更快一些?

有打算在视频的最后,复制最后一帧做视频延长到和音频一致,中间定格实际计算量还是很大的,所谓延时,本质就是将抽出的帧不断复制,直到达到所需时长,然后再插入原视频,而插入,实质上需要将原视频在插入点截断为2个视频片段,然后3个视频再拼接。定格点多了一样需要较大计算量,也很复杂。

而且定格这个功能,只界面都挺复杂了,对于这个没有商业计划的小项目来说,过于复杂了。

from pyvideotrans.

jianchang512 avatar jianchang512 commented on May 13, 2024 1

已实现视频自动降速。对应片段降低帧率实现。
默认情况下通过延长视频最后一帧画面实现

from pyvideotrans.

jianchang512 avatar jianchang512 commented on May 13, 2024

这个过于复杂, 暂时不考虑

实现原理是这样

  1. 记录每个需要降速播放的时间片段,可能有很多个,比如原本是2s的视频,降速2倍后,时长就会变为4s,将改变后的每个片段保存为视频
  2. 然后从原始视频里找出所有不在降速范围内的其他时间片段,分别截取保存
  3. 将上述2步获取的所有片段进行合并。

其中每一步都很复杂, 而且计算量非常大,会很慢。

from pyvideotrans.

photkey avatar photkey commented on May 13, 2024

是的,确实很复杂,这个是之前我自己在折腾的,直接用ffmpeg 切割以及慢放的时长都调整不精准,查了下说是要用OpenCV切割、调速, 然后就放弃了……

from pyvideotrans.

jianchang512 avatar jianchang512 commented on May 13, 2024

只ffmpeg应该也能实现

比如 音频片段是 5-10s区间的5s,配音后,音频变为了 12s时长。

那么就对原始视频 5-10s区间应用2.4倍降速播放,时长就是12s,ffmpeg可以取出这个降速后的片段视频 a

然后再对原始视频中 0-5s的片段b,和10s-结束的片段c截取出来。

最后 连接 b a c 这3个片段就行了

当然如果只有一二个片段还好说,不过一般都是几十个片段甚至更多,所以更复杂也更慢了

from pyvideotrans.

photkey avatar photkey commented on May 13, 2024

我之前就是按你说的这样来操作的,但是我测试了ffmpeg命令 取出片段的时候 不能精确到毫秒(有精确到毫秒的命令,但结果经常不是预期,不精准),调整速度(时长)的时候 偏差就更多了。
因为我对ffmpeg完全不熟悉,都是现用现查的命令,所以我特意到淘宝上找人写一个能精确控制到毫秒的命令,淘宝卖家跟我说实现不了。

也可能还是我对ffmpeg,不熟悉的原因吧,不知道你有没有测试过这些相关的命令。

from pyvideotrans.

jianchang512 avatar jianchang512 commented on May 13, 2024

不必那么精准吧,到秒或者 0. 几秒也就够了,本身就是降速延时处理的,再精确也没多大意义

只测试过 0.几秒即数百ms的,倒还算精确。

一个视频处理不只是一个片段,整体下来计算量非常庞大,即便GPU加速,也会非常慢的

from pyvideotrans.

jianchang512 avatar jianchang512 commented on May 13, 2024

如果要精确到ms,确实使用 cv2更方便,按帧读取,然后调整fps,重新输出视频片段,再拼接

from pyvideotrans.

photkey avatar photkey commented on May 13, 2024

嗯,我查的资料是说cv2可以更精确,至于是不是方便 我就不懂了,cv2完全不会用……
这个功能确实会复杂很多,希望现有功能都完善后,以后可以增加进来,因为在制作出海视频时(中文→其它语言) 确实很多情况会语速太快,我试过的 中文→印尼语 那就是快到完全没法听了。如果是搬运国外视频到国内,这种问题可能还会少一些。

如果以后有可能会增加这个功能的话,或许还可以在加一个参数,--voice_rate_max,voice_rate 到 voice_rate_max 之间的音频,仅通过调整音频对齐时长;当大于voice_rate_max时,语音速度按照voice_rate_max,同时调整视频长度,音视频共同调节对齐时长。

from pyvideotrans.

MedalCollector avatar MedalCollector commented on May 13, 2024

有没有可能像剪映一样,增加一个“定格”功能,即原始视频画面内容不动,如果需要延长视频时间和音频同步,就将一部分画面定格一段时间。这样就相当于从原始视频中抽了一些帧做了延时,再插入到原来的视频里,不涉及原始视频的大量计算,会不会更快一些?

from pyvideotrans.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.