标签: handbrake

使用手刹将MKV无损转换为MP4

我需要提供什么来防止Handbrake在转换为MP4时丢失源视频的质量.我已经阅读了所有文档,我可以看到它的限制,但我找不到如何告诉Handbrake忽略默认设置并保留现有设置.

video encoding handbrake

16
推荐指数
2
解决办法
5万
查看次数

VP9编码限制为4个线程?

我正在考虑将来使用VP9对我的BluRays进行编码,因为它是一个开源编解码器.但我无法让Handbrake或ffmpeg使用超过50%(4)的我的(8)核心.因此,编码时间比使用所有内核的x264/5差得多.

在Handbrake我只是将编码器设置为VP9和CQ19.如果我在参数字段中添加"threads 8","threads 16"或"threads 64",则没有区别.

在命令行中测试ffmpeg(" - c:v libvpx-vp9 -crf 19 -threads 16 -tile-columns 6 -frame-parallel 1 -speed 0")也不再使用任何cpu线程.

当前编码器是否能够在4个以上的线程上进行编码,或者我做错了什么?

  • Linux Mint 18
  • 手刹0.10.2 + ds1-2build1
  • ffmpeg 2.8.10-0ubuntu0.16.04.1
  • libvpx3 1.5.0-2ubuntu1

encoding ffmpeg libvpx handbrake vp9

6
推荐指数
2
解决办法
5476
查看次数

批处理文件循环跳过文件,如果名称包含

我正在创建这个与handbrakecli一起使用的批处理文件,将avi批量转换为mp4.

但是我陷入了如何继续循环并跳过循环中的当前文件.

FOR /R "%somepath%" %%G in (*.avi) DO (

rem skip if filename contains word trailer

rem skip if file name contains word sample

rem do conversion
)
Run Code Online (Sandbox Code Playgroud)

这当前不能跳过包含预告片或示例的文件

我尝试过使用find或findstr,但都无法跳过.

    echo "%%G" | c:\windows\system32\findstr /i "trailer" > NUL
    If %ERRORLEVEL% EQU 1 set skip Yes
Run Code Online (Sandbox Code Playgroud)

这是样品.

    echo "%%G" | c:\windows\system32\findstr /i "sample" > NUL
    If %ERRORLEVEL% EQU 1 set skip Yes
Run Code Online (Sandbox Code Playgroud)

如果文件包含预告片或样本,我不想进行任何handbrakecli转换,只是跳过它.

我做echo来显示哪些文件被转换,它确实包含名称中包含Sample或sample的文件.

我尝试过使用find或findstr,但都没有将skip设置为yes

如果跳过==不做(rem做转换)

我只想转换非预告片/样本avi文件.

感谢您的时间.

mp4 batch-file avi handbrake

6
推荐指数
1
解决办法
2万
查看次数

PowerShell标准错误输出中的随机换行符

我想用HandBrake将许多.iso文件转换为.mp4,所以我试图使用命令行界面.我更愿意在powershell而不是批处理文件中编写我的脚本.但是,如果我使用PowerShell,则标准错误包含随机位置的换行符.

为了排除故障,我在PowerShell和批处理中创建了一个简化的脚本.

电源外壳:

& "$Env:ProgramFiles\HandBrake\HandBrakeCLI.exe" @(
    '--input', 'V:\',
    '--title', '1', '--chapter', '1',
    '--start-at', 'duration:110', '--stop-at', 'duration:15',
    '--output', 'pmovie.mp4',
    '--format', 'av_mp4'
    ) > ".\pstd.txt" 2> ".\perr.txt"
Run Code Online (Sandbox Code Playgroud)

批处理文件:

"%ProgramFiles%\HandBrake\HandBrakeCLI.exe" --input V:\ --title 1 --chapter 1 --start-at duration:110 --stop-at duration:15 --output ".\cmovie.mp4" --format av_mp4 > ".\cstd.txt" 2> ".\cerr.txt"
Run Code Online (Sandbox Code Playgroud)

两个脚本都创建相同的.mp4文件,区别仅在于它们创建的标准错误输出:

电源外壳:

HandBrakeCLI.exe : [10:41:44] hb_init: starting libhb thread
At C:\Test\phandbrake.ps1:1 char:2
+ & <<<<  "$Env:ProgramFiles\HandBrake\HandBrakeCLI.exe" @(
    + CategoryInfo          : NotSpecified: ([10:41:44] hb_i...ng libhb thread 
   :String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

[10:41:44] thread 541fc20 …
Run Code Online (Sandbox Code Playgroud)

powershell powershell-1.0 io-redirection redirectstandardoutput handbrake

5
推荐指数
1
解决办法
213
查看次数

HandBrakeCLI bash 脚本转换文件夹中的所有视频

首先,我四处寻找我的问题。但没有人能解决它。

我想转换一个目录中的所有视频文件,输出将保存在另一个目录中。我从某个我不记得的地方得到了一个 bash 脚本。

#!/bin/bash

SRC="/home/abc/public_html/filex/store/vids/toriko/VIDEOS HERE"
DEST="/home/abc/public_html/filex/store/vids/toriko/51-100"
DEST_EXT=mp4
HANDBRAKE_CLI=HandBrakeCLI
PRESET="iPhone & iPod Touch"

for FILE in "`ls $SRC`"
do
filename=$(basename $FILE)
extension=${filename##*.}
filename=${filename%.*}

$HANDBRAKE_CLI -i "$SRC"/$FILE -o "$DEST"/"$filename".$DEST_EXT "$PRESET"

done
Run Code Online (Sandbox Code Playgroud)

问题是,文件的输出将没有文件名......只有“.mp4”。并且,只生成了 1 个文件.. 意味着,从文件夹中的 50 个视频中,只生成了 1 个名为“.mp4”的文件,之后,HandBrakeCLI 退出。谁能修复我的代码?我在 bash 编码方面没有经验......所以,正确的脚本将不胜感激:)

bash video handbrake

5
推荐指数
1
解决办法
2万
查看次数

将 Handbrake 选项转换为 FFMPEG 命令

我想将一堆视频从 x264 转换为 x265,但我需要在终端中使用 ffmpeg 来执行此操作,因为它是远程服务器。这些是我的手刹选项(所列项目已勾选):

摘要选项卡

  • 网页优化
  • 对齐 A/V 开始

尺寸选项卡 不变

过滤器选项卡

  • 锐化 - LapSharp,预设:中

视频选项卡

  • 视频编解码器 - H.265 (x265)

  • 帧速率 (FPS) - 30 - 峰值帧速率

  • 质量 - 稳定的质量 - 28

  • 编码器预设 - 中

  • 编码器调整 - 无

  • 编码器配置文件 - 自动

音频选项卡

  • 音轨 - AAC,比特率:128

字幕选项卡-无字幕(如果存在则删除)

这是到目前为止我已经成功编译的 ffmpeg 命令:

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac -b:a 128k -max_muxing_queue_size 400 -movflags +faststart output.mp4

我有以下两个问题:

  1. 提供的 ffmpeg 命令是否列出了除峰值帧率锐化过滤器删除字幕之外的所有选项?我如何将这三者结合起来?
  2. 稍微不相关,但是会对-max_muxing_queue_size …

ffmpeg h.265 hevc handbrake libx265

5
推荐指数
0
解决办法
3694
查看次数

如何确定音轨是否为杜比定向逻辑II(Dolby Pro Logic II)混音

我试图找出是否有一种方法可以确定是否使用Dolby Pro Logic II数据对AAC编码的音轨进行了编码。有没有一种检查文件的方式,以便您可以查看此信息?例如,我已经在Handbrake中使用(截断为音频选项)对媒体文件进行了编码-E av_aac -B 320 --mixdown dpl2,这是显示的音频轨道mediainfo

Audio #1
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 2h 5mn
Bit rate mode                            : Variable
Bit rate                                 : 321 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 288 MiB (3%)
Title                                    : Stereo / Stereo
Language                                 : …
Run Code Online (Sandbox Code Playgroud)

audio aac audio-processing handbrake dolby

4
推荐指数
1
解决办法
959
查看次数

让手刹编码器工作

我无法让Handbrake在C#中为我工作.它不断抛出错误"Value not not null"..正如您在下面的屏幕截图中看到的,我根据我所知道的尝试了几件事.我很感激你的任何指导,帮助我完成这项工作.

手刹编码器错误

到目前为止我尝试了什么(点数与显示的错误无关.仅供参考):

  1. 在我的电脑上安装手刹
  2. 添加了对HandBrakeInterop.dll的引用
  3. 将所有其他必需的dll复制到我的调试文件夹,甚至尝试将它们添加为引用
  4. 尝试从x86/x64更改调试版本

我哪里不在正确的轨道上?

这是我的代码:

      HandBrake.Interop.HandBrakeInstance objHb = new HandBrake.Interop.HandBrakeInstance();
    HandBrake.Interop.Model.EncodeJob objJob = new HandBrake.Interop.Model.EncodeJob();
    objJob.SourceType = HandBrake.Interop.Model.SourceType.File;
    EncodingProfile objProfile = new EncodingProfile();
    objProfile.OutputFormat = Container.Mp4;
    objProfile.VideoEncodeRateType = VideoEncodeRateType.ConstantQuality;
    objProfile.IPod5GSupport = true;
    objProfile.PreferredExtension = OutputExtension.Mp4;
   // objJob.EncodingProfile = objProfile;
    objJob.SourcePath = AppDomain.CurrentDomain.BaseDirectory + "1.flv";
    objJob.OutputPath = AppDomain.CurrentDomain.BaseDirectory + "1.mp4";
    //objHb.Titles.Add(new HandBrake.Interop.SourceData.Title());

    XmlSerializer objSerializer = new XmlSerializer(typeof(EncodingProfile));


   MemoryStream mem=new MemoryStream(File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "normal.xml"));
 var objPresetFromFile =  objSerializer.Deserialize(mem) as EncodingProfile;
 objJob.EncodingProfile = objPresetFromFile;
    objJob.UseDefaultChapterNames = …
Run Code Online (Sandbox Code Playgroud)

c# exception video-encoding handbrake

4
推荐指数
1
解决办法
3698
查看次数

手刹:保存自定义预设/编码命令,以便在另一台机器上的handbrake-cli上使用

我有一堆视频要转换,从flv到mp4.在Handbrake gui中,在Ubuntu中,我已经整理了所有设置.我把它保存为一个名为"全平板电脑"的预设.

我需要在不同的ubuntu机器上使用HandBrakeCLI,这只是命令行.所以,我有两个选择,我可以看到,我无法弄清楚如何做其中任何一个:

1)看看手刹gui使用的设置是什么,所以我可以复制它们并直接使用HandBrakeCLI,根据需要替换文件名.

2)以这样的方式保存我的"全片"预设,我可以将其复制到另一台机器并在那里使用HandBrakeCLI.

选项2似乎更好.当我列出HandBrakeCLI中的可用预设时,它不会列出我的自定义预设,建议GUI版本将它们保存到与cli版本不同的地方.

有什么建议?谢谢,马克斯

ubuntu handbrake

4
推荐指数
1
解决办法
8825
查看次数

使用手刹通过命令行将包含所有字幕和音频的视频转换为 mp4

我想使用 Handbrake 将我的视频从 mkv 转换为 mp4。但我希望将 mkv 中包含的所有音频文件和字幕放入新的 mp4 容器中!

我使用 Handbrake 0.9.9 GUI,因为在此版本中,您可以在首选项('Add all remaining'/ )下预定义默认的音轨和字幕数量'Add all'。现在我想通过 HandBrakeCLI 实现相同的目标。

audio video command-line-interface subtitle handbrake

4
推荐指数
1
解决办法
8268
查看次数

Python:参数没有正确传递给命令

几个小时我一直在摸着这个.

我正在尝试编写一个简单的脚本,使用HandbrakeCLI将.AVI格式的旧视频转换为.mp4,我无法让Handbrake注册正确的参数,我不断收到"缺少输出文件名.运行C:/ Program Files /Handbrake/HandbrakeCLI.exe - 帮助获取语法.\ r \n"错误.

这是我到目前为止所拥有的

import glob
import os

import handbrake

hb = handbrake.HandbrakeEncode
mydir = "C:\\Path\\To\\MyVids\\"
os.chdir(mydir)

filesList = []

for files in glob.glob("*.avi"):
    filesList.append(mydir + files)
    print(mydir + files) 
    #this prints the correctly assembled path and file as expected

for files in filesList:
    print("Encoding file: " + files)
    hb(files)
Run Code Online (Sandbox Code Playgroud)

而hb功能是:

def HandbrakeEncode(filepath):
    import subprocess
    import os
    from subprocess import Popen, PIPE
    outputPath, fileExtension = os.path.splitext(filepath)
    outputPath += ".mp4"

    args = '-i ' + …
Run Code Online (Sandbox Code Playgroud)

python subprocess handbrake

3
推荐指数
1
解决办法
416
查看次数