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实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
基于python绘制科赫雪花
Jun 22 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 Python
Python的collections模块真的很好用
Mar 01 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
python可视化之颜色映射详解
Sep 15 Python
Django框架中模型的用法
Jun 10 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
Javascript面向对象编程
2012/03/18 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python常用正则表达式符号浅析
2014/08/13 Python
python daemon守护进程实现
2016/08/27 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
Python selenium自动化测试模型图解
2020/04/15 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
自我评价范文分享
2014/01/04 职场文书
优秀教师工作感言
2014/02/16 职场文书
成绩单公证书
2014/04/10 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python