【问题标题】:FFMPEG - Adding a full-frame image to the beginning of a videoFFMPEG - 将全帧图像添加到视频的开头
【发布时间】:2014-03-27 23:16:37
【问题描述】:

我尝试了许多不同的方法来尝试从图像文件中创建一个 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】:

    这是一个使用 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"
      

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2019-07-25
      • 2018-06-09
      • 1970-01-01
      相关资源
      最近更新 更多