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 10 Python
python计算方程式根的方法
May 07 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python内存读写操作示例
Jul 18 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
python基础之函数的定义和调用
Oct 24 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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
DedeCms模板安装/制作概述
2007/03/11 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
Python 探针的实现原理
2016/04/23 Python
Python迭代和迭代器详解
2016/11/10 Python
Python合并多个Excel数据的方法
2018/07/16 Python
python遍历小写英文字母的方法
2019/01/02 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
小学运动会表扬稿
2014/01/19 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
创建文明城市标语
2014/06/16 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
个人培训总结
2015/03/05 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python