VCD转录报告.md

VCD 转录报告 — 《法国·朋友 France·Friends》附赠 VCD(9 首影音写真)

方法完全参照 dl-hub/66-VCD转录/:内核 sr 驱动读不了 VCD 的 Mode2 Form2 扇区(报 Illegal mode for this track),必须用 SG_IO 的 READ CD(0xBE) 原始抓取,再按 24 字节偏移取 2324 字节负载得到标准 MPEG-1 PS。


一、光盘识别

项目值
卷标VolumeLabel · 系统标识 CD-RTOS CD-BRIDGE(标准 VCD)
容量167,684 扇区 = 394.4 MB raw(343.4 MB 用户数据)
可读性全盘 167,684 扇区 0 坏扇区(逐块扫描确认)
视频段落/MPEGAV/AVSEQ01.DAT … AVSEQ09.DAT(9 段)
画面 / 声音MPEG-1 352×288 @25fps(PAL) / MPEG-1 Layer II 44.1kHz 立体声
附带/CDI(CD-i 播放器)、/VCD(INFO/ENTRIES/LOT/PSD)、/SEGMENT/ITEM0001.DAT、/EXT

⚠️ 这颗盘的 TOC 已损坏(读出来首轨 LBA 为负、跨度仅 233 扇区,明显不合理),但数据区完好。因此本次不依赖 TOC,改用 disc_map.py 全盘逐块扫描 + ISO9660 目录解析来定位内容。


二、产出

1) 03-MP4/(9 段,按封底曲目命名)

命名规则沿用 66 目录:VCD-<序号>-<曲目名>-<时长>.mp4

#曲目时长体积
01Ballade Pour Adeline 艾德琳的诗(广场)2:4516.4 MB
02Diva 迪娃3:0922.0 MB
03Forgetting 遗忘3:5630.2 MB
04Friends 朋友4:3230.8 MB
05Place De Sun Airport / Listen To The Sea 日光机场·听海3:2627.5 MB
06Aquarello 水彩画3:5732.9 MB
07Desperado 亡命之徒4:5351.7 MB
08Piano Concerto No.1 Tchaikovsky 柴可夫斯基第一钢琴协奏曲4:0932.8 MB
09Memory 记忆5:1673.6 MB

播放顺序.txt 为播放清单。9/9 完整解码校验通过(无错误)。

2) 02-MPEG母版/(无损母版,可直接再转码)

提取出的标准 MPEG-1 Program Stream(avseq01.mpg … avseq09.mpg + 附带段),未经任何重编码,是从光盘直接取的字节流。以后要换参数重转(比如换更快的编码器、做超分、切片段)都从这里出,不用再动光盘。

3) VCD-disc.img(394.4 MB)

整盘 raw 镜像(2352 B/扇区),VCD-disc.err.json 记录坏扇区清单(0 个)。留着可用于复核或换工具再提取。


三、关键发现:《朋友》MV 的母盘就在这里

VCD-04 就是此前做高清修复的那支《朋友》MV,且是母盘:

本 VCD(母盘)此前网上下载的源
来源原版光盘B站(转自优酷)
分辨率352×288(PAL,25fps)320×240(15fps)
时长4:324:23
水印无右上角「优酷」+ 右下角「DivX」
画面干净有块状压缩痕迹

判定依据(两条独立证据):

  1. 音频内容匹配:用自相似/chroma 滑窗比对(find_song_in_vcd.py),视频取样在 avseq04 的 ≈186s 处取得最高相关(8.15,领先第二名 24%);
  2. 画面核对:取 avseq04 的 186s / 200s 帧,能看到与 B 站版相同的回廊庭院场地、同机位(竖琴/大提琴手、吉他手安吉利斯、克莱德曼在钢琴前)+ 天使之音合唱团。

→ 这为后续的"高清修复"提供了更好的起点:像素数是 320×240 的 1.32 倍(352×288),且没有二次转码与水印。建议后续用本 VCD 的 avseq04 重跑一遍修复。

注:VCD 与 B 站版的剪辑节点不同(4:32 vs 4:23),不是简单拉伸关系;B 站版应是当年从该 VCD 转录后再剪辑转码的。


四、内容总览

九段总览

VCD九段内容总览.png 为 9 段中间帧的 3×3 拼图:可见这是"达芬五大巨星影音写真"的实拍演奏影像(克莱德曼弹琴、安吉利斯弹吉他、狄亚哥吹排笛等),场地多为古堡/庭院/舞台。

母盘对比

对比图-VCD母盘vsB站转码.png:左=本 VCD 原始(352×288,干净),右=B 站版(320×240,带「优酷」水印与硬字幕)。


五、技术要点与踩坑

  1. 内核 sr 驱动读不了 VCD 数据:READ(10) 报 Illegal mode for this track(ASC 0x64),因为数据在 Mode2 Form2 扇区(用户数据 2324 B)。必须用 READ CD(0xBE),flags=0xF8(SYNC|HEADER|USERDATA|EDC/ECC)取 2352 B → 跳过 24 字节取 2324 字节负载。
  2. 单次 SG_IO 传输上限 120 KB(/sys/block/sr0/queue/max_sectors_kb)→ 每次最多 52 扇区(122,304 B);53 扇区就报 EIO。
  3. 抓取范围不能信 TOC:本盘 TOC 损坏(首轨 LBA 为负)。改用设备容量(READ CAPACITY 0x25 = 167,684)作为末端,全盘抓取 0 个坏扇区。
  4. 换盘后首次读取会失败:用户换盘后我第一次扫描报 104 个扇区读不到、PVD 无效;稍后重试即完全正常——新盘插入后需给驱动器留出稳定时间,别急着判定坏盘。
  5. 降速有利于救数据:抓取用 4–8x(默认 24x 太快),本次 0 坏扇区。
  6. TOC 解析的字段布局:SCSI READ TOC(0x43, format 0)每条描述符 8 字节 = [session, ADR/CTRL, TNO, POINT, MIN, SEC, FRAME, 0],M/S/F 从第 5 字节(偏移 4)开始;我一开始按偏移 5 取导致 LBA 全错。
  7. sudo 与 setsid 组合会吃掉密码输入:要写成 echo pw | sudo -S bash -c '... setsid nohup ... &';另外被 root 创建的日志文件普通用户无法覆盖,日志路径要换新名。

六、复现

cd ~/Downloads/vcd-rip                      # 参照任务留存的完整工具集
sudo python3 disc_scan.py                   # 列目录树 + 建议抓取范围
sudo python3 ~/Downloads/disc_map.py --speed 4 --retries 2   # 全盘可读性扫描(可选但推荐)
sudo python3 -u rip_raw.py --out VCD-disc.img --maperr VCD-disc.err.json \
     --start 0 --end 167684 --chunk 52 --speed 8             # raw 抓取
python3 extract_vcd.py VCD-disc.img 02-MPEG母版               # 提取 MPEG-PS
bash 99-脚本/encode_vcd_set.sh 02-MPEG母版 03-MP4              # 转 MP4(命名+转码)
python3 99-脚本/find_song_in_vcd.py --video <已知MV> --seg-dir 02-MPEG母版   # 内容比对定位曲目

附:目录结构

69-CD套装VCD转录/
├── 03-MP4/                 9 段 MP4 + 播放顺序.txt(约 320 MB)
├── 02-MPEG母版/            无损 MPEG-1 PS 母版(可直接再转码)
├── 99-脚本/                encode_vcd_set.sh / vcd_toc.py / disc_map.py / find_song_in_vcd.py / toc_dump.py
├── VCD-disc.img            整盘 raw 镜像 394.4 MB(0 坏扇区)
├── VCD-disc.err.json
├── VCD九段内容总览.png
├── 对比图-VCD母盘vsB站转码.png
└── 本报告
下载此文件