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的Django框架中加载模版的方法
Jul 16 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
六行python代码的爱心曲线详解
May 17 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
快速创建python 虚拟环境
Nov 28 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 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
自己前几天写的无限分类类
2007/02/14 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
JavaScript 异步调用
2017/10/25 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python中使用PDB库调试程序
2015/04/05 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
店长岗位职责
2013/11/21 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
公证委托书格式
2014/09/13 职场文书
中学生的1000字检讨书
2014/10/11 职场文书