ffmpeg command
将需要触发的视频转为图片:ffmpeg -i *.mp4 -f image2 %05d.jpg
ffmpeg -i *.mp4 -c:v libx265 -c:a copy 1.mp4
VIP:
ffmpeg -f image2 -i %05d.jpg output.mp4
ffmpeg -i 1.mp4 -vf "scale=1920:1080" -q:v 20 -b:v 2M -c:v libx265 -c:a copy 2.mp4
ffmpeg -framerate 25 -f image2 -loop 1 -i 00001.jpg -vcodec libx265 -pix_fmt yuv420p -s 1920x1080 -t 60 -y 11.mp4
3.视频合成
(1)新建一个video.txt文件,文件的内容是需要合并的视频名称,内容格式为
file 'pre.mp4'
file 'cnt.mp4'
file 'pre.mp4'
跳绳结束后,补一段不计数的视频,这样过6s后自动结束,发送成绩
(2)拼接视频:ffmpeg -f concat -i video.txt -c copy concat.mp4
file_content_2 = '''
file 'pre.mp4'
file ''
'''
def patch_video_first_frame(duration):
work_dir = r'D:\99_TEST_VIDEO\0_sit_forward_cheat\5_济南历城区华山第四小学_220'
work_dir_list = os.listdir (work_dir)
cmd = f'cd {work_dir}'
result, errors, return_code = cmd_excute (cmd)
LOG.info (f'result:{result}, errors:{errors}, return_code:{return_code}')
out_dir = os.path.join(work_dir, 'output')
if not os.path.exists (out_dir):
os.makedirs (out_dir)
final_dir = os.path.join(work_dir, 'final_test')
if not os.path.exists (final_dir):
os.makedirs (final_dir)
convert to ffmpeg -i 1.mp4 -vf "scale=1920:1080" -q:v 20 -b:v 2M -c:v libx265 -c:a copy 2.mp4
for file in work_dir_list:
if '.mp4' not in file:
continue
source_file = os.path.join (work_dir, file)
target_file = os.path.join (work_dir, 'output', file)
cmd = f'ffmpeg -i {source_file} -vf "scale=1920:1080" -q:v 20 -b:v 2M -c:v libx265 -c:a copy {target_file}'
result, errors, return_code = cmd_excute (cmd)
LOG.info (f'result:{result}, errors:{errors}, return_code:{return_code}')
work_dir_list = os.listdir (out_dir)
work_file = os.path.join (out_dir, 'video.txt')
for file in work_dir_list:
if '.mp4' not in file:
continue
source_file = os.path.join (out_dir, file)
# ffmpeg -i *.mp4 -f image2 %05d.jpg
cmd = f'ffmpeg -i {source_file} -f image2 {out_dir}/%05d.jpg'
result, errors, return_code = cmd_excute (cmd)
ffmpeg -framerate 25 -f image2 -loop 1 -i 00001.jpg -vcodec libx265 -pix_fmt yuv420p -s 1920x1080 -t 60 -y 11.mp4
cmd = f'ffmpeg -framerate 25 -f image2 -loop 1 -i {out_dir}00001.jpg -vcodec libx265 -pix_fmt yuv420p -s 1920x1080 -t {duration} -y {out_dir}/pre.mp4'
result, errors, return_code = cmd_excute (cmd)
tmp_content = file_content_2.replace('''', f''{file}'')
print (f'file:{file}, tmp_content:{tmp_content}')
readFile.wrtie_file(work_file, tmp_content)
final_file = os.path.join(final_dir, file)
cmd = f'cd {out_dir} && ffmpeg -f concat -i {work_file} -c copy {final_file}'
result, errors, return_code = cmd_excute(cmd)
print (f'result:{result}, errors:{errors}, return_code:{return_code}')
cmd = f'cd {out_dir} && rm -rf *.jpg'
result, errors, return_code = cmd_excute(cmd)
print (f'result:{result}, errors:{errors}, return_code:{return_code}')
return

浙公网安备 33010602011771号