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基础教程之常用运算符
Aug 29 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
Python解决走迷宫问题算法示例
Jul 27 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
详解Django admin高级用法
Nov 06 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 Python
python爬虫快速响应服务器的做法
Nov 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python 接收处理外带的参数方法
2018/12/03 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Django使用rest_framework写出API
2020/05/21 Python
Python3.9新特性详解
2020/10/10 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
业务主管岗位职责范本
2013/12/25 职场文书
平安工地建设方案
2014/05/06 职场文书
招标承诺书
2014/08/30 职场文书
爱的承诺书
2015/01/20 职场文书
加薪申请报告范本
2015/05/15 职场文书
经典祝酒词大全
2015/08/12 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL