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

打印 上一主题 下一主题

主题 1630|帖子 1630|积分 4890

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

一般情况:偏大的文件为视频,偏小的文件为音频。
情况要求:下载并安装ffmpeg,并配置好情况变量,如下图:

转换代码:

  1. import subprocess
  2. def merge_m4s_to_mp4(video_path, audio_path, output_path):
  3.     """
  4.     使用 FFmpeg 将 m4s 视频和音频流合并为 MP4 文件。
  5.     :param video_path: 视频 m4s 文件路径
  6.     :param audio_path: 音频 m4s 文件路径
  7.     :param output_path: 输出的 mp4 文件路径
  8.     """
  9.     command = [
  10.         "ffmpeg", "-y", "-i", video_path, "-i", audio_path,
  11.         "-c:v", "copy", "-c:a", "aac", "-strict", "experimental", output_path
  12.     ]
  13.    
  14.     try:
  15.         subprocess.run(command, check=True)
  16.         print(f"转换完成: {output_path}")
  17.     except subprocess.CalledProcessError as e:
  18.         print(f"转换失败: {e}")
  19. if __name__ == "__main__":
  20.     # 示例:手动指定文件路径
  21.     video_path='1452544206/1452544206-1-30080.m4s',
  22.     audio_path='1452544206/1452544206-1-30280.m4s'
  23.    
  24.     # 示例调用
  25.     video_file = video_path
  26.     audio_file = audio_path
  27.     output_file = "output222.mp4"
  28.     merge_m4s_to_mp4(video_file, audio_file, output_file)   
复制代码
在上述操纵前,应先将文件头的0字符串都删除,可用notepad++操纵,或用python实行如下代码:
  1. import os
  2. def remove_leading_zeros(file_path, save_path=None, backup=True):
  3.     """
  4.     删除文件头部全部连续的字符'0'
  5.     :param file_path: 文件路径
  6.     :param save_path: 保存路径(默认覆盖原文件)
  7.     :param backup: 是否创建备份
  8.     """
  9.     # 备份机制
  10.     if backup:
  11.         backup_path = file_path + ".bak"
  12.         os.rename(file_path,  backup_path)
  13.         file_path = backup_path
  14.     # 读取二进制内容
  15.     with open(file_path, 'rb') as f:
  16.         content = f.read()
  17.     # 动态检测前导0的数量
  18.     zero_count = 0
  19.     for byte in content:
  20.         if byte == 0x30:  # ASCII字符'0'的十六进制值
  21.             zero_count += 1
  22.         else:
  23.             break  # 遇到非0字符立即终止
  24.     # 截取有效内容
  25.     new_content = content[zero_count:]
  26.     # 保存处理后的文件
  27.     save_path = save_path or file_path.replace(".bak",  "")
  28.     with open(save_path, 'wb') as f:
  29.         f.write(new_content)
  30.     print(f"已删除头部连续{zero_count}个0")
  31. if __name__ == "__main__":
  32.     # 单文件处理示例
  33.     remove_leading_zeros("1476061291/1476061291-1-30280.m4s")
  34.     remove_leading_zeros("1476061291/1476061291-1-100050.m4s")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表