跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

蓝光原盘压硬字幕并跳过前 10 秒

找到个未加密的原盘,里面有一堆字幕轨,发现第一轨(0:s:0)是需要的字幕。

字幕的前几秒是一些观影说明,也可以一同去掉(大约 10 秒长度)

蓝光里的音频倒是有一堆,直接用第一个音轨(0:a:0)就行。

目标播放设备不支援 x265 也不支援 10 bit,因此编码器选择的是 x264 以及 Profile 为 [email protected]

跟着网上找的说明,加上一些 B帧、引用帧的设定以及一些调整,最终的压制脚本如下:

#!/bin/sh

set -ex

INPUT_PATH="bluray:/path/to/disk"
OUTPUT_PATH="/tmp/Film.name.YYYY.1080p-ENCODE.mp4"

META_TITLE="中文名 - 外文名 (年份)"
AUDIO_MAP="0:a:0"

nice -n 15 -- \
ffmpeg -stats -i "${INPUT_PATH}" \
  -filter_complex "[0:v:0][0:s:0]overlay=0:0:enable='gte(t,10)'" \
  -metadata title="${META_TITLE}" \
  -movflags +faststart \
  -c:v libx264 \
  -crf 20 \
  -flags +loop \
  -deblock 0:0 \
  -bf 16 -b_strategy 2 -refs 6 -maxrate 12M \
  -profile:v main -level 4.0 \
  -preset slow -tune animation \
  -c:a libfdk_aac -vbr 5 \
  -map "0:v:0" -map "$AUDIO_MAP" \
  "$OUTPUT_PATH"

如果是 Windows 环境,可能使用 AviSynth 脚本会比较好一些?调滤镜什么的也方便。

最后压出来的视频大概 2 个小时长,因为 B 帧 设定得比较大,每次快进都是 5 秒一跳;不过考虑到视频是拿来本地收藏用的,还是能够接受。

参考资料 #

  1. 介绍 ffmpeg 中对应的 x264 选项的文档:
    https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
  2. 对 ffmpeg 中使用 -deblockalpha 参数却不能使用的解决方案:
    https://stackoverflow.com/a/23539599
  3. ffmpeg 百科对滤镜的教程:
    https://trac.ffmpeg.org/wiki/FilteringGuide
  4. ffmpeg 的滤镜文档:
    https://ffmpeg.org/ffmpeg-filters.html

知识共享许可协议 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论区