
我的 HTPC 上的外置硬盘快满了,所以我需要把从电视上录制的大量电影(WTV 格式)转换成更小的格式。目前,一部 2 小时的电影大约有 3-4GB。
我尝试将 WTV 文件转换为 DVR-MS(使用内置的wtvconverter.exe
),然后使用以下命令行通过 handbrakecli 运行它:
handbrakecli.exe --input "film.dvr-ms" --output "film.mp4" --encoder x264 --quality 20
在 Handbrake 中,这将通过将输出设置为 MP4、将编码器设置为 x264 以及将质量设置为 20 来实现。
问题是,生成的 MP4 大小在 1.5 到 2GB 之间,虽然比原始文件小,但对于从 (PAL) 电视录制的 2 小时长 SD 电影来说,这似乎太疯狂了!我预计这样的文件大小应该在 700-800MB 之间,甚至更小。
将质量设置为 19 会使图像质量降低到无法观看的程度。
有人可以推荐 Handbrake(或 handbrakecli)的设置,可以将 DVR-MS 文件转换为更小的尺寸吗?
(我对编解码器或容器不是特别挑剔,但更喜欢一些合理的标准,以确保它可以在大量的计算机和移动设备上观看)
更新
这可能不清楚,但如果您只知道使用 Handbrake 的图形版本转换文件的设置是什么,那么这是一个非常好的答案!
答案1
请注意:当撰写此答案时(2012 年 7 月),ffmpeg 无法在不丢失音频的情况下转换 WTV 文件。然而,在 ffmpeg 4.0.0 上进行的测试表明它现在运行良好,因此无需使用将
wtvconverter.exe
WTV 文件预先转换为 DVR-MS。例如:
ffmpeg -i "input.wtv" -y -filter:v yadif -vcodec libx264 -crf 23 "output.mp4"
应该转换您的电视录音。
以下是原始答案
经过一些研究,结果表明:
- Handbrake 不是最好的工具,你应该使用ffmpeg反而。
- 使用 ffmpeg 时,需要使用 DVR-MS 格式(而不是 WTV 格式)作为源文件,否则最终会没有声音。
您需要执行几个步骤,首先从 WTV 转换为 DVR-MS:
%WINDIR%\ehome\wtvconverter.exe "Recorded TV Show.wtv" "Recorded TV Show.dvr-ms"
然后将该 DVR-MS 文件转换为 H.264/MPEG-4 AVC。您可以更改-crf 23
- 数字越大意味着质量越低,合理的值是从 19 到 25:
ffmpeg -i "Recorded TV Show.dvr-ms" -y -filter:v yadif -vcodec libx264 -crf 23 "Recorded TV Show.mp4"
然后删除临时 DVR-MS 文件:
del /F "Recorded TV Show.dvr-ms"
转换后,VLC 将提供有关“Recorded TV Show.mp4”的以下详细信息:
我转换的文件现在是 530MB(从 1.59GB 减少),包含 1 小时 50 分钟的 SD 内容。这意味着它大约是原始 WTV 文件大小的 1/3。
答案2
我能够使用 ffmpeg 来完成这个任务,但花了些时间才找到可用的开关。不确定这些开关是否是最佳的,转换时间也更长,但它很干净,在我尝试过的所有地方都可以播放,音频正确且同步。
ffmpeg -y -threads 8 -i pbsvideofile.wtv -target pal-dvd -deinterlace -async 48000 pbsvideofile.mpg
答案3
根据@suken的回答,我能够进行批量转换。使用我当时使用的ffmpeg版本,它可以直接从.wtv转换为.mp4。
gci 'D:\Recorded TV\*' -include('*lola*','*buzzcocks*') | % {
$file = $_.Name
.\ffmpeg -i $_ -vcodec copy -acodec copy -f dvd -deinterlace -map_metadata 0 "D:\Media\TV\$file.mp4"
}
在上文中:
- “D:\Recorded TV”是源位置
- “D:\Media\TV”是目标位置
- 正在进行过滤,仅包含文件名中带有“lola”和“buzzcocks”的节目(如果您愿意,可以将其删除)
该命令尝试传输元数据(例如显示标题和说明),但似乎无法在目标文件中获取。您可以尝试WTV-MetaRenamer首先。