使用ffmpeg 插入片头片尾(指定时长)
功能需求:
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 &
fi
4、如何让一张图片指定时长的视频
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文件:视频和声音都得具备,否则,后面视频不正常。
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博客
一些简单详细的操作看下面这个博客:
分类:
ffmpeg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端