Image FFMPEG-将全帧图像添加到视频的开头

Image FFMPEG-将全帧图像添加到视频的开头,image,video,ffmpeg,concat,Image,Video,Ffmpeg,Concat,我尝试了许多不同的方法,试图用一个图像文件创建一个10秒的视频文件,并使用了所有与我用来编码视频文件相同的开关和编解码器。但是,当我使用复杂的_过滤器(强制视频进行另一轮转码)以外的任何东西来检测这两个文件时,生成的视频文件已损坏。我相信这是由于ffmpeg从图像创建的10秒剪辑的固有差异,但必须有某种方法使其编码方式与我的视频文件完全相同 下面是我用来将图像转换为10秒视频剪辑的命令(我添加了一个静音mp3,因为我认为在视频的中途启动的音频流会把事情搞砸): 下面是我用来编码视频的命令: ff

我尝试了许多不同的方法,试图用一个图像文件创建一个10秒的视频文件,并使用了所有与我用来编码视频文件相同的开关和编解码器。但是,当我使用复杂的_过滤器(强制视频进行另一轮转码)以外的任何东西来检测这两个文件时,生成的视频文件已损坏。我相信这是由于ffmpeg从图像创建的10秒剪辑的固有差异,但必须有某种方法使其编码方式与我的视频文件完全相同

下面是我用来将图像转换为10秒视频剪辑的命令(我添加了一个静音mp3,因为我认为在视频的中途启动的音频流会把事情搞砸):

下面是我用来编码视频的命令:

ffmpeg -i input.f4v -c:v libx264 -preset slow -g 60 -r 29.97 -crf 16 -c:a libfdk_aac -b:a 256k -cutoff 18000 tmpoutput2.mp4
下面是我用来将两者转换为.ts以准备concat的命令:

ffmpeg -i tmpoutput1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts tmpoutput1.ts
最后是concat(这是我得到疯狂视频腐败的地方,沿途一切看起来都很好):

同样,问题是我已经对所有内容进行了一次转码,我应该能够让它以足够相似的结构进行转码,这样它就可以连接在一起,而不需要在末端附加另一个转码

以前是否有人使用ffmpeg成功地将全帧启动图形添加到视频的正面?我正在使用一个全新的ffmpeg交叉编译,因为我认为这可能是问题所在,但遗憾的是,更新后问题依然存在


谢谢

下面是一个ffmpeg过程,它在源视频上仅使用1个转码:

  • 将图像循环到与源视频格式相同的无声音轨的视频中。包括任何过滤器(例如淡入淡出)

  • [可选]剪切源视频,包括任何过滤器

    c:\ffmpeg\ffmpeg.exe -y -i "test_source.mp4" -af "afade=t=in:st=0:d=0.5,afade=t=out:st=29.5:d=0.5" -vf "fade=t=in:st=0:d=0.5,fade=t=out:st=29.5:d=0.5" -c:v libx264 -preset slow -profile:v high -r 29.97 -crf 16 -pix_fmt yuv420p -c:a libfdk_aac -b:a 256k -cutoff 18000 -ss 0 -t 30 -shortest "~tmptest_final_fade2.mp4"
    
  • [如果源已经是mpegts,则不需要此选项]如果源不是可连接格式,请将其转换为mpegts。本例使用mp4作为源格式,无损且快速

    c:\ffmpeg\ffmpeg.exe -i "~tmptest_final_fade1.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts "~tmptest_final1.ts"
    c:\ffmpeg\ffmpeg.exe -i "~tmptest_final_fade2.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts "~tmptest_final2.ts"
    
    c:\ffmpeg\ffmpeg.exe -y -i "concat:~tmptest_final_fade1.ts|~tmptest_final_fade2.ts" -c copy -bsf:a aac_adtstoasc "test_final.mp4"
    
  • 连接2个视频文件,并可选地将包装器更改回mp4。这一步也是无损和快速的

    c:\ffmpeg\ffmpeg.exe -i "~tmptest_final_fade1.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts "~tmptest_final1.ts"
    c:\ffmpeg\ffmpeg.exe -i "~tmptest_final_fade2.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts "~tmptest_final2.ts"
    
    c:\ffmpeg\ffmpeg.exe -y -i "concat:~tmptest_final_fade1.ts|~tmptest_final_fade2.ts" -c copy -bsf:a aac_adtstoasc "test_final.mp4"
    
  • c:\ffmpeg\ffmpeg.exe -y -i "concat:~tmptest_final_fade1.ts|~tmptest_final_fade2.ts" -c copy -bsf:a aac_adtstoasc "test_final.mp4"