当前位置: 首页 > news >正文

Python+FFmpeg/CMD根据m3u8合并ts文件

出处不详,原版忘记在哪里找到的了,已做修改

首先说一下注意事项:

  • 手机直接连在电脑上,可以复制文件,但是不能够通过命令行访问。其原因大概是没有挂载盘符,导致其路径一直在/此电脑下面。

  • FFmpeg的安装等不再赘述,我这里已经安装好了。而且这里的FFmpeg已经加入环境变量,即全局可调用。如果没有加入环境变量,则需要通过安装路径/ffmpeg.exe或者进入安装文件夹,通过.\ffmpeg.exe来调用

应该是两个思路:

  • 删掉m3u8当中的ts文件路径,拼接文件名,然后用CMD的bat命令copy /b将这些文件合并,设定输出格式为MP4

  • 更改m3u8当中的ts文件路径为实际路径,然后用FFmpeg一行命令合并

第一种方式如下:

import os
import threading
import time
import json# 读取m3u8文件
def read_file():f=open('D:/X-code/download/video/index.m3u8')text_list=f.readlines()files = []for i in text_list:if i.find('#EX')==-1: #有#EXfind返回0,无-1files.append(i)# 收集ts文件路径和在视频当中对应的位置f.close()tmp = []for file in files[0:len(files)]:tmp.append(file.replace("\n","").replace("/storage/emulated/download/video_35222/",""))# 删掉ts文件的路径os.chdir("D:/X-code/download/video/")  # 用于改变当前工作目录到指定的路径shell_str = '+'.join(tmp)# 将处理结果连接起来# 由于忘记那时候处理的文件的样子# 所以此时并不清楚为何要将处理结果连接起来# 似乎是为了生成FFmpeg的命令return shell_str# 返回生成的命令def thread(shell_str):time.sleep(2)# windows窗口命令——(copy/b)文件无缝拼接隐藏shell_str = 'copy /b ' + shell_str + ' 1.mp4'# os模块中的system()函数可以方便地运行其他程序或者脚本os.system(shell_str)print('---子线程结束---')# 好像是一个子线程的操作?# 不太清楚,忘记当时是怎么处理的了def gather():shell_str=files=read_file()# 读取文件,生成命令t1 = threading.Thread(target=thread(shell_str))# 执行命令t1.setDaemon(True)t1.start()t1.join(timeout=1)#不填就是等待子线程结束# 似乎是为了将手机缓存的文件路径,改为电脑上的路径
def altpath():f=open('D:/X-code/download/index.m3u8',mode='r')text_list=f.readlines()f.close()tmp = []for i in text_list:tmp.append(i.replace("storage/emulated/download/video_35222/","D:/X-code/download/"))f=open('D:/X-code/download/index.m3u8',mode='w')f.writelines(tmp)f.close()if __name__ == "__main__":altpath()#gather()

第二种方式:

ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy 1.mp4
# 这个命令是用FFmpeg来合并
# 用FFmpeg的话,直接修改m3u8文件当中ts的实际路径
# 然后在该文件夹下进入命令行,一行命令即可

一些参考文献:

windows窗口命令——(copy/b)文件无缝拼接隐藏

(copy/b)无缝拼接命令+实例应用

http://www.jsqmd.com/news/187775/

相关文章:

  • sqlmap 常用
  • Android在子线程更新UI
  • Python+FFmpeg提取哔哩哔哩安卓缓存
  • 2026玉溪婚纱摄影推荐,全玉溪主流商家星级综合排名(多维度权威测评) - 提酒换清欢
  • std::future超时功能落地C++26:3个你不能错过的实战技巧
  • JavaSE——封装
  • SegmentFault提问互动:以答疑形式传播HunyuanOCR价值
  • windows虚拟机宝塔设置网站本地域名
  • HunyuanOCR支持端到端文档问答?实测PDF内容交互能力
  • 揭秘C++负载均衡算法:如何在分布式环境中实现毫秒级响应
  • 轻量化OCR新选择:腾讯HunyuanOCR在Jupyter中的界面推理实践
  • UEVR经典作品 独家模组 (TOP级别)
  • 使用PyCharm开发HunyuanOCR插件时的环境配置建议
  • 【C++26重大更新】:std::future超时支持如何改变异步编程格局?
  • 如何利用单北斗GNSS实现水库变形监测效果提升?
  • Obsidian插件开发设想:本地OCR识别图片内文字
  • Kubernetes集群中部署HunyuanOCR实现高可用OCR服务
  • QSocketNotifier深度技术报告:架构解析、跨平台实现与高级应用范式
  • 腾讯混元OCR模型在复杂票据识别中的应用案例分享
  • 还在为论文查重爆表发愁?这7款AI工具实测,5分钟生成万字低AIGC率论文!
  • Rust能否完全取代C++?三大真实项目对比数据曝光(内存安全领域已悄然变天)
  • CSDN官网技术帖推荐:腾讯混元OCR在实际项目中的落地经验
  • vLLM加速版脚本优势明显:HunyuanOCR推理速度提升分析
  • C++网络编程兼容性难题:如何在Windows和Linux间实现无缝迁移?
  • Dify低代码平台连接HunyuanOCR实现智能文档处理工作流
  • 飞书文档增强功能:粘贴图片自动提取文字并插入正文
  • 夸克网盘直链下载助手与OCR结合?提取链接中的关键信息
  • 深度测评9个论文写作工具,一键生成论文工具助继续教育学生轻松完成毕业论文!
  • 批量图像处理性能测试:HunyuanOCR每秒处理多少张图?
  • 金山文档在线协作时能否实时OCR?技术可行性分析