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脚本
Feb 10 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
python3爬取各类天气信息
Feb 24 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
Python用access判断文件是否被占用的实例方法
Dec 17 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 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
PHP之COOKIE支持详解
2010/09/20 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python实现的几个常用排序算法实例
2014/06/16 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
关于python写入文件自动换行的问题
2018/06/23 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
敬老文明号事迹材料
2014/01/16 职场文书
数学教育专业求职信
2014/07/22 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
初中生毕业评语
2014/12/29 职场文书
市场督导岗位职责
2015/04/10 职场文书
2016公司年会通知范文
2015/04/25 职场文书