想要用小米摄像机制作延时视频?本文详细介绍了如何利用FFmpeg工具处理小米摄像机视频,包括安装FFmpeg、生成延时视频、合并视频文件以及编写批处理脚本等步骤,帮助您轻松实现延时视频制作并节省存储空间。
—
文章标题:小米摄像机延时视频制作全攻略:FFmpeg工具应用与批处理脚本详解
文章内容:
背景:为何想要制作小米摄像机的延时视频
之前使用过群晖的SurveillanceStation,作为网络摄像机管理软件,它支持onvif协议的摄像头,其中延时视频功能非常实用,就像倍速播放一样。
家里有米家摄像头,连接到NAS存储了大量视频,我想保留宝宝小时候的视频片段。本来想放到闲置的硬盘里,但发现占用空间很大,于是想到了制作延时视频,这样既有趣又美观,还能大幅减少存储空间占用。
经过尝试,我发现群晖软件无法实现延时视频制作,网上也找不到免费的批量制作工具,无意间发现了ffmpeg这个强大工具。
FFmpeg是什么:它是一个强大的多媒体处理工具,可以通过命令行进行各种多媒体处理操作。
安装FFmpeg:具体步骤如下:
Windows:下载FFmpeg可执行文件,解压并添加到系统路径。注意要添加环境变量,否则在批处理中无法找到命令。
下载地址:[FFmpeg下载](https://ffmpeg.org/download.html)
为何选择FFmpeg处理小米摄像机视频
首先,我尝试了多种方法,但没有找到好用的批量生成延时视频的免费软件。
其次,小米摄像机视频格式统一为H.264编码的MP4文件,FFmpeg处理这种格式非常容易,限制较少。
最后,FFmpeg强大的视频处理功能,特别是后期合成能力,可以轻松实现延时视频制作。通过命令行工具,可以将视频按照设定的帧率和分辨率编码,调整播放速度和画质,实现延时效果。
使用FFmpeg生成延时视频
准备工作
将小米摄像机视频文件传输到计算机,准备测试视频。最好先测试一下,防止命令错误导致原视频损坏或生成效果不佳。
FFmpeg延时命令解析
“`bash
ffmpeg -i “27M55S_1641436075.mp4” -filter:a “atempo=5” -vf “setpts=0.2PTS” -c:v libx264 -preset veryfast -crf 23 -c:a aac “delayed_27M55S_1641436075.mp4”
“`
上面的参数分析:
-filter:a “atempo=5″:调整音频播放速度,将音频速度调整为原来的5倍。
-vf “setpts=0.2PTS”:调整视频播放速度,通过改变每帧视频的pts时间戳实现5倍速播放。
遇到的问题与解决方案
问题1:帧率设置不当导致视频过快或过慢
解决方案:调整-vf “setpts=PTS/SPEED”中的SPEED值。
问题2:音频处理不当导致杂音或无声
解决方案:使用-c:a aac生成新的音频。
合并多个延时视频
FFmpeg合并视频命令解析
使用concat滤镜或concat协议。
首先创建一个文本文件,例如outputFile.txt,在文件中按以下格式列出要拼接的音视频文件路径:
“`plaintext
file ‘video1.mp4’
file ‘video2.mp4’
“`
执行以下命令,将输入文件作为参数传递给ffmpeg,并指定输出文件的路径:
“`bash
ffmpeg -f concat -safe 0 -i outputFile.txt -c:v copy -c:a aac “merged_video.mp4”
“`
上面的命令经过实验得出,其中outputFile需要提前创建,是告诉ffmpeg把哪些文件合并用的,最后的文件名根据实际情况修改。
遇到的问题与解决方案
问题1:合并的视频之间有黑屏或闪烁
解决方案:确保所有视频具有相同的编码设置和帧率。
问题2:合并后的视频文件过大
解决方案:调整输出视频的编码参数或使用-crf值进行压缩。
合并生成延时视频的批处理脚本
将两个步骤合并,同时生成延时视频并合并视频文件,批处理代码编写与一键生成脚本。
FFmpeg合并视频并生成延时视频一步命令:
“`bash
ffmpeg -f concat -safe 0 -i outputFile.txt -filter:a “atempo=5” -vf “setpts=0.2PTS” -c:v libx264 -preset veryfast -crf 25 -c:a aac “delayed_%%d.mp4”
“`
这个命令将合并和延时处理合二为一,非常方便。
一键生成脚本分享:
根据上面的命令我编写了一键生成脚本,放到视频文件夹里面执行就自动生成了。非常方便。
批处理脚本:
“`bash
@echo off
setlocal enabledelayedexpansion
:: 遍历当前目录下的所有目录
for /d %%d in () do (
:: 设置输出文件的路径(以目录名命名)
set “outputFile=%cd%%%d.txt”
echo !outputFile!
:: 如果输出文件已存在,则删除它(可选)
if exist !outputFile! del !outputFile!
echo “if exist !outputFile! delete”
cd %%d
echo “jinru %%d”
:: 遍历当前目录下的所有文件(非递归)
for %%f in () do (
echo “zhaodao %%f”
:: 输出带有 ‘file’ 关键字的文件路径到输出文件
echo file ‘%%d%%f’ >> !outputFile!)”
echo “%%d xun huan jie shu”
cd ..
echo “tui chu %%d”
:: 进行延时处理 这里合并+处理一步完成
ffmpeg -f concat -safe 0 -i “!outputFile!” -filter:a “atempo=5” -vf “setpts=0.2PTS” -c:v libx264 -preset veryfast -crf 25 -c:a aac “delayed_%%d.mp4”
::删除原视频
::del “%%d.mp4”
::删除文件列表
del “%%d.txt”
::删除源文件
rd %%d /s /q
)
echo 完成。
pause
“`
脚本使用说明:
该脚本遍历文件夹中的所有视频文件,合并视频,应用延时处理并保存新视频文件。
该脚本是在Windows下执行的。
脚本是放在小米视频文件夹,日期文件夹目录下的(遍历了当前目录下的日期文件夹,没找到一个文件夹就处理一个,每个文件夹内每分钟有一个视频文件,本脚本将这些小文件合并成了一个),使用的时候可以根据实际情况调整。
该脚本中包含删除原视频的命令,危险操作,请测试好后再使用,不要直接使用!
该脚本生成的视频是5倍的倍速,可以调整里面的参数,某些视频播放器可以慢速播放,我试过调成0.25x就和正常视频没什么区别,但是声音缺失了,所以压缩损失还是挺大的。
脚本运行的时候非常占用cpu,我试过性能越高的cpu生成越快,为了发热小一点,功率小一点,我在电源选项中限制了cpu的主频,兼顾了性能和效率。
总结
最近刚刚尝试使用ffmpeg这个工具,对于上面的说明如果有任何不准确的地方,还请大家多多谅解,我们一起学习,共同进步。
视频处理完成后我跟高兴,经过尝试,视频文件的大小得到了显著减少,存储空间也节省了近5倍。
对于这个脚本,我相信还有更多的提升空间。例如,硬件加速功能我目前还没有使用,如果有显卡的话,应该能够进一步提升效率。然而,我这个电脑是AMD的小主机,虽然核显性能不错,但与这个软件的兼容性可能不是那么好。
最后,我要感谢百度AI助手,我在使用的过程中产生的许多命令都是向它询问的,它在我遇到问题时也给了我很多改进的建议。虽然它的智能程度还有待提高,但它仍然为我提供了宝贵的技术支持。
{1、小米摄像机} {2、延时视频} {3、FFmpeg} {4、视频处理} {5、批处理脚本} {6、视频合并} {7、多媒体处理} {8、网络摄像机} {9、onvif协议} {10、存储空间}
本文是基于《想用小米摄像机制作延时视频?这些问题你得知道》的AI重写版本
评论(0)