问题标签 [handbrakecli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
audio - HandbrakeCLI 命令行
我正在尝试使用 HandbrakeCLI 将 DVD iso 文件转换为 mp4。我在批处理文件中使用以下行:
当我这样做时,我必须使用以下行从文件中提取音频:
但是,当我尝试提取音频时,我收到错误消息
无法检测到源文件的格式。
我以前的代码行有什么问题导致 mp4 搞砸了吗?
次要问题:我也试图让手刹删除字幕并且只保留英文音频,你知道可以使用什么代码吗?我从--audio-lang-list
“eng”开始,但我现在确定从那里做什么。
提前非常感谢!
powershell - 使用HandbrakeCLI + JSON预设的观看目录(Powershell)的转换文件中的绿框/无字幕
所以我需要一个脚本来监视目录并使用 HandbrakeCLI 转换文件。我在 stackoverflow 上找到了这个 powershell 的一部分,并为我的项目调整了一些东西。
虽然起初一切似乎都正常,但我开始注意到“有时”没有添加字幕,或者在每一帧(正常 - 绿色 - 正常 - 绿色 - 等)之后插入(或替换原始帧)绿色帧。
一个例子:我在目录中添加了 2 个 mkv 文件,第一个文件转换得很好,带有字幕,而第二个文件没有任何字幕。
在这方面我是个业余爱好者,但我认为这与& cmd.exe /c
. 我还发现你可以Start-Process
在 powershell 中使用,但我不知道如何使用它。
因此,如果有人可以帮助我将其转换& cmd.exe /c $handbrakecli -i $path -o $mp4File --preset-import-file my_preset.json
为Start-Process ...
,也许它会帮助我。
编辑
所以我做了 Tomalak 建议的改变(这种方式更简单),但Move-Item
似乎Remove-Item
不起作用。
编辑 2
添加-LiteralPath
为 Move-Item / Remove-Item 的参数(需要包含方括号的文件名)
虽然字幕已添加到所有输出文件中,但有时我仍然会出现绿色闪烁。我用了 3 个文件作为测试运行,结果:第 1 次闪烁,第 2 次 OK,第 3 次闪烁。我不知道为什么有些很好,有些却闪烁。所以我正在考虑改用ffmpeg。
编辑 3
对于未来的访问者:使用 ffmpeg 而不是 HandbrakeCLI:
ffmpeg.exe -i "C:\~\inputfile.mkv" -filter_complex "subtitles='C\:/Users/~/inputfile.mkv'" -c:v libx264 -preset veryfast -b:v 2750k -c:a aac $outputfile.mp4
handbrakecli - 我无法通过 php 程序执行 HandBrakeCLI sh 脚本
我有一个名为 test.sh 的 sh 文件
完毕
这会在命令提示符下运行并给我输出。
但是当我尝试执行它时,我没有得到任何输出。这里的输出是来自 wmv 文件的 .mp4 文件
测试视频.php
我在哪里做错了?如果我在 test.sh 中编写任何其他命令,那么它就会被执行。所以只有 HANDBRAKE_CLI 有问题。
bash - 查找文件和 HandBrakeCLI 在一行中转换
不确定这是否可能...
我正在尝试编写一个终端命令(linux),它将查找具有特定扩展名的所有视频文件,然后使用 HandBrakeCLI 转换它们
我有前半部分:
我有一个有效的 HandBrakeCLI 命令:
我一直无法弄清楚的是如何将在 find 中找到的文件的文件名/路径插入到 file.mkv 中,然后以相同的文件名但以 mkv 格式输出转换后的文件。
是否可以在一行中执行此操作,或者我是否需要在 bash 脚本中将其分解?
batch-file - HandbrakeCLI 无法识别的文件类型
我正在尝试设置一个简单的批处理文件来使用手刹来压缩视频。我安装了 Handbrake,发现我需要单独安装 HandbrakeCLI。我下载HandBrakeCLI.exe
并放置在C:\
. 然后我做了一个预设并使用GUI
. 然后我这样打电话handbrake
:
我收到以下错误,告诉我文件类型无法识别:
关于为什么命令行版本突然无法打开文件的任何想法?相同的文件可以在 中打开GUI
并进行转换。
我尝试重新安装所有内容并删除预设文件夹,即使这似乎不是问题。
更新:这是对我有用的最终代码。
audio - 带手刹的多个音轨
尝试以相当通用的方式对视频进行编码,典型的调用将如下所示:
问题是我想对音轨执行以下操作:
- 如果有高比特率轨道(例如 dts)将其转换为 ac3
- 如果有 aac 音轨重新编码(或复制)
- 如果没有 aac 轨道和高比特率轨道,则创建 aac 轨道
本质上,我如何能够有条件地根据音轨选择要执行的操作,或者我是否需要进行某种预处理来识别我正在处理的音轨类型并以此为基础以编程方式更改命令?
php - 强制 PHP 以原始格式传递数字
我使用 PHP import_json 打开一个 JSON 文件,然后 export_json 仅将第一项输出为另一个 JSON 文件(本质上是将一个长 JSON 作业列表拆分为单个作业),但我遇到了一个问题,其中某处的行号是真实的或带有尾随“.0”的浮点数正在被转换并作为整数输出。
例子:
出来为:
我目前正在使用的整个 PHP 代码:
示例 JSON 位于: https ://pastebin.com/K2qnggjT
不幸的是,我正在为其制作单个作业 JSON 的程序需要正确格式化数字,否则我会收到“预期的真实但得到 int”错误。JSON 文件包含字符串和数值,其中也有嵌套数组。
有什么方法可以让 PHP 像字符串一样传递数字,但在结果中仍显示为数值?在源代码中有显示为整数的数字,所以我认为仅将所有数字定义为带有尾随 .0 的浮点数是行不通的。这完全可以用 PHP 实现吗?
bash - Bash脚本做循环提前退出
我有一段令人沮丧的时光。我编写了一个脚本,它应该逐行读取文件,并根据该行进行操作。具体来说,我正在使用 handbrake CLI 将部分目录(基于文件列表)转换为另一种更小的格式。我已经使用命令行的“echo”测试了脚本以空运行它,但是当我想实际运行脚本时,它只对列表中的第一项运行命令,然后退出。这是代码:
这是文件列表:
这是我将“echo”放在命令前面时的输出:
但是当我删除回显和所需的引号时,手刹只在第一个文件上执行,然后整个脚本终止。我不明白这是怎么发生的,因为空运行在通过 do 循环时会按顺序吐出正确的命令。我尝试在 Handbrake CLI 命令之后等待,当我中断(编码期间的 ctl-c)脚本时,这似乎有所帮助,但是让编码一直进行会导致相同的行为(脚本终止)。
有没有人有任何想法?
bash - Bash While循环逐行读取文件在某行退出
我正在编写一个简单的 Bash 脚本,它只是调用 HadnBrakeCli 来渲染视频。我还实现了一个简单的队列选项:队列文件只存储它必须调用以启动渲染的行命令。所以我写了一个while循环来一次读取一行,eval $line 并重复直到文件结束。
问题是任何命令都可以使循环正常工作(空行,回显“测试”......),但是一旦加载了正确的渲染,它就会正确启动并完成,但循环也存在。
我是新手,所以我尝试了一些小改动来看看我得到了什么效果,但没有改变结果。我评论了命令,或者我在 while 循环中tail -n +2 "${CONFIG_DIR}/queue" > "${CONFIG_DIR}/queue.tmp" && mv "${CONFIG_DIR}/queue.tmp" "${CONFIG_DIR}/queue"
添加/删除了,或者删除了in命令。对不起,如果这个问题是微不足道的,但我真的错过了它如何工作的一些主要部分,所以我什至不知道如何搜索解决方案。IFS=
-r
read
我将在队列文件中放置一个通用渲染示例。
HandBrakeCLI -i "/home/andrea/Videos/done/Rap dottor male e mini me.mp4" -o "/hdd/Render/Output/Rap dottor male e mini me.mkv" -e x265 -q 23 --encoder-preset faster --all-audio -E av_aac -6 dpl2 --all-subtitles -x pmode:pools='16' --verbose=0 2>/dev/null
ffmpeg - 使用 ffmpeg 与手刹加速硬编码潜艇
我有一个视频,我需要对旧设备的字幕进行硬编码,所以我通常为此使用 ffmpeg,它工作正常,但速度太慢。
这是我通常使用的命令。
前几天我尝试了 handbrakeCLI,它在同一个文件上要快得多。
我使用这个 HandbrakeCLI 命令进行转换和硬编码,我知道它不像类似,但你会期望 ffmpeg 更快,因为它不转换音频,实际上只需要在需要字幕的帧处转换视频。
有没有一种方法可以让 ffmpeg 只在需要字幕的视频上打印字幕。而不必转换整个视频。
例如,如果我有一个一分钟长的视频,并且在 30 秒时说了 1 个句子,并且该句子/子需要显示 5 秒才能让 ffmpeg 仅转换该 5 秒片段并复制视频的其余部分和新输出的音频?
输入视频为 720p,24 FPS,速度差异通常是手刹是 2x,ffmpeg 大约是视频时长的 0.7x。我知道我使用 1080p 配置文件进行手刹。两者都在同一台机器和同一视频上进行了测试。
版本 ffmpeg 版本 4.2.2 HandBrake 1.3.1
视频信息 原始视频
手刹输出
ffmpeg 输出
如果有人能提供任何建议以在硬编码潜艇上更快地获得 ffmpeg,将不胜感激。