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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python进程间通信用法实例
Jun 04 Python
浅析使用Python操作文件
Jul 31 Python
python音频处理用到的操作的示例代码
Oct 27 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
windows下python安装小白入门教程
Sep 18 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
Django通过json格式收集主机信息
May 29 Python
pandas map(),apply(),applymap()区别解析
Feb 24 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
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP7多线程搭建教程
2017/04/21 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python中zfill()方法的使用教程
2015/05/20 Python
使用python绘制常用的图表
2016/08/27 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
聘用意向书范本
2014/04/01 职场文书
开业庆典活动策划方案
2014/09/21 职场文书