我有一个12秒的视频,帧速率是每秒30帧。
我想在视频的多个位置应用淡出效果,例如从第 3 秒到第 4 秒以及从第 7 秒到第 8 秒。
看看这个命令。
ffmpeg -i video.mp4 -strict experimental -vf fade=type=out:start_frame=91:nb_frames=29 -y final_out.mp4
上面的命令正确地添加了从第 3 秒到第 4 秒的淡出效果,现在我已触发以下命令
ffmpeg -i video.mp4 -strict experimental -vf fade=type=out:start_frame=91:nb_frames=29 fade=type=out:start_frame=211:nb_frames=29 -y final_out.mp4
and
ffmpeg -i video.mp4 -strict experimental -vf fade=type=out:start_frame=91:nb_frames=29 -y final_out.mp4 fade=type=out:start_frame=211:nb_frames=29
它们均不起作用,得到以下输出
$ ffmpeg -i video.mp4 -strict experimental -vf fade=type=out:start_frame=91:nb_frames=29 fade=type=out:start_frame=211:nb_frames=29 -y final_out.mp4
ffmpeg version N-61041-g52a2138 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 2 2014 05:45:04 with gcc 4.6 (Debian 4.6.3-1)
configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 00:00:15.00, start: 0.000000, bitrate: 172 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x576 [SAR 9:8 DAR 3:2], 168 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
[NULL @ 0x28c0760] Unable to find a suitable output format for 'fade=type=out:start_frame=211:nb_frames=29'
fade=type=out:start_frame=211:nb_frames=29: Invalid argument
视频信息如下
我关注这文档。
有没有办法在多个时间片上应用淡入淡出效果?
提前致谢
$ ffmpeg -i video.mp4
ffmpeg version N-61041-g52a2138 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 2 2014 05:45:04 with gcc 4.6 (Debian 4.6.3-1)
configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 00:00:15.00, start: 0.000000, bitrate: 172 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x576 [SAR 9:8 DAR 3:2], 168 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
At least one output file must be specified
答案1
我不明白你说的“淡出两次”是什么意思,因为一旦淡出,视频就变成黑色,但是这个答案应该可以让你了解如何在同一个输入上执行两次淡出。
所有过滤必须在一个过滤图。本示例将使用淡入淡出视频滤镜淡入前 25 帧,淡出 1000 帧视频的最后 25 帧:
ffmpeg -i input.mp4 -vf "fade=in:0:25,fade=out:975:25" -acodec copy out.mp4
- 这个例子流复制音频,
-acodec copy
而不是重新编码它。 - 查看FFmpeg 和 x264 编码指南以获得正确的输出质量的信息。