蓝光原盘压硬字幕并跳过前 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 秒一跳;不过考虑到视频是拿来本地收藏用的,还是能够接受。
参考资料
- 介绍 ffmpeg 中对应的 x264 选项的文档:
https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping - 对 ffmpeg 中使用
-deblockalpha
参数却不能使用的解决方案:
https://stackoverflow.com/a/23539599 - ffmpeg 百科对滤镜的教程:
https://trac.ffmpeg.org/wiki/FilteringGuide - ffmpeg 的滤镜文档:
https://ffmpeg.org/ffmpeg-filters.html