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

将视频m4s文件转换为mp4格式

将视频m4s文件转换为mp4格式

一般情况:偏大的文件为视频,偏小的文件为音频。
环境要求:下载并安装ffmpeg,并配置好环境变量,如下图:
在这里插入图片描述

转换代码:

import subprocess

def merge_m4s_to_mp4(video_path, audio_path, output_path):
    """
    使用 FFmpeg 将 m4s 视频和音频流合并为 MP4 文件。
    :param video_path: 视频 m4s 文件路径
    :param audio_path: 音频 m4s 文件路径
    :param output_path: 输出的 mp4 文件路径
    """
    command = [
        "ffmpeg", "-y", "-i", video_path, "-i", audio_path,
        "-c:v", "copy", "-c:a", "aac", "-strict", "experimental", output_path
    ]
    
    try:
        subprocess.run(command, check=True)
        print(f"转换完成: {output_path}")
    except subprocess.CalledProcessError as e:
        print(f"转换失败: {e}")

if __name__ == "__main__":
    # 示例:手动指定文件路径 

    video_path='1452544206/1452544206-1-30080.m4s',
    audio_path='1452544206/1452544206-1-30280.m4s'
    
    # 示例调用
    video_file = video_path
    audio_file = audio_path
    output_file = "output222.mp4"
    merge_m4s_to_mp4(video_file, audio_file, output_file)    

在上述操作前,应先将文件头的0字符串都删除,可用notepad++操作,或用python执行如下代码:

import os 
 
def remove_leading_zeros(file_path, save_path=None, backup=True):
    """
    删除文件头部全部连续的字符'0'
    :param file_path: 文件路径 
    :param save_path: 保存路径(默认覆盖原文件)
    :param backup: 是否创建备份 
    """
    # 备份机制 
    if backup:
        backup_path = file_path + ".bak"
        os.rename(file_path,  backup_path)
        file_path = backup_path 
 
    # 读取二进制内容 
    with open(file_path, 'rb') as f:
        content = f.read() 
 
    # 动态检测前导0的数量 
    zero_count = 0 
    for byte in content:
        if byte == 0x30:  # ASCII字符'0'的十六进制值 
            zero_count += 1 
        else:
            break  # 遇到非0字符立即终止 
 
    # 截取有效内容 
    new_content = content[zero_count:]
 
    # 保存处理后的文件 
    save_path = save_path or file_path.replace(".bak",  "")
    with open(save_path, 'wb') as f:
        f.write(new_content) 
 
    print(f"已删除头部连续{zero_count}个0")
 
if __name__ == "__main__":
    # 单文件处理示例 
    remove_leading_zeros("1476061291/1476061291-1-30280.m4s")
    remove_leading_zeros("1476061291/1476061291-1-100050.m4s")

http://www.dtcms.com/a/105931.html

相关文章:

  • 慧通测控:汽车RGB氛围灯功能测试介绍
  • 【VM虚拟机ip问题】
  • Javascript代码压缩混淆工具terser详解
  • 在ArcGIS中导入气候tif文件出现 “输入与输出之间的基准面冲突” 警告
  • C++\MFC锁lock从专家到小白
  • 基于银河麒麟桌面服务器操作系统的 DeepSeek本地化部署方法【详细自用版】
  • Etcd用的是Raft算法
  • Linux上位机开发实践(超越MPP去开发产品)
  • 青少年编程与数学 02-014 高中数学知识点 07课题、专业相关性分析
  • Blender模型导入虚幻引擎设置
  • 静态住宅IP的应用、设置及好处
  • 开发相关的一些网址收藏(持续更新中)
  • [原创](Modern C++)现代C++的关键性概念: 如何正确地返回函数指针?
  • 【Linux高级IO(一)】理解五种IO模型
  • MySQL篇(一):慢查询定位及索引、B树相关知识详解
  • springboot整合Thymeleaf web开发出现Whitelabel Error Page
  • R语言——获取数据1
  • Python Websockets库深度解析:构建高效的实时Web应用
  • MySQL和Oracle常见语法差异详解
  • 【Easylive】AppInterceptor和WebAppConfigurer 基于 Token 的请求拦截验证机制
  • 高级java每日一道面试题-2025年3月20日-虚拟化操作系统篇[Docker篇]-如何控制docker容器的启动顺序?
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(12)
  • 文件系统--软硬链接/动静态库
  • C# 窗体应用(.FET Framework ) 打开文件操作
  • 万字解析Spring简易版实现方案!
  • Linux系统安装RabbitMQ
  • Unity中 粒子系统使用整理(一)
  • H.264编码解析与C++实现详解
  • Jenkins详细安装配置部署
  • php根据一个数组里面的元素顺序来排序另外一个数组的的顺序