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的Bottle框架的一些使用技巧介绍
Apr 08 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
详解Python3 基本数据类型
Apr 19 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
python模拟实现分发扑克牌
Apr 22 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
Django返回HTML文件的实现方法
Sep 17 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
python爬取某网站原图作为壁纸
Jun 02 Python
Python+tkinter实现高清图片保存
Mar 13 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
php中函数的形参与实参的问题说明
2010/09/01 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python数据可视化图实现过程详解
2020/06/12 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
建房协议书
2014/04/11 职场文书
家长通知书教师评语
2014/04/17 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
公司员工培训管理制度
2015/08/04 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python