资讯专栏INFORMATION COLUMN

Python 批量转换视频音频采样率(附代码) | Python工具

KevinYan / 1498人阅读

摘要:目录前言前言环境依赖环境依赖代码代码总结总结前言本文主要分享一个代码,可以将多个视频中的音频转化为相同采样率的视频。该代码主要转化为采样率,可以按照需求调整。验证一下原始视频采样率结果视频采样率,没什么问题。

目录

前言

环境依赖

代码

总结


前言

本文主要分享一个python代码,可以将多个视频中的音频转化为相同采样率的视频。对视频格式的校验没有做,也不是很关键。

环境依赖

ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客

ffmpy安装:

pip install ffmpy -i https://pypi.douban.com/simple

 

代码

不废话,上代码。

#!/user/bin/env python# coding=utf-8"""@project : csdn@author  : 剑客阿良_ALiang@file   : transfor_mp4_audio_sampling_rate.py@ide    : PyCharm@time   : 2021-11-24 13:48:08"""from ffmpy import FFmpegimport osdef transfor(video_path: str, tmp_dir: str, result_dir: str):    file_name = os.path.basename(video_path)    base_name = file_name.split(".")[0]    file_ext = file_name.split(".")[-1]    ext = "wav"    audio_path = os.path.join(tmp_dir, "{}.{}".format(base_name, ext))    print("文件名:{},提取音频".format(audio_path))    ff = FFmpeg(        inputs={            video_path: None}, outputs={            audio_path: "-f {} -vn -ac 1 -ar 16000 -y".format("wav")})    print(ff.cmd)    ff.run()    if os.path.exists(audio_path) is False:        return None    video_tmp_path = os.path.join(        tmp_dir, "{}_1.{}".format(            base_name, file_ext))    ff_video = FFmpeg(inputs={video_path: None},                      outputs={video_tmp_path: "-an"})    print(ff_video.cmd)    ff_video.run()    result_video_path = os.path.join(result_dir, file_name)    ff_fuse = FFmpeg(inputs={video_tmp_path: None, audio_path: None}, outputs={        result_video_path: "-map 0:v -map 1:a -c:v copy -c:a aac -shortest"})    print(ff_fuse.cmd)    ff_fuse.run()    return result_video_pathdef handle(video_dir: str, tmp_dir: str, result_dir: str):    if os.path.isdir(video_dir):        for file in os.listdir(video_dir):            try:                result = transfor(                    os.path.join(                        video_dir,                        file),                    tmp_dir,                    result_dir)            except Exception as e:                print(e)                continue            if result:                print(result)if __name__ == "__main__":    handle(        "C:/Users/huyi/Desktop/shipin",        "C:/Users/huyi/Desktop/tmp",        "C:/Users/huyi/Desktop/result")

代码说明

1、handle方法入参分别为:视频目录、临时目录、最终结果视频目录。

2、handle方法会遍历视频目录,一次对视频做transfor方法处理,步骤为:(1)提取视频音频并转化为定义的采样率音频;(2)提取视频中不带音频的视频;(3)融合新视频与新音频合成最终视频到指定的结果目录。

3、没有音频的异常直接丢弃,无需进行转换。

4、最终结果目录的文件名与原视频目录的文件名一致。

5、该代码主要转化为16k采样率,可以按照需求调整。

验证一下

原始视频采样率

结果视频采样率

OK,没什么问题。

总结

没啥总结的。

分享:

        或许前路永夜,即便如此我也要前进,因为星光即使微弱也会为我照亮前路。

                                                                                                              ——《四月是你的谎言》

如果本文对你有用的话,给我一个赞吧,谢谢!

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125049.html

相关文章

  • 如何使用深度学习重建高分辨音频

    摘要:音频超分辨率旨在重建一个以较低分辨率波形作为输入的高分辨率音频波形。由于受到深度学习成功应用于图像超分辨率的启发,我最近致力于使用深层神经网络来完成原始音频波形的上采样。上采样块使用子像素卷积,其沿着一个维度重新排列信息以扩展其他维度。 音频超分辨率旨在重建一个以较低分辨率波形作为输入的高分辨率音频波形。在诸如流式音频和音频恢复之类的领域中,这种类型的上采样存在着若干种潜在应用。一个传统的解...

    voidking 评论0 收藏0
  • 自创数据集,使用TensorFlow预测股票入门

    摘要:总的来说,是一种采用数据流图,用于数值计算的开源软件库。其中代表传递的数据为张量多维数组,代表使用计算图进行运算。数据流图用结点和边组成的有向图来描述数学运算。 本文非常适合初学者了解如何使用 TensorFlow 构建基本的神经网络,它全面展示了构建一个 TensorFlow 模型所涉及的概念与模块。本文所使用的数据集可以直接下载,所以有一定基础的读者也可以尝试使用更强的循环神经网络处理这...

    jas0n 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 视频编程基本概念梳理

    摘要:视频的基本概念表示方式常见两种表示方式为概念的概念,很多人都了解,三种原色来描述一个像素点,还有格式,是透明度。了解的概念,对于音视频编程中的客户端开发,是必要的。 本文梳理了音视频编程开发者需要了解的基本概念访问我的博客了解更多 前言 本文梳理了音视频编程开发者需要了解的基本概念,当然,有的人一开始看着干巴巴的理论,感到困乏,却是一个喜欢动手实践的开发者,那么先实践 ffmpeg的C...

    LancerComet 评论0 收藏0
  • 小程序实现语音识别到底要填多少坑?

    摘要:前不久写了个工具型微信小程序周边,里面用到了语音识别技术。当然如果你要兼容低端微信用户需要使用做兼容处理。如果发现不当之处欢迎微信交流。想看实际案例的可以微信扫码关于安装关于安装关于安装 前不久写了个工具型微信小程序(Find周边),里面用到了语音识别技术。现将实现细节整理如下: 接口预览 通过阅读了解科大讯飞接口文档、小程序接口开发文档以及对后端ThinkPhp框架的学习,我整理...

    Benedict Evans 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<