如何使用ffmpeg使用单个图像(image1.png)生成电影,持续时间为15秒,具有特定分辨率,因此当我播放视频时,图像将在屏幕上显示15秒.
Equ*_*nox 94
ffmpeg -loop 1 -i image.png -c:v libx264 -t 15 -pix_fmt yuv420p -vf scale=320:240 out.mp4
Run Code Online (Sandbox Code Playgroud)
确保使用实际的ffmpeg版本,例如http://johnvansickle.com/ffmpeg/
bra*_*rat 18
发现这样更快:
ffmpeg -framerate 1/10 -i DJI_0024.JPG -c:v libx264 -t 10 -pix_fmt yuv420p -vf scale=320:240 out.mp4
Run Code Online (Sandbox Code Playgroud)
-t 10 使视频长度为 10 秒,并设置 -framerate 1/10。帧率除数应与 -t 参数的数字相同。这使得我在不到一秒的时间内将大分辨率的 jpeg 转换为视频,而另一个答案大约需要 40 秒。结果文件大小也变得稍微小一些。从 3.38MB 到 3.17MB
Jac*_*bow 13
为了获得高质量和编码速度(此处显示的是 HEVC,请选择编解码器及其编解码器特定设置以实现与您的用例的兼容性):
ffmpeg -framerate 30 -i input.jpg -t 15 \
-c:v libx265 -x265-params lossless=1 \
-pix_fmt yuv420p -vf "scale=3840:2160,loop=-1:1" \
-movflags faststart \
out.mp4
Run Code Online (Sandbox Code Playgroud)
-framerate 30而不是默认的 25 fps-t 15视频时长15秒-c:v libx265使用 h.265 (HEVC) 进行编码-x265-params lossless=1无损编码,防止静态图像出现伪影。与视频不同,图像将显示足够长的时间以注意到伪影-pix_fmt yuv420p设置像素格式以实现兼容性,因为输入是图像(JPEG 通常是 YUV444,许多解码器不接受)-vf "<options>"设置视频过滤器scale=3840:2160特别缩放至 3840x2160 (4K)
loop=-1:1对于 1 帧组 (1) 无限循环 (-1)movflags faststart将把元数据放在文件前面,以便在网络浏览器中更快地播放。我在云/无服务器环境中运行它,因此最小化运行时间是关键。我尝试了低帧率方法,但它无法在我的目标环境或本地 VLC 上播放。
该-vf loop选项是此处循环一帧的选项。它将该帧保留在内存中,这就是它比其他答案更快的主要原因,同时比分数帧速率方法更兼容。
| 归档时间: |
|
| 查看次数: |
42000 次 |
| 最近记录: |