繁体   English   中英

使用ffmpeg压缩视频,然后移动到相应的文件夹

[英]compress video using ffmpeg then move to respective folder

我有一个目录结构,其中的原始.avi视频位于这些目录中。 我正在尝试创建一个脚本,该脚本将:

  1. 将目录结构复制到NAS
  2. 将原始的.avi视频压缩为.mp4格式
  3. 将转换后的.mp4视频移至NAS上的相应目录(转换后的文件必须位于与源目录同名的目录中)
  4. 删除原始的原始.avi视频

以下是我用来压缩视频的ffmpeg命令。

ffmpeg -i <origVid>.avi -c:v h264 -crf 17 <convertedVid>.mp4

我发现了几个PowerShell片段。 下面的代码将复制目录结构:

$sourceDir = "D:\Videos"
$targetDir = "H:\Converted"
Copy-Item $sourceDir $targetDir -Filter {PSIsContainer} -Recurse -Force

以下片段将压缩单个文件夹中的视频

$origVids = Get-ChildItem .\*.avi -Recurse
foreach ($origVid in $origVids) {
    $convertedVid = [io.path]::ChangeExtension($origVid, '.mp4')
    .\ffmpeg.exe -i $origVid -c:v h264 -crf 17 $convertedVid
}

我可以将所有内容移至NAS,然后在其中执行转换,然后删除源计算机目录中的文件。 但是,这有点低效,并且会消耗大量带宽。 我想压缩视频,然后将较小的转换后的文件移至其相应目录中的NAS。 不幸的是,为了我的一生,我不知道如何将转换后的视频移动到NAS上相应的目录中。 任何帮助将不胜感激!


我应该补充一点,我希望此脚本可以递归运行。

文件目录结构示例:

longdirectorynameinhashformat1
  video1a.avi
  video2a.avi
  video3a.avi
longdirectorynameinhashformat2
  video1b.avi
  video2b.avi
  video3b.avi

使用上面的文件夹结构,我的逻辑如下,但是不确定是否可以在powershell或MS-DOS批处理中编写:

  1. 在NAS上创建'longdirectoryinhashformat1'
  2. 将所有.avi文件压缩到同一目录中
  3. 将所有压缩(.mp4)文件移动到NAS上具有相同名称的目录中
  4. 删除原始目录和内容
  5. 在NAS上创建'longdirectoryinhashformat2'
  6. ...漂洗并重复直到源计算机上没有剩余任何东西为止。

注意:此操作将在每晚的cron作业(或Windows等效文件)中运行。

当然,ffmpeg不受PowerShell的控制。 至于子弹-

1.将目录结构复制到NAS只需使用Copy-Item或robocopy

2.将原始的.avi视频压缩为.mp4格式

随心所欲压缩

3.将转换后的.mp4视频移动到NAS上的相应目录(转换后的文件必须位于与源目录同名的目录中)

使用Move-Item或robocopy

4,删除原始的原始.avi视频

使用删除项

我没有使用PowerShell,而是使用以下批处理脚本,其中“ D:\\”是映射的NAS共享,我将存储压缩的视频。 虽然,我想知道PowerShell的等效项。

@echo off
Rem Replicate directory structure on NAS (where g: is the drive letter for the NAS share)
for /d %%d in (*.*) do mkdir g:\%%d

Rem FFmpeg processing for all files that end in *.avi.  You can change *.avi to whatever extension you need.
call :treeProcess
goto :eof

:treeProcess
for %%f in (*.avi) do ffmpeg -i "%%f" -c:v h264 -crf 17 "g:\%%d\%%~nf".mp4
for /D %%d in (*) do (
  cd %%d
  call :treeProcess
  cd ..
)
exit /b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM