【快速生成短视频】ffmpeg合并多个视频

1,133 阅读1分钟

【快速生成短视频】ffmpeg合并多个视频

www.cnblogs.com/roronoa-sqd…

实例1: 把4个视频(1.f4v, 2.f4v, 3.f4v, 4.f4v)合并成一个文件(out.mp4)

基本无损,而且速度飞快!

#-vcodec copy -acodec copy   ==   -c copy

ffmpeg.exe -i 1.f4v -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts      

ffmpeg.exe -i 2.f4v -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts

ffmpeg.exe -i 3.f4v -vcodec copy -acodec copy -vbsf h264_mp4toannexb 3.ts

ffmpeg.exe -i 4.f4v -vcodec copy -acodec copy -vbsf h264_mp4toannexb 4.ts

ffmpeg.exe -i "concat:1.ts|2.ts|3.ts|4.ts" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4

实例2: 有若干个文件053.mp4,054.mp4,...,065.mp4, 合并成一个MP4文件

# -*- coding: utf-8 -*-

import os

#先获取这些MP4文件,转换成ts格式
for each in os.listdir():
    if each[-3:] == 'mp4':
        os.system('ffmpeg.exe -i %s -c copy -vbsf h264_mp4toannexb %s.ts' % (each, each[:-4]))

#再把这些ts文件合并成MP4文件
li = ['0%d.ts'%i for i in range(53,66)]
input_file = '|'.join(li)
command = 'ffmpeg.exe -i "concat:%s" -c copy -absf aac_adtstoasc out.mp4' % input_file

os.system(command)

测试示例:

#coding=utf-8
import os

# 获取ffmpeg目录绝对路径
global FFmpeg
FFmpeg = os.path.abspath('./ffmpeg/ffmpeg')

video_path = "E:\pyvideo\TestVideo\\1"

# 先获取这些MP4文件,转换成ts格式
for each in os.listdir(video_path):
    if each[-3:] == 'mp4':
        print(' -i %s\\%s -c copy -vbsf h264_mp4toannexb %s\\%s.ts' % (video_path, each, video_path, each[:-4]))
        os.system(FFmpeg + ' -i %s\\%s -c copy -vbsf h264_mp4toannexb %s\\%s.ts' % (video_path, each, video_path, each[:-4]))



# 再把这些ts文件合并成MP4文件
li = [video_path+'\\'+str(int(i+1))+'.ts' for i in range(4)]
input_file = '|'.join(li)
command = FFmpeg + ' -i "concat:%s" -c copy -absf aac_adtstoasc %s\\out.mp4' % (input_file, video_path)

os.system(command)