为什么用moviepy截取视频/音频后,结果总时间没变

2024-04-01 06:08

本文主要是介绍为什么用moviepy截取视频/音频后,结果总时间没变,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在用moviepy合成一段视频和语音,想要视频和语音同步,即视频结束语音也结束,语音结束视频也结束,很简单的一个短板优先的办法,代码如下:

    my_clip = mpe.VideoFileClip('./temp/test.avi')audio_background = mpe.AudioFileClip('./temp/test.wav')videoLength = my_clip.durationaudioLength = audio_background.durationprint "视频时长:" + str(videoLength)print "声音时长:" + str(audioLength)#以较短的为主if (videoLength > audioLength):my_clip = my_clip.subclip(0, audioLength)elif (audioLength > videoLength):audio_background = audio_background.subclip(0, videoLength)## print my_clip.duration# print audio_background.durationnew = my_clip.set_audio(audio_background)print "最终视频时长:" + str(new.duration)new.write_videofile('./temp/result.mp4', audio_codec="aac")

我的音频是2.2s,视频是3s的,并且代码输出的最终视频时长也为2.2s,但是写入result.mp4后,视频却是3s的!

分析:很奇怪的问题,于是去看write_videofile函数的代码,发现它有个参数,是fps,如果不填则默认使用原视频的fps,而我的原视频的fps为1,即一秒播放一帧,一共播放三秒;所以在经过‘短板优先’的那个条件剪切音视频时,虽然视频被剪切为2.2s长,但是我的视频只有3帧,软件不可能剪出0.2帧出来,于是取天花板,为3,所以输出的视频又是三秒了;

**结论:**截取视频时,实际上截取的是帧,比如视频时长为3s,截取2.2s,则实际截取的是:ceil(视频的fps * 2.2);

**解释:**按照上面结论,我的视频是3s,每秒一帧,截取2.2秒,最终时长为:ceil(1*2.2) / 1= 3s,于是我把视频进行了处理,一秒60帧,结果很完美,播放时长在2.2秒(公式:ceil(60 * 2.2) / 60= 2.2)

这篇关于为什么用moviepy截取视频/音频后,结果总时间没变的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866400

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖