Zoneminder在自定义ZM分支的MP4视频上加水印

时间:2014-12-29 00:34:12

标签: php video ffmpeg mp4 watermark

我安装的ZM是视频分支。我按照这些说明安装它。 https://github.com/ZoneMinder/ZoneMinder/tree/video https://github.com/ZoneMinder/ZoneMinder/issues/452

我正在寻找水印我的录音。我已成功实现了我对常规ZM的要求。我只需要在ZM的MP4分支版本上使用它。我使用ASR搜索“ffmpeg”和“mp4”,但我只在zmvideo.pl中找到了与视频创建相关的任何内容......但我认为zmvideo.pl仅用于从JPEG文件生成视频。我只是想在创建时在mp4文件上显示水印。

因此,经过长时间的解释后,简而言之:我应该在哪里寻找在ZM中创建MP4文件的命令?或者我必须将它们添加到jpeg框架某处或某事物?抱歉的是,我已经花了至少3个小时来寻找这个,而且我实际上是因为沮丧而汗流。背。任何帮助都将不胜感激:)提前致谢。

1 个答案:

答案 0 :(得分:1)

NEW ANSWER

用户Shinobi而不是zoneminder。内置它。http://shinobi.video

OLD ANSWER

不确定我为什么被投票。无论哪种方式,我都解决了我的问题而没有直接编辑创建脚本。它水印,将视频转换为webm并删除MP4。我已经测试了一段时间了,在WebM中,似乎200mb mp4文件将降至22mb或更低,质量相同。这是我每小时在cron上运行的PHP Shell脚本。

<?php
echo'Watermarking and Converting to WEBM. Storage Preservation Addon.'."\n";
require 'zcon.php';
//VIDEO WATERMARK
    $nSql = "select M.*,M.Name As MName,E.* from Monitors as M inner join Events as E on (M.Id = E.MonitorId) where";
    $nSql .= " E.DefaultVideo LIKE '%.mp4' AND E.Name != '%New Event%'";
        $nResult = $conn->query($nSql);
if ($nResult->num_rows > 0) {
    while($n = $nResult->fetch_assoc()) {
        shell_exec("avconv -i ".getEventDefaultVideoPath($n)." -qscale 0 -vf 'movie=/usr/share/zoneminder/images/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]' ".goEventToDir($n).$n['Id']."-video.webm && rm -rf ".getEventDefaultVideoPath($n));
        $msql = "UPDATE Events SET DefaultVideo='".$n['Id']."-video.webm' where Id = '".$n['Id']."'";
        if ($conn->query($msql) === TRUE) {echo getEventDefaultVideoPath($n)." --> ".goEventToDir($n).$n['Id']."-video.webm"."\n";}
    }
}else{echo 'No MP4 found'."\n";}
$conn->close();
?>