python实现m3u8格式转换为mp4视频格式


Posted in Python onFebruary 28, 2018

开发动机:最近用手机QQ浏览器下载了一些视频,视频越来越多,占用了手机内存,于是想把下载的视频传到电脑上保存,可后来发现这些视频都是m3u8格式的,且这个格式的视频都切成了碎片,存在电脑里不方便查看,于是想把它转换为其他可以直接打开播放的完整视频,到网上找了一些工具,都不怎么好用,后来发现一个手机端的“缓冲合并工具”,倒是可以用,但是合并的视频顺序是乱的,碎片的视频顺序还需要用户手动调整,感觉太耽误时间了,于是自己打算写一个转换工具。

直接上代码:(程序的文件名为:convert_m3u8.py)   

# -*- coding:utf-8 -*- 
import sys 
import os 
from glob import glob 
#获取需要转换的路径 
def get_user_path(argv_dir): 
  if os.path.isdir(argv_dir): 
    return argv_dir 
  elif os.path.isabs(argv_dir): 
    return argv_dir 
  else: 
    return False 
#对转换的TS文件进行排序     
def get_sorted_ts(user_path): 
  ts_list = glob(os.path.join(user_path,'*.ts')) 
  #print(ts_list) 
  boxer = [] 
  for ts in ts_list: 
    if os.path.exists(ts): 
      #print(os.path.splitext(os.path.basename(ts))) 
      file,_ = os.path.splitext(os.path.basename(ts)) 
      boxer.append(int(file)) 
  boxer.sort() 
  #print(boxer) 
  return boxer 
#文件合并   
def convert_m3u8(boxer,o_file_name): 
  #cmd_arg = str(ts0)+"+"+str(ts1)+" "+o_file_name 
  tmp = [] 
  for ts in boxer: 
    tmp.append(str(ts)+'.ts') 
  cmd_str = '+'.join(tmp) 
  exec_str = "copy /b "+cmd_str+' '+o_file_name 
  #print("copy /b "+cmd_str+' '+o_file_name) 
  os.system(exec_str) 
     
     
if __name__=='__main__': 
  #print(sys.argv[1:]) 
  argv_len = len(sys.argv) 
  if argv_len == 3: 
    o_dir,o_file_name =sys.argv[1:] 
    #print(o_dir+":"+o_file_name) 
    user_path = get_user_path(o_dir) 
    #print(user_path) 
    if not user_path: 
      print("您输入的路径不正确,:-("); 
    else: 
      if os.path.exists(os.path.join(user_path,o_file_name)): 
        print('目标文件已存在,程序停止运行。') 
        exit(0) 
      os.chdir(user_path) 
      #convert_m3u8('2.ts','4.ts',o_file_name) 
      boxer = get_sorted_ts(user_path) 
      convert_m3u8(boxer,o_file_name) 
      #print(os.getcwd()) 
  else: 
    print("参数个数非法");

注:代码不多,原理也很简单,就是把各个碎片视频按照顺序合并为一个视频文件。
使用方法如下:

python  convert_m3u8.py    m3u8视频的目录   要转换后文件的名字

其中第一个参数为m3u8视频的目录(m3u8的碎片视频在手机里是隐藏的,需要将隐藏文件显示出来才可以将文件导出到电脑里,在安卓手机里将隐藏文件夹前面的.重命名去掉就可以了),第二个参数为要转换后文件的名字。

python实现m3u8格式转换为mp4视频格式

python实现m3u8格式转换为mp4视频格式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
python实现计算倒数的方法
Jul 11 Python
pandas数值计算与排序方法
Apr 12 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
对python生成业务报表的实例详解
Feb 03 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
jupyter notebook的安装与使用详解
May 18 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
浅谈Python中的私有变量
Feb 28 #Python
python中logging包的使用总结
Feb 28 #Python
深入理解Python爬虫代理池服务
Feb 28 #Python
python实现装饰器、描述符
Feb 28 #Python
python安装教程
Feb 28 #Python
深入理解Python 关于supper 的 用法和原理
Feb 28 #Python
TensorFlow实现RNN循环神经网络
Feb 28 #Python
You might like
星际原理概述
2020/03/04 星际争霸
php5 and xml示例
2006/11/22 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
php经典算法集锦
2015/11/14 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python深入学习之对象的属性
2014/08/31 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Python3 合并二叉树的实现
2019/09/30 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
网上快餐厅创业计划书
2014/02/01 职场文书
2014年法院工作总结
2014/11/24 职场文书
红色经典观后感
2015/06/18 职场文书
同事离别感言
2015/08/04 职场文书