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自动重试HTTP连接装饰器
Apr 28 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
python中正则的使用指南
Dec 04 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
pandas 层次化索引的实现方法
Jul 06 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
PyCharm第一次安装及使用教程
Jan 08 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
Python DES加密实现原理及实例解析
Jul 17 Python
Python 使用生成器代替线程的方法
Aug 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
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP引用(&)各种使用方法实例详解
2014/03/20 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Python中获取网页状态码的两个方法
2014/11/03 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python实战教程之自动扫雷
2018/07/13 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
浅析python参数的知识点
2018/12/10 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
python利用opencv实现颜色检测
2021/02/23 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
医院护士的求职信范文
2013/12/26 职场文书
签约仪式主持词
2014/03/19 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
作文评语怎么写
2014/12/25 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS