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

问题描述 投票:2回答:1

我尝试了许多不同的方法来尝试从图像文件中创建10秒的视频文件,并使用了与编码视频文件时相同的所有开关和编解码器。但是,当我使用complex_filter(这会迫使视频通过另一轮转码)以外的任何东西来连接两者时,生成的视频文件已损坏。我认为这是由于ffmpeg从图像创建的10秒剪辑的固有差异,但是必须有某种方法可以使它以与我的视频文件完全相同的方式进行编码。

这是我用来将图像转换成10秒钟视频剪辑的命令(我添加了一个无声mp3,因为我认为从视频开始出现的音频流会使事情变得混乱):

ffmpeg -loop 1 -i splash.jpg -i silence.mp3 -c:v libx264 -preset slow -g 60 -r 29.97 -crf 16 -c:a libfdk_aac -b:a 256k -cutoff 18000 -t 5 tmpoutput1.mp4

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

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 -i "concat:tmpoutput1.ts|tmpoutput2.ts" -c copy output.mp4

再次,问题是我已经对所有内容进行了一次代码转换,我应该能够使它以足够类似的结构进行代码转换,以便可以将其连接起来而无需在结尾加上其他代码转换。

以前有人使用ffmpeg成功地将全屏启动图形添加到视频的开头吗?我正在使用ffmpeg的全新交叉编译,因为我认为可能是问题所在,但是可惜,问题在更新后仍然存在。

谢谢!

image video ffmpeg concat
1个回答
0
投票

这里是使用ffmpeg的进程,仅在源视频上使用1个转码:

  1. 将图像放大成具有无声音频轨的视频,该音频轨的格式与我的源视频相同。包括所有过滤器(例如淡入淡出)

    c:\ffmpeg\ffmpeg.exe -loop 1 -i "test_image.png" -i silence.mp3 -vf "fade=t=in:st=0:d=0.5,fade=t=out:st=4.5:d=0.5,scale=1920x1080" -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 -t 5 "~tmptest_final_fade1.mp4"
    
  2. [[可选]剪切您的源视频,包括所有过滤器

    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"
    
  3. [[如果源文件已经是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"
    
  4. 连接您的2个视频文件,并有选择地将包装器改回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"
    
© www.soinside.com 2019 - 2024. All rights reserved.