- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;DR
我在以下 PowerShell 脚本中做错了什么?它没有按预期工作。
我正在用照相机记录我在大学里的一些讲座。尽管我必须将单个讲座分成三到四个部分,但这效果很好,因为相机一次只能录制 29 分钟的视频。我知道这是与一些许可问题相关的常见问题,大多数相机根本没有正确的许可来录制更长的视频。但它让我面临的问题是,在对文件进行一些后期处理之后,我必须一起编辑这些文件。
使用相机,我最多可以制作四个大小约为 3.5 GB 的视频文件,这对于任何用途来说都太大了,因为我们的 IT 部门可以理解地不想托管这么多数据,因为我制作了大约 22 GB 的视频每周 Material 。
前段时间,我在 GitHub 上遇到了一个非常有用的工具,叫做“other-video-transcoding”,它是由 Don Melton 用 ruby 编写的,它允许我将文件压缩到合理的文件大小而不会造成任何视觉损失。此外,我裁剪视频以删除每个帧中既不是板也不是我的教授站立的地方的部分,以进一步减小文件大小并通过删除大多数学生来保护隐私。
由于可以通过命令行访问这些工具,因此配置起来相对容易,并且渲染漂亮的 gui 不需要额外的计算能力,因此我可以在不到 10 分钟的时间内编辑一个 29 分钟的剪辑。
现在我想通过编写一个 PowerShell 脚本来优化我的工作流程,该脚本只接受要裁剪的参数和要处理的文件,然后自己完成其余的工作,这样我就可以启动脚本,然后在我的笔记本电脑渲染时做其他事情新文件。
到目前为止,我有以下内容:
$video_path = Get-ChildItem ..\ -Directory | findstr "SoSe"
Get-ChildItem $video_path -name | findstr ".MP4" | Out-File temp.txt -Append
Get-Content temp.txt | ForEach-Object {"file " + $_} >> .\files.txt
Get-ChildItem $video_path |
Foreach-Object {
other-transcode --hevc --mp4 --target 3000 --crop 1920:780:0:0 $_.FullName
}
#other-transcode --hevc --mp4 --crop 1920:720:60:0 ..\SoSe22_Theo1_videos_v14_RAW\
ffmpeg -f concat -i files.txt -c copy merged.mp4
Remove-Item .\temp.txt
但它并不完全符合我的预期。
sciebo/
└── SoSe22_Theo1_videos/
├── SoSe22_Theo1_videos_v16/
│ ├── SoSe22_Theo1_videos_v16_KOMPR/
│ │ ├── C0001.mp4
│ │ ├── C0002.mp4
│ │ ├── C0003.mp4
│ │ ├── C0004.mp4
│ │ ├── temp.txt
│ │ ├── files.txt
│ │ └── merged.mp4
│ └── SoSe22_Theo1_videos_v16_RAW/
│ ├── C0001.mp4
│ ├── C0002.mp4
│ ├── C0003.mp4
│ └── C0004.mp4
└── SoSe22_Theo1_videos_v17/
├── SoSe22_Theo1_videos_v17_KOMPR
└── SoSe22_Theo1_videos_v17_RAW/
├── C0006.mp4
├── C0007.mp4
├── C0008.mp4
└── C0009.mp4
第 16 课已经处理,第 17 课没有。我总是在以
RAW
结尾的文件夹中保存原始视频数据以及以
KOMPR
结尾的文件中的编辑/压缩输出文件.注意
KOMPR
中的视频文件文件夹是
other-transcode
的输出文件工具。
other-transcode --hevc --mp4 --target 3000 --crop 1920:780:0:0 $_.FullName
并在行中
ffmpeg -f concat -i files.txt -c copy merged.mp4
我将输出文件连接成最终版本,我可以上传到我们的在线学习平台。
--crop
参数只是我的脚本,但这不是主要问题。
KOMPR
之一目录,然后调用
other-transcode --mp4 ../SoSe22_Theo1_videos_v16_RAW/C0001.mp4
一个新文件
C0001.mp4
在
KOMPR
中创建目录,转码后的视频和旧音频将写入该新视频文件。
最佳答案
我会首先使用 Get-ChildItem 获取“SoSe*_RAW”文件夹并循环遍历这些文件夹。
在每次迭代中,检查它旁边是否有一个“SoSe*_KOMPR”文件夹,以及它是否已经有一个“merged.mp4 文件”。
如果是这种情况,则跳过处理文件夹并继续下一个。
尝试
$allVideos = Get-ChildItem -Path 'X:\sciebo' -Filter 'SoSe*_RAW' -Directory -Recurse | ForEach-Object {
$mergedPath = $_.FullName -replace '_[a-z]+$', '_KOMPR'
$mergedFile = Join-Path -Path $mergedPath -ChildPath 'merged.mp4'
if (Test-Path -Path $mergedFile -PathType Leaf) {
# already processed
continue # skip this and proceed with the next folder
}
# convert each file in the folder
$mp4Files = Get-ChildItem -Path $_.FullName -Filter '*.mp4' -File | Sort-Object {[int]$_.BaseName.Substring(1)}
if (@($mp4Files).Count) {
# make sure there is a 'SoSe*_KOMPR' folder
if (!(Test-Path -Path $mergedPath -PathType Container)) {
$null = New-Item -Path $mergedPath -ItemType Directory
}
# convert the videos into the 'SoSe*_KOMPR'
$transcoded = [System.Collections.Generic.List[string]]::new()
foreach ($video in $mp4Files) {
# copy the file to the 'SoSe*_KOMPR' first and transcode there
$copy = $video | Copy-Item -Destination $mergedPath -PassThru
other-transcode --hevc --mp4 --target 3000 --crop 1920:780:0:0 $copy.FullName
# add a string for the files.txt
$transcoded.Add(('file {0}' -f $copy.FullName))
}
# create a files.txt file with all converted filenames in it
$fileList = Join-Path -Path $mergedPath -ChildPath 'files.txt'
$transcoded | Set-Content -Path $fileList
# then combine all the videos into merged.mp4
ffmpeg -f concat -i $fileList -c copy $mergedFile
}
}
关于powershell - 如何使用powershell和other-transcode/ffmpeg批量处理一系列视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72518291/
我正在尝试使用 ldash 等选项和 http_opts ,正如 dash muxer 文档所描述的,但 FFmpeg 无法识别它们。我正在使用最新发布的 ffmpeg v4.2.2 版本。我在 ff
假设我们有许多想要与 -vcodec 副本(或等效语法)合并的视频记录。无需重新编码,不会损失质量。并且很少有记录(minor set),有另外的编解码器,参数等等。所以我们可以使用 ffprobe
有没有办法安装 ffmpeg 没有root访问权限?使用 ./configure 无法做到这一点来自 git 克隆 git://source.FFmpeg.org/fFFmpeg.git 最佳答案 是
在应用程序中直接使用 FFmpeg 与使用 Ffmpeg 命令行有什么区别? 最佳答案 没有:FFmpeg 命令行只是一个使用 FFmpeg API 的应用程序。当然,在使用该应用程序时,您仅限于已实
我正在使用以下命令对文件(下面的媒体信息)进行编码: ffmpeg -i AHomeMovie.mkv -map 0 -c copy -c:v libx264 -preset veryslow -cr
我正在制作一张圣诞贺卡,我需要将视频嵌入到右侧(边框内)的卡片中,并在左侧显示一些文本。 为简单起见,假设我有一个带有透明孔的盒子。我想在那个洞里显示视频。 我正在使用 ffmpeg-python很高
我正在使用 laravel ffmpeg 为视频创建缩略图,但是当我运行代码时,它返回给我 Call to undefined method FFMpeg\FFMpeg::fromDisk() 我不知
我为我的 nvidia 下载了 cuda 驱动程序 但它仍然不使用我的 GPU,它仍然使用 cpu。 我怎样才能让它使用GPU。 我也听说过硬件加速,但那不起作用。 它必须是 h.264 最佳答案 你
尝试剪切视频的多个部分时,我遵循此问题的解决方案 Cut multiple parts of a video with ffmpeg .但问题是,如果我剪切多次(比如大约 20 次或更多),视频和音频
所以我最近开始在我打算在商业上分发的应用程序中实现 ffmpeg。而且我很难理解整个许可过程。 我见过的最常回答的问题似乎是关于 x264,它需要 x264.org 的付费许可才能在商业上使用它(对吗
我使用 ffmpeg 更改视频文件的分辨率,转换到另一个位置后,视频持续 0 秒,但最初持续 2 分钟 我的ffmepg代码: ffmpeg -i input.mp4 -filter:v scale=
如上: FFMPEG 不支持在没有第三部分库的情况下加载外部过滤器是否有特定原因? (像弗莱0r) 我必须重新编译整个包来添加一个新的过滤器! 最佳答案 只有开发人员可以肯定地回答,但我会冒安全风险和
我收到了一个编码器,我需要用 FFMPEG 编译,我是新手,所以我不知道如何用 ffmpeg 添加/编译它。编码器是JSV,我的服务器是ubuntu 14.04。 我已经开始阅读这篇 https://
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我正在制作一个利用 ffmpeg 重新混合和转码视频文件的程序。我想使用 ffmpeg -codecs和 ffmpeg -formats (或通过 ffmpeg 可用的任何其他命令)来检查我可以在哪些
这个问题在这里已经有了答案: ffmpeg moving text drawtext (1 个回答) 3年前关闭。 我正在使用此命令使用 ffmpeg 将文本从一个地方移动到另一个地方 ffmpeg
为什么 ffmpeg/ffprobe 为流和整个文件提供不同的比特率值? 当我使用 ffprobe 分析 mp3 文件时,它会在第一行和第二行给出不同的比特率。 有谁知道,有什么区别? // File
如何在ffmpeg中使用drawtext在视频上绘制多色文本? 示例:我想突出句子中的专有名词, “XYZ公司股价上涨91%” 高亮 XYZ 白色 黄色 用绿色突出显示 91% 如果您有任何其他方法不
我想让我的不和谐机器人播放音乐,但我不断收到“找不到 FFMPEG”错误。 我的机器人主要是由 ping 制成的,所以我不会上传那部分。音乐代码应该是这个。 const Discord = requi
我需要帮助在 ffmpeg drawtext 过滤器中正确/(完全)显示德语变音符号“äüö”。我现在不能说我的无能是由于缺乏 ffmpeg 专业知识或机器配置,还是两者兼而有之。非常感谢您的意见。
我是一名优秀的程序员,十分优秀!