功能需求:
1、插入的片头可以时图片或视频。
图片格式暂时未jpg
视频格式为mp4。
可能存在的问题:
1)、图片需要先转换成ts文件:增加视频和音频。
2)、mp4文件可能无声音。
3)、片头片尾的参数与录制视频的参数不匹配:导致连接过程可能会黑屏。
首先参数统一
1、如何加快编码 h264
libx264
-c:v libx264 -preset ultrafast -tune zerolatency -crf 23 -preset ultrafast 可以加快编码速度。 -tune zerolatency 启用zerolatency调整,降低编码延迟 -crf 23 :调整视频质量 2、如何生成静音视频 -f lavfi -t 5 -i anullsrc
3、如何判断一个mp4文件是否没有声音。
result_opening_audio=$(ffprobe -v error -select_streams a -show_entries stream=codec_name -of default=nw=1:nk=1 $insert_opening) if [[ -n $result_opening_audio ]] ; then echo "have audio" ionice -c 1 -n 0 ffmpeg -y -ss 0 -i $insert_opening -vf "scale=$insert_width:$insert_height,format=yuv420p" -r 15 -c:v libx264 -preset ultrafast -tune zerolatency -crf 23 -c:a aac -b:a 96k -ar 48000 -t $insert_opening_duration ${j}/insert_opening_1.ts & else echo "only video" ionice -c 1 -n 0 ffmpeg -y -ss 0 -i $insert_opening -f lavfi -i anullsrc -vf "scale=$insert_width:$insert_height,format=yuv420p" -r 15 -c:v libx264 -preset ultrafast -tune zerolatency -crf 23 -c:a aac -b:a 96k -ar 48000 -t $insert_opening_duration ${j}/insert_opening_1.ts & fi4、如何让一张图片指定时长的视频
ionice -c 1 -n 0 ffmpeg -y -framerate 15 -loop 1 -i $insert_opening -f lavfi -t $insert_opening_duration -i anullsrc -vf "scale=$insert_width:$insert_height,format=yuv420p" -r 15 -c:v libx264 -preset ultrafast -tune zerolatency -crf 23 -c:a aac -ar 48000 -shortest ${j}/insert_opening_1.ts &
5、如何用ffmpeg -f concat 拼接ts文件:
ionice -c 1 -n 0 ffmpeg -y -f concat -i $j/tslists.txt -c copy ${v}_MP4/$filename.mp4 & 注意点:1)、首个ts文件:视频和声音都得具备,否则,后面视频不正常。 2)、不同类型的ts文件连接时,参数要保持一致:分辨率,等。如果分辨率不一致,连接过程,用vlc看会是黑屏。 连接过程中的时间戳不一致不要紧。 3)tslist.txt 格式 ffmpeg -y -f concat file '0.ts' file '1.ts' ffmpeg -y -f concat -safe 0 那格式就要变:变成绝对路劲 file '/record/0.ts' file '/record/1.ts'
其他技巧1:重新编码,就不用考虑其他问题了,但是时间很慢,不推荐
ionice -c 1 -n 0 ffmpeg -y -f concat -segment_time_metadata 1 -i ${j}/tslists_end.txt -vf select=concatdec_select -af aselect=concatdec_select,aresample=async=1 ${j}/insert_ending.ts
其他技巧2:如何重新设置一个文件开始时间点
ffmpeg -y -i input.ts -c copy -muxdelay 0 -muxpreload 0 output.ts
讲解FFMPEG H264/H265 编码延迟问题_ffmpeg 解码延迟-CSDN博客
一些简单详细的操作看下面这个博客:
标签:insert,片头,ffmpeg,opening,片尾,ts,ionice,zerolatency From: https://www.cnblogs.com/yzrStart/p/18143920