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 相关文章推荐
python错误处理详解
Sep 28 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
Python中DJANGO简单测试实例
May 11 Python
python基础教程之匿名函数lambda
Jan 17 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
对Python _取log的几种方式小结
Jul 25 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Python基本数据类型之字符串str
Jul 21 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/13 国漫
优化PHP程序的方法小结
2012/02/23 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
自动化职业生涯规划书范文
2014/01/03 职场文书
少儿节目主持串词
2014/04/02 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书