写在前面

其实这个不全是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音视频格式转换相关推荐

  1. 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 [FFmpeg]FFmpeg 相关术语简介 二 [FFmpe ...

  2. Ffmpeg,mencoder视频格式转换

    一. Ffmpeg,mencoder视频格式转换 Mencoder 转 flv  mencoder -ffourcc FLV1 -lavfopts i_certify_that_my_video_st ...

  3. pcm 采样率转换_Cool Audio Video Converter(音视频格式转换工具)V2.18 最新版 - 绿色先锋下载 -...

    Cool Audio Video Converter(音视频格式转换工具)是一款十分优秀好用的音频格式转换助手.如果你需要一款好用的格式转换工具,小编带来的这款Cool Audio Video Con ...

  4. android录音app 视频,月入 2 万案例分享:Android 音视频格式转换 App

    音视频格式转换 月收入¥2w 2013年开始 1个创始人, 1个员工 新加坡 音视频格式转换,只有安卓 请问你的背景是什么?最近在忙什么? 我叫 Sherry Yang, 是新加坡一名极客女生,在读大 ...

  5. 音视频格式转换神器与html视频元素加字幕—零基础自学网页制作

    音视频格式转换神器--格式工厂 如果您下载了上一篇<为HTML页面添加音频.视频的方法--零基础自学网页制作>(目录在结尾)中的素材,您会看到有这样一个文件,如图 因为格式工厂是免费软件, ...

  6. html打开网页过场动画_音视频格式转换神器与html视频元素加字幕——零基础自学网页制作

    音视频格式转换神器--格式工厂 如果您下载了上一篇<为HTML页面添加音频.视频的方法--零基础自学网页制作>(目录在结尾)中的素材,您会看到有这样一个文件,如图 这就是格式工厂软件的安装 ...

  7. Java使用ffmpeg进行视频格式转换、音视频合并、播放、截图

    封装类: ffplay.ffmpeg.ffprobe是安装的ffmpeg路径. import java.io.BufferedReader; import java.io.File; import j ...

  8. 【JAVA】JAVA使用ffmpeg进行视频格式转换以及截图

    JAVA 处理视频文件,需要用到 ffmpeg  这个工具.不需要依赖jar包.无论是在windows服务器还是linux服务器,想要使用 ffmpeg 都需要先安装. 附上Linux下  *.tar ...

  9. 免费音视频格式转换软件

    免费音视频格式转换软件 软件支持各种格式文件的转换:视频,音频,图片,光盘等,支持批量操作. 关注公众号,回复: "格式工厂" 即可免费下载软件.

  10. 苹果mp3软件_推荐超级实用的苹果软件《一,音视频格式转换软件Total Video Converter Pro》...

    推荐超级实用的苹果软件,首推这款Total Video Converter Pro软件,俗称"超级转霸". 好用到什么程度,自然是几乎什么格式都差不多涵盖在里面了. 下面截几张图片 ...

最新文章

  1. git常用命令和场景
  2. Linux(RHEL7.0)下安装nginx-1.10.2
  3. php设置html全局路径_全局:语言包配置
  4. MEET大会报名开启 | 李开复张亚勤等产学研大咖邀你共同见证智能未来
  5. freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1
  6. mysql 排他,mysql 共享锁 排他锁 防插入锁
  7. P1-0:项目框架搭建
  8. ubuntu安装postgreSQL 9.3
  9. JavaScript Promise对象
  10. idea安装2019
  11. 大数据虚拟化零起点-7基础运维第六步-安装Big Data Extensions Plugin
  12. 学生作业信息管理系统
  13. linux进入根目录查找,如何进入Linux根目录??
  14. 白帽子讲web安全读后感2
  15. 计算机正向着巨型化,目前计算机正向着巨型化、()、网络化、智能化方向发展。...
  16. 一日一技|Stata筛选出字符串中非数字的行
  17. kolla 部署openstack train版本(三节点controller+compute+storage)------功能测试
  18. Eclipse安装STS
  19. 马晓:Serverless SSR 在人人视频的落地探索
  20. 叮当快药难寻属于自己的解药

热门文章

  1. sox处理mp3_ffmpeg sox 音频转换 MP3 转 wav
  2. Eclipse中去掉代码中的警告Warn
  3. USGS批量下载影像(Sentinel2/哨兵2/Landsat)数据、bda程序安装-(史上最全讲解)
  4. 浩方对战平台原理分析
  5. 纪念数学家胡世华先生逝世20周年
  6. 项目管理中风险控制的策略
  7. 一分钟读懂马云在互联网大会的万字
  8. 网约车定价策略:手机越贵打车越贵?
  9. PPT怎么母版怎么修改及应用
  10. 为什么编辑器打开PDF文档后提示缺少字体