用python将下载的m4s文件合并为MP4

使用ffmpeg来合成

import subprocess
import json
import time
import os

def run(video_path, audio_path, mp4_path):
    mp4_path = mp4_path.replace(" ", '_')
    cmd_ = "ffmpeg -i " + video_path + " -i " + audio_path + " -codec copy " + mp4_path
    print(cmd_)
    sub = subprocess.Popen(cmd_, shell=True, stdout=subprocess.PIPE)
    result = sub.stdout.read()
    
if __name__ == '__main__':
    file_dir = r"E:\output"  # 需要合并以及输出的文件路径
    for root, dirs, files in os.walk(file_dir):
        if len(dirs) == 0:
            video_path = os.path.join(root, "video.m4s")  # 获取到视频数据流
            audio_path = os.path.join(root, "audio.m4s")  # 获取到音频数据流
            json_path = os.path.join(os.path.dirname(root), "entry.json")  # 获取到json数据信息
            if os.path.exists(json_path):
                with open(json_path, 'r', encoding="utf-8") as f:
                    data = f.readlines()[0]  # json文件,根据需要进行预处理
                try:
                    json_data = json.loads(data)
                    mp4_name = json_data['page_data']['part']  # type:str #获取文章标题
                except Exception as e:
                    print(e, "文章标配获取失败", data, root)
                    mp4_name = "error-" + time.strftime('%Y-%m-%d %H%M%S', time.localtime())
                finally:
                    out_path = mp4_name.split('-')[0]  # 按照标题-分割进行分类
                    if not os.path.exists(os.path.join(file_dir, out_path)):
                        os.mkdir(os.path.join(file_dir, out_path))
                    mp4_path = os.path.join(file_dir, out_path, mp4_name) + ".mp4"
                    if os.path.exists(video_path) and os.path.exists(audio_path):
                        print("查找成功")
                        run(video_path=video_path, audio_path=audio_path, mp4_path=mp4_path)

运行结束,还有待补充:

1.ffmpeg在pycharm运行失败的解决方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值