Python+FFmpeg音视频格式转换
写在前面
其实这个不全是python的实现的,主要实现由一款名为 FFmpeg 的软件工具实现,单用FFmpeg这款工具软件是可以实现视频格式的,但是这个工具只能在命令行下使用,所以使用起来会给人以 挺麻烦 的感觉。python中有一个os的模块,利用这个模块,可以在python程序中执行命令行中的命令。这样用python可以编写比较人性化的交互页面,这样只需要传入视频文件的原地址,做一些选择,就可以轻松的按自己的需求实现格式转换。
本文基于Windows下,用Pycharm进行程序编写。
FFmpeg工具软件
FFmpeg官网地址 https://www.ffmpeg.org/
FFmpeg下载地址 https://www.ffmpeg.org/download.html
这个工具好像可以实现各种音视频格式的转换,甚至可以从视频中提取音频。据说FFmpeg是很多视频播放器和转码工具的内核。( https://www.jianshu.com/p/7ed3be01228b )
使用方式,调用cmd命令行(可以通过Win+R搜索cmd,也可以通过Win+s搜索cmd),操作命令如下
ffmpeg -i 输入文件全路径 输出文件全路径
for example
ffmpeg -i C:\Users\Administrator\Desktop\wk.mp4 C:\Users\Administrator\Desktop\wk.mp3
没毛病,这是可以实现的,这样既可从.mp4视频文件中提取出音频,当然不同格式的视频转换也是可以实现。而且,FFmpeg的强大远不止于此,它可以从视频中截图、截取部分视频、合并视频、设置音频的码率……具体可以参考 https://www.ffmpeg.org/ffmpeg.html (英文的。。。)
python编程调用FFmpeg
使用python编程电泳FFmpeg实现格式转换。
# 导入os模块
import os# 定义输入文件路径(其中r是转义字符,为了让 \ 不起作用)
path_in = r'C:\Users\Administrator\Desktop\wk.mp4'
# 定义输出文件路径
path_out = r'C:\Users\Administrator\Desktop\wk.mp3'
# 拼接cmd下的命令
cmd = 'ffmpeg -i '+path_in+' '+path_out
# 执行cmd命令
os.system(cmd)
程序的执行需要时间,但是这个过程不会在pycharm的控制台显示,当看到
就说明程序结束了。
python调用FFmpeg进阶
这里说的进阶是做个页面出来,调用“选择文件”的功能直接选择要转格式的文件,并指定要输出的目标地址。输出文件名默认是输入文件的名称,提交之后可以自动完成转换。效果大概是这样:
输入文件直接输入要转格式的文件,输出位置选择格式转换后的存放文件夹,目标格式通过键入的方式输入。
首先把转换格式的功能封装成函数,传入三个参数,输入文件、输出位置、和目标格式,在函数内拼接并执行命令。编写convert.py,代码如下
import osdef convert(pin, pout, aim):# 获得文件名fname = pin.split('/')[-1].split('.')[0]# 拼接命令cmd = 'ffmpeg -i ' + pin + ' ' + pout+'/'+fname+'.'+aim# 执行命令os.system(cmd)
编写窗口文件windows.py,代码如下
import tkinter as tk from tkinter.filedialog import * # tkinter下的文件处理模块 from video_format_convert.convert import convert# 点击“选择文件”按钮调用该功能 def selectFilePath():path_ = askopenfilename(title='选择文件') # 选择文件的功能pathin.set(path_)# 点击“选择文件夹”调用该功能 def selectDirecPath():path_ = askdirectory(title='选择文件夹') # 选择文件夹的功能pathout.set(path_)# 点击提交执行的功能 def executeit():hint.set('converting . . .')convert(pathin.get(), pathout.get(), aimf.get())hint.set('convert finished')# 生成窗口 window = tk.Tk() window.title('格式转换') window.geometry('450x300')# 格式转换label tk.Label(window, text='格式转换').place(x=200, y=10) # x是从左向右的偏移,y是从上向下的偏移# 输入文件一行 pathin = tk.StringVar() # 定义变量 tk.Label(window, text='输入文件:').place(x=50, y=50) entry_pathin = tk.Entry(window, textvariable=pathin).place(x=160, y=50) # 输入框 btn_pathin = tk.Button(window, text='选择文件', command=selectFilePath).place(x=340, y=45) # 按钮# 输出文件的一行 pathout = tk.StringVar() tk.Label(window, text='输出位置:').place(x=50, y=100) # 从左偏,从上偏 tk.Entry(window, textvariable=pathout).place(x=160, y=100) tk.Button(window, text='选择文件夹', command=selectDirecPath).place(x=335, y=95)# 目标格式的一行 aimf = tk.StringVar() tk.Label(window, text='目标格式:').place(x=50, y=150) # 从左偏,从上偏 tk.Entry(window, textvariable=aimf).place(x=160, y=150)# 提交按钮 tk.Button(window, text=' 提 交 ', command=executeit).place(x=200, y=190)# 提示区域 hint = tk.StringVar() hint.set('') tk.Label(window, textvariable=hint).place(x=190, y=240)# 不停的刷新显示 window.mainloop()
其实这里面还有很多有待提升的,比如“目标格式”的输入框可以做成下拉式的,把可选的格式提前写进程序里,通过选择而不是键入的方式会更加的便捷;在提交执行阶段因为执行需要时间,在执行期间画面会卡死,直到执行完成才会回复;画面卡死的问题倒是可以用 os.popen(‘命令’)替代,用这个函数会把格式转换的执行移到后台,这样从画面上显示程序已经完成了,实际上还在运行,能力有待加强 /手动尴尬
这里只是简单的写了一下,希望能抛砖引玉。
tkinter教程参考 https://morvanzhou.github.io/tutorials/python-basic/tkinter/
python调用FFmpeg再进阶
这个就看你自己发挥了,such as做一个做成一个后端系统,部署在你的机器上(或者你的服务器上)通过web页面进行访问。如果你还有其他的工具程序也可以放在这个后台上,通过选择调用自己写的不同工具,这样就做到了一劳永逸的效果。后来我把它封装成.exe可执行文件,参见 使用pyinstaller将Python程序封装成可执行文件
Python+FFmpeg音视频格式转换相关推荐
- 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )
FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 [FFmpeg]FFmpeg 相关术语简介 二 [FFmpe ...
- Ffmpeg,mencoder视频格式转换
一. Ffmpeg,mencoder视频格式转换 Mencoder 转 flv mencoder -ffourcc FLV1 -lavfopts i_certify_that_my_video_st ...
- pcm 采样率转换_Cool Audio Video Converter(音视频格式转换工具)V2.18 最新版 - 绿色先锋下载 -...
Cool Audio Video Converter(音视频格式转换工具)是一款十分优秀好用的音频格式转换助手.如果你需要一款好用的格式转换工具,小编带来的这款Cool Audio Video Con ...
- android录音app 视频,月入 2 万案例分享:Android 音视频格式转换 App
音视频格式转换 月收入¥2w 2013年开始 1个创始人, 1个员工 新加坡 音视频格式转换,只有安卓 请问你的背景是什么?最近在忙什么? 我叫 Sherry Yang, 是新加坡一名极客女生,在读大 ...
- 音视频格式转换神器与html视频元素加字幕—零基础自学网页制作
音视频格式转换神器--格式工厂 如果您下载了上一篇<为HTML页面添加音频.视频的方法--零基础自学网页制作>(目录在结尾)中的素材,您会看到有这样一个文件,如图 因为格式工厂是免费软件, ...
- html打开网页过场动画_音视频格式转换神器与html视频元素加字幕——零基础自学网页制作
音视频格式转换神器--格式工厂 如果您下载了上一篇<为HTML页面添加音频.视频的方法--零基础自学网页制作>(目录在结尾)中的素材,您会看到有这样一个文件,如图 这就是格式工厂软件的安装 ...
- Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图
封装类: ffplay.ffmpeg.ffprobe是安装的ffmpeg路径. import java.io.BufferedReader; import java.io.File; import j ...
- 【JAVA】JAVA使用ffmpeg进行视频格式转换以及截图
JAVA 处理视频文件,需要用到 ffmpeg 这个工具.不需要依赖jar包.无论是在windows服务器还是linux服务器,想要使用 ffmpeg 都需要先安装. 附上Linux下 *.tar ...
- 免费音视频格式转换软件
免费音视频格式转换软件 软件支持各种格式文件的转换:视频,音频,图片,光盘等,支持批量操作. 关注公众号,回复: "格式工厂" 即可免费下载软件.
- 苹果mp3软件_推荐超级实用的苹果软件《一,音视频格式转换软件Total Video Converter Pro》...
推荐超级实用的苹果软件,首推这款Total Video Converter Pro软件,俗称"超级转霸". 好用到什么程度,自然是几乎什么格式都差不多涵盖在里面了. 下面截几张图片 ...
最新文章
- git常用命令和场景
- Linux(RHEL7.0)下安装nginx-1.10.2
- php设置html全局路径_全局:语言包配置
- MEET大会报名开启 | 李开复张亚勤等产学研大咖邀你共同见证智能未来
- freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1
- mysql 排他,mysql 共享锁 排他锁 防插入锁
- P1-0:项目框架搭建
- ubuntu安装postgreSQL 9.3
- JavaScript Promise对象
- idea安装2019
- 大数据虚拟化零起点-7基础运维第六步-安装Big Data Extensions Plugin
- 学生作业信息管理系统
- linux进入根目录查找,如何进入Linux根目录??
- 白帽子讲web安全读后感2
- 计算机正向着巨型化,目前计算机正向着巨型化、()、网络化、智能化方向发展。...
- 一日一技|Stata筛选出字符串中非数字的行
- kolla 部署openstack train版本(三节点controller+compute+storage)------功能测试
- Eclipse安装STS
- 马晓:Serverless SSR 在人人视频的落地探索
- 叮当快药难寻属于自己的解药