功能:这里实现视频开始有一段3s总体介绍,每段视频开始前显示一张介绍本段视频内容的图片,最后将四段视频进行拼接
文件:
audio_handle.txt 用于音频合成
exe.bat 视频合成脚本
ffmpeg 合成工具
get_audio.mp4 无声视频,用于获取过渡时音频
src_part*.mp4 用于拼接的视频
*.png 过渡过程插入的图片
video_handle.txt 用于视频拼接
使用方法:
按自己需求修改exe.bat、audio_handle.txt、video_handle.txt文件,双击 exe.bat 执行。最后生成的视频文件为output.mp4。
exe.bat :
ffmpeg -i src_part1.mp4 -b:v 11500k -s 1080*720 mid1.h264 % 生成h264视频数据 %
ffmpeg -i src_part2.mp4 -b:v 11500k -s 1080*720 mid2.h264
ffmpeg -i src_part3.mp4 -b:v 11500k -s 1080*720 mid3.h264
ffmpeg -i src_part4.mp4 -b:v 11500k -s 1080*720 mid4.h264
ffmpeg -i src_part1.mp4 mid1.mp3 % 生成mp3音频数据 %
ffmpeg -i src_part2.mp4 mid2.mp3
ffmpeg -i src_part3.mp4 mid3.mp3
ffmpeg -i src_part4.mp4 mid4.mp3
ffmpeg -i get_audio.mp4 void.mp3 % 无声音频数据 %
ffmpeg -i void.mp3 -t 3 a_3.mp3 % 3s无声音频数据 %
ffmpeg -i void.mp3 -t 1.8 a_1_8.mp3 % 1.8s无声音频数据 %
ffmpeg -loop 1 -f image2 -i head.png -vcodec libx264 -r 30 -t 4 head.mp4 % 插入视频 %
ffmpeg -loop 1 -f image2 -i tip1.png -vcodec libx264 -r 30 -t 3 insert1.mp4
ffmpeg -loop 1 -f image2 -i tip2.png -vcodec libx264 -r 30 -t 3 insert2.mp4
ffmpeg -loop 1 -f image2 -i tip3.png -vcodec libx264 -r 30 -t 3 insert3.mp4
ffmpeg -loop 1 -f image2 -i tip4.png -vcodec libx264 -r 30 -t 3 insert4.mp4
ffmpeg -loop 1 -f image2 -i tail.png -vcodec libx264 -r 30 -t 4 tail.mp4
ffmpeg -i mid1.h264 -b:v 11500k mid1.mpg % 转化为mpg格式 %
ffmpeg -i mid2.h264 -b:v 11500k mid2.mpg
ffmpeg -i mid3.h264 -b:v 11500k mid3.mpg
ffmpeg -i mid4.h264 -b:v 11500k mid4.mpg
ffmpeg -i head.mp4 -b:v 1000k -s 1080*720 -t 3 head.mpg
ffmpeg -i insert1.mp4 -b:v 1000k -s 1080*720 -t 2 insert1.mpg
ffmpeg -i insert2.mp4 -b:v 1000k -s 1080*720 -t 2 insert2.mpg
ffmpeg -i insert3.mp4 -b:v 1000k -s 1080*720 -t 2 insert3.mpg
ffmpeg -i insert4.mp4 -b:v 1000k -s 1080*720 -t 2 insert4.mpg
ffmpeg -i tail.mp4 -b:v 1000k -s 1080*720 -t 2 tail.mpg
ffmpeg -f concat -i audio_handle.txt -c copy dest.mp3 % 音频拼接 %
ffmpeg -f concat -i video_handle.txt -c copy dest.mp4 % 视频拼接 %
ffmpeg -i dest.mp3 -i dest.mp4 -b:v 11500k output.mp4 % 音视频合成 %
del *.h264 % 删除中间文件 %
del *.mp3
del *.mpg
del head.mp4
del insert1.mp4
del insert2.mp4
del insert3.mp4
del insert4.mp4
del tail.mp4
del dest.mp4
audio_handle.txt :
file 'a_3.mp3' % 3s的开头 %
file 'a_1_8.mp3' % 1.8s 第一段视频介绍时间 %
file 'mid1.mp3' % 第一段音频 %
file 'a_1_8.mp3' % 1.8s 第二段音频介绍时间 %
file 'mid2.mp3' % ...... %
file 'a_1_8.mp3'
file 'mid3.mp3'
file 'a_1_8.mp3'
file 'mid4.mp3'
file 'a_1_8.mp3'
video_handle.txt:
file 'head.mpg' % 3s 总体开头 %
file 'insert1.mpg' % 第一段视频介绍 %
file 'mid1.mpg' % 第一段拼接视频 %
file 'insert2.mpg' % 第二段视频介绍 %
file 'mid2.mpg' % ...... %
file 'insert3.mpg'
file 'mid3.mpg'
file 'insert4.mpg'
file 'mid4.mpg'
file 'tail.mpg'
-----------------------------------------------------------------------------------------------------------------------------------------
出现的问题及解决方法:
问题:直接用 mp4 视频进行拼接,文件输出出错,生成的视频不能播放。
解决:将 mp4 格式进行转换,生成 mpg 格式再进行拼接则能正常播放。
问题:用图片生成的 mp4 视频文件与源视频进行拼接时出现错误,音频数据丢失。
解决:将 mp4 音视频分成音频数据和视频数据,最后再进行拼接。
问题:最后合成的音视频播放不同步。
解决:用 ffprobe 查看音视频长度,将过渡的时间改为1.8s,调节音频码率。