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保存网页上的图片或者保存页面为截图
Mar 05 Python
python爬取51job中hr的邮箱
May 14 Python
Python Django使用forms来实现评论功能
Aug 17 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
python操作oracle的完整教程分享
Jan 30 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
python实现贪吃蛇游戏
Mar 21 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
python能自学吗
Jun 18 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 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 单引号与双引号的区别
2009/11/24 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
python实现网站的模拟登录
2016/01/04 Python
深入理解Django-Signals信号量
2019/02/19 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
django ajax发送post请求的两种方法
2020/01/05 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
客户经理竞聘演讲稿
2014/05/15 职场文书
党员领导干部承诺书
2014/05/28 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
师德师风自查材料
2014/10/14 职场文书
小学优秀班主任材料
2014/12/17 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
python双向链表实例详解
2022/05/25 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript
CSS的calc函数用法小结
2022/06/25 HTML / CSS