我想用 ffmpeg 制作动画,如图所示。动画长度必须为 3 秒。视频开头放大 0.5 秒 向左滑动 1 秒 向右滑动 1 秒 缩小 0.5 秒。我有 3 张图片。这可能吗?
我正在尝试 ffmpeg (python 或 php 或 msdos)
我想像原始源一样导出每一帧,在 webm 视频中是 alpha/透明视频轨道,如果我尝试使用基本命令导出,将以黑色背景导出。
ffmpeg \
-hide_banner \
-loglevel error\
-stats \
-i ${DIRECTORY_CONVERT_VIDEO_TO_FRAMES}${videofile} \
-vf "scale=${new_width}:${new_height}" \
"${DIRECTORY_CONVERTED_FRAMES}"%04d.png
我添加了-c:v png
,-q:v 0
但format=rgba
效果还是一样。
ffmpeg \
-hide_banner \
-loglevel error \
-stats \
-i video/ok.webm \
-vf "scale=${new_width}:${new_height},format=rgba" \
-c:v png \
-q:v 0 \
"${DIRECTORY_CONVERTED_FRAMES}"%04d.png
请帮我。我忘了,视频元数据:
ffprobe -show\_streams video/ok.webm
ffprobe version n6.1.1 Copyright (c) 2007-2023 the FFmpeg developers
built with gcc 13.2.1 (GCC) 20230801
configuration: --prefix=/usr --disable-debug --disable-static --disable-strippi
ng --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore\_amrnb --enable-libopencore\_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, matroska,webm, from 'video/ok.webm':
Metadata:
ENCODER : Lavf60.16.100
Duration: 00:00:05.00, start: 0.000000, bitrate: 2580 kb/s
Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv, progressive), 600x1040, SAR 1:
1 DAR 15:26, 30 fps, 30 tbr, 1k tbn Metadata:
alpha\_mode : 1
ENCODER : Lavc60.31.102 libvpx-vp9
DURATION : 00:00:05.000000000
\[STREAM\]
index=0
codec\_name=vp9
codec\_long\_name=Google VP9
profile=Profile 0
codec\_type=video
codec\_tag\_string=\[0\]\[0\]\[0\]\[0\]
codec\_tag=0x0000
width=600
height=1040
coded\_width=600
coded\_height=1040
closed\_captions=0
film\_grain=0
has\_b\_frames=0
sample\_aspect\_ratio=1:1
display\_aspect\_ratio=15:26
pix\_fmt=yuv420p
level=-99
color\_range=tv
color\_space=unknown
color\_transfer=unknown
color\_primaries=unknown
chroma\_location=unspecified
field\_order=progressive
refs=1
id=N/A
r\_frame\_rate=30/1
avg\_frame\_rate=30/1
time\_base=1/1000
start\_pts=0
start\_time=0.000000
duration\_ts=N/A
duration=N/A
bit\_rate=N/A
max\_bit\_rate=N/A
bits\_per\_raw\_sample=N/A
nb\_frames=N/A
nb\_read\_frames=N/A
nb\_read\_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing\_impaired=0
DISPOSITION:visual\_impaired=0
DISPOSITION:clean\_effects=0
DISPOSITION:attached\_pic=0
DISPOSITION:timed\_thumbnails=0
DISPOSITION:non\_diegetic=0
DISPOSITION:captions=0
DISPOSITION:descriptions=0
DISPOSITION:metadata=0
DISPOSITION:dependent=0
DISPOSITION:still\_image=0
TAG:alpha\_mode=1
TAG:ENCODER=Lavc60.31.102 libvpx-vp9
TAG:DURATION=00:00:05.000000000
\[/STREAM\]
我想在 Safari 中制作透明视频,但 Safari 不支持 WebM,只支持具有 alpha 透明度的 H265。
根据这篇文章,我使用了 Shutter Encoder,但只有它的某些版本可以在 Mac 上实现此目的。
我想在 Linux PC 上使用 ffmpeg,而不是在 Mac 上使用 Shutter Encoder。快门编码器在后台使用以下命令:
ffmpeg -threads 0 -hwaccel none -i input.mov -c:v hevc_videotoolbox -alpha_quality 1 -b:v 1000k -profile:v main -level 5.2 -map v:0 -an -pix_fmt yuva420p -sws_flags bicubic -tag:v hvc1 -metadata creation_time=2024-04-14T14:53:08.734684Z -y output.mp4
在我的电脑上产生以下输出:
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Unrecognized option 'alpha_quality'.
Error splitting the argument list: Option not found
当谷歌搜索“无法识别的选项'alpha_quality'”时,没有结果,我觉得很奇怪。
发生了什么事,如何在没有 Shutter Encoder 的情况下使 ffmpeg 达到此目的?
我需要从输出轨道中删除歌词标签。
曲目信息:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (mp3 (mp3float) -> mp3 (libmp3lame))
Output #0, mp3, to 'D:\My_music\Music_no_lyrics.mp3':
Metadata:
TIT2 : Music
lyrics-eng : _
: |
: |
: | I want remove this tag
: |
: musics.org _|
TALB : Classic Musics
TCON : Classic
TPE1 : Music
TSSE : Lavf59.17.102
我的命令:
ffmpeg -hide_banner -i "D:\My_music\Music.mp3" -c:v copy -id3v2_version 3 -metadata lyrics-eng="" -acodec mp3 -b:a 320 -ar:a 44100 "D:\My_music\Music_no_lyrics.mp3"
我怎样才能做到这一点?
我正在尝试在 Windows 上使用 ffmpeg 为 .ismv 文件生成 .ism 和 .ismc 文件。但是,当我运行命令时:
ffmpeg.exe ismindex -n myvideo myvideo.ismv
我一直遇到以下错误:
[AVFormatContext @ 00000281781fef40] 无法选择“ismindex”的输出格式;使用标准扩展名作为文件名或手动指定格式。[out#0 @ 000002817822a780] 初始化 ismindex 的复用器时出错:无效参数打开输出文件 ismindex 时出错。打开输出文件时出错:参数无效
我已经检查了文档和各种论坛以寻求解决方案,但没有找到任何可以解决这些问题的内容。有人可以指导我如何在 Windows 上使用 ffmpeg 正确生成 .ism 和 .ismc 文件吗?
我试图将图像叠加在视频的 X,Y 位置,然后将其旋转任意角度,其中 x,y = 150,100
然而,这并没有按预期工作。
下面是我正在使用的命令。
ffmpeg -i input_video.mp4 -i Crown.png -filter_complex "[1:v]format=rgba, 旋转=-30 PI/180:ow='rotw(-30 PI/180)':oh='roth(- 30*PI/180)' [旋转];[0:v][旋转]覆盖=150:100" -编解码器:复制sample.mp4
问题是它绕角上的点而不是中间的点旋转。以图像为例:
下面显示了背景视频(网格)顶部的叠加层(狗图像)。这是位于 150,100 且旋转 0 度的正常图像。
现在将其旋转 -90 度应给出以下输出:**这是正确的预期输出**
但它实际上给出了输出:**错误的输出**
看起来发生这种情况是因为 FFMPEG 处理旋转的方式,而我期望它绕中心旋转,它绕角锚点之一旋转。我怎样才能在这里实现我需要的轮换?
我使用自己编译的 ffmpeg 自定义版本(用于 cuda 支持),但是当我尝试使用 delogo 过滤器时,我得到:
[AVFilterGraph @ 0x586ea2283880] No such filter: 'delogo'
[vost#0:0/mpeg4 @ 0x586ea2281cc0] Error initializing a simple filtergraph
编译时应该使用什么参数才能使用此过滤器?您能同时告诉我在网上哪里可以找到这些信息吗?这不是我第一次因为缺少库而无法使用过滤器,如果我没有记错的话,ffmpeg 文档没有提到它。https://ffmpeg.org/ffmpeg-filters.html#delogo
我试图在时间戳 00:00:10 秒处将 temp.mp3 覆盖在 a.mp3 之上。以下是我尝试使用的命令,但出现以下错误。
temp.mp3 是一个短文件,我不希望它循环。仅在较长的 a.mp3 文件的特定点覆盖一次
有人可以告诉我我做错了什么吗?谢谢
ffmpeg -y -i a.mp3 -i temp.mp3 -filter_complex "[0:0]volume=1[a];[1:0]volume=0.30[b];[a][b]adelay=delay=10s:amix=inputs=2:duration=first" -acodec libmp3lame z1.mp3
Error applying option 'delay' to filter 'adelay': Option not found
Failed to set value '[0:0]volume=1[a];[1:0]volume=0.30[b];[a][b]adelay=delay=10s
:amix=inputs=2:duration=first' for option 'filter_complex': Option not found
Error parsing global options: Option not found
原始的 ffmpeg 文件有这样的章节
Menu
00:00:00.000 : en:Chapter 01
00:07:02.083 : en:Chapter 02
00:13:40.833 : en:Chapter 03
00:23:06.791 : en:Chapter 04
我使用 提取了章节ffmpeg -i input.mkv -f ffmetadata FFMETADATAFILE.txt
。但提取章节后,如下所示。
Menu
00:00:00.000 : Chapter 01
00:07:02.083 : Chapter 02
00:13:40.833 : Chapter 03
00:23:06.791 : Chapter 04
en
标题中缺少关键字。发生这种情况的任何原因以及如何使章节与原始文件中的内容相同?
我尝试了这个命令行:
D:\Captured>ffmpeg -framerate 1/2 -start_number 1 -i "D:/New folder (76)/Image%d.png" -loop -1 D:/test.gif
但出现此错误:
[image2 @ 00000000026324a0] Could find no file with path 'D:/New folder (76)/Image%d.png' and index in the range 1-5 D:/New folder (76)/Image%d.png: No such file or directory
这是我的文件夹的屏幕截图,其中包含图像,我只想获取以名称 image 开头的图像类型 png:
更新:这是我在创建动画 GIF 后收到的消息,包括来自此答案的命令行:
D:\Captured>ffmpeg -framerate 1/2 -start_number 1 -i "D:/New folder (76)/Image_%04d.png" -loop -1 D:/test.gif
ffmpeg version n6.1.1-20240114 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13.2.0 (crosstool-NG 1.25.0.232_c175b21)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --disable-doc --disable-ffplay --disable-ffprobe --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20240114
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
Input #0, image2, from 'D:/New folder (76)/Image_%04d.png':
Duration: 00:00:02.00, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, rgba(pc, gbr/unknown/unknown), 1536x2048, 0.50 fps, 0.50 tbr, 0.50 tbn
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> gif (native))
Press [q] to stop, [?] for help
Output #0, gif, to 'D:/test.gif':
Metadata:
encoder : Lavf60.16.100
Stream #0:0: Video: gif, bgr8(pc, gbr/unknown/unknown, progressive), 1536x2048, q=2-31, 200 kb/s, 0.50 fps, 100 tbn
Metadata:
encoder : Lavc60.31.102 gif
[out#0/gif @ 0000016edfc34bc0] video:696kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000140%
frame= 1 fps=0.0 q=-0.0 Lsize= 696kB time=00:00:00.00 bitrate=N/A speed= 0x
D:\Captured>