doco: ep003 全流程跑通(P1→C4)+ OCR并发版 + compose出稿改名
This commit is contained in:
+30
-20
@@ -16,9 +16,9 @@
|
||||
|
||||
## 🔖 状态栏 (STATUS — 每次结束 session 前必须更新这三行)
|
||||
|
||||
- **最后更新**:账号A | 2026-06-18(建议接手者开新 session)
|
||||
- **当前状态一句话**:C4 已收口 + **A稿解析器升级完工**(正则→LLM分段骨架+人工确认+ignore合并,三期 ep002/003/004 骨架已产并人工核验通过:人名零泄露/覆盖完整/隔断与小剧场正确)。**但 ep002/003/004 上游全空**(连抽帧都没做)。下一步=**这三期从 P1 抽帧起走完整流水线 P1→P2→C1→C2→C3→C4 + 串一键脚本**。
|
||||
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」(新 session 必读)
|
||||
- **最后更新**:账号A | 2026-06-18(晚,收摊;建议接手者开新 session)
|
||||
- **当前状态一句话**:**ep003(小尺寸大讲究)全流程 P1→P2→C1→C2→C3→C4 端到端跑通,通哥已复查、管道判过**——产出 `..._孙逸昊_融合A稿.docx`,红线汉字零改/对齐正确(4 空段=播出剪掉的狙击枪段,非 bug)。**复查发现一个必修项:标点层整篇偏保守(88% 逗号),ep002 铺开前要修标点 prompt**(详见待办);专家/三维动画标签缺失=原稿没标、不赖程序。**ep002/ep004 上游仍全空**,下一步=配 Ollama 并发 + 修标点后跑这两期。
|
||||
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」(新 session 必读,已为 ep002/ep004 重写)
|
||||
|
||||
---
|
||||
|
||||
@@ -77,13 +77,14 @@
|
||||
|
||||
## 3. 当前进度(核心交接区,以最新快照为准)
|
||||
|
||||
- **正在做**:批量化首批三期(ep002 潜艇/ep003 小尺寸/ep004 枪王)。已完成 A稿解析器升级 + 三期骨架产出并人工核验通过。**下一步:这三期从 P1 抽帧起跑完整流水线**(上游全空,连抽帧/OCR/ASR 都没做),并把 C1→C2→C3→C4 串成一键脚本。
|
||||
- **卡点 / 待解**:无硬卡点。待 Cline 确认 Step5(parse_a_segments 改造)+Step6(compose 前置检查)是否已接好(上一轮其措辞含糊)。OCR 漏字决定不补、seg8/seg27 一逗到底(见关键决策)。
|
||||
- **正在做**:批量化首批三期。**ep003 已端到端跑通**(P1→P2→C1→C2→C3→C4 全过,融合A稿出稿,红线/对齐核验通过)。**下一步:ep002(潜艇)+ ep004(枪王)跑完整流水线**,并发 OCR 在 ep002 首秀;再把 C1→C2→C3→C4 串一键脚本。
|
||||
- **卡点 / 待解**:无硬卡点。**ep002 跑前必做:配 Ollama 并发**(设 `OLLAMA_NUM_PARALLEL=4` + 重启 Ollama + 看显存别溢出共享内存;客户端 stage_a 已改 4 线程,两边都要才生效)。OCR 漏字决定不补、seg8/seg27 一逗到底(见关键决策)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 已完成(只追加,最新在最上)
|
||||
|
||||
- [2026-06-18 晚 |账号A] **ep003(小尺寸大讲究)批量首期·全流程端到端跑通**(P1→P2→C1→C2→C3→C4 六阶段)。产出 `20260331枪械设计中的小尺寸大讲究_孙逸昊_融合A稿.docx`。逐阶段实测数:P1/P2 出 **B稿_v2.txt 698 行**(OCR 串行,未用并发);C1 出 **60 热词**(词典累至 172 条,AI 候选回查 A稿无幻觉);C2 讯飞真转写 **278 句带时间戳**(热词偏置生效,型号命中良好);C3 fuse 698 行零偏移、仅 1 处 minor_edit、留痕 1 条;C4 compose 20 段、硬校验**汉字零改逐段通过**、1 处标点回退(seg_6)。**核验三连**:① **4 个空段(seg15–18:主持人7/解说8/主持人8/解说9)确认是播出剪掉的 VSS 微声狙击枪 + NTW-20 南非大炮整段**——融合B稿里 VSS/NTW/南非/消音/反器材**零出现**,seg14 边界抽查(593–681 全 HK416、682 起进结束语)证对齐正确,非 bug;② **C3 同音字坑已抓修**:LLM 把权威 B稿"斯泰尔"按 ASR 同音盖成"斯太尔"(519 行),已改回,与 487 行及 A稿一致;③ **出稿命名生效**——`{原A稿stem}_融合A稿.docx`,不覆盖原始定稿。**本期间改的代码**:(a) `stage_a_extract_ocr.py` 修 GBK 崩溃(ffmpeg 子进程加 `encoding=utf-8,errors=replace`)+ 去掉 A3 硬编码 ep001 台词断言改通用中文冒烟检查 + **加并发 OCR(ThreadPoolExecutor/`OCR_NUM_WORKERS`默认4/idx-set 续跑)**——并发**未在 ep003 实跑**(ep003 走串行),ep002 首秀;(b) `fusion_align.py` a_candidates glob 排除"融合/批改"稿(防重跑把自己输出当输入) + 出稿改名带原稿信息。
|
||||
- [2026-06-18 |账号A] **A稿解析器升级:正则 → LLM分段骨架 + 人工确认 + ignore合并**。起因:量产三期(ep002/003/004) A稿格式与 ep001 天差地别(冒号头/正文同段、`【固摇轨】`镜头标记酷似段头、正文整段加粗、小剧场对话角色头),原 `parse_a_segments` 纯正则(`^【.+?】$`)必散架。新机制(`fusion_align.py`):`extract_a_paragraphs`(带 bold/align 样式) → `extract_skeleton_llm`(thinking=True/max_tokens足量,**LLM 只判结构不碰正文**,输出 type/role_label/para 区间 JSON) → `validate_skeleton_coverage`(全覆盖硬校验,抓 LLM 数错下标/JSON 截断) → 落 `<id>_a_skeleton.json` + 人类预览表 → `parse_a_segments` 改读骨架按下标原样抽正文(inline 头切冒号、standalone 头取后续段、**ignore 段丢弃**、**相邻同 role_label 仅隔 ignore 的 normal 段合并**)。新命令 `doco skeleton --episode-id <id> --a-script <docx>`。**三期骨架已产并人工核验通过**:人名零泄露(刘通/孙逸昊/左鑫/穆佩弦/主持人真名都没混进 role_label)、覆盖完整、ep002 四隔断认对、ep003 九个`(出枪柜)`等归 ignore 且主持人被运镜切断后正确合并(37→20段)、ep004 小剧场卡/斯角色保留。ep001 无骨架时仍走旧正则 fallback,不受影响。
|
||||
- [2026-06-18 |账号A] **P3-C4 第一批(保守版)收口**:`fusion_align.py` 把融合B稿743行碎句按 A稿 28 段(含 4 隔断)对齐归拢,套公文 docx 出稿 `融合A稿.docx`。**两条铁律守死**:①汉字零改——正文 100% 来自融合B稿;②标点由 LLM 按语义增删(一逗到底→正常断句)。机制:(a) **AI 对齐层**喂完整 A稿正文、seg_id 单调不减、thinking=True/4096、缓存 `.c4_cache/batch_N.json`;(b) **标点层** `punctuate_segment` 用 STRICT prompt(只许插标点、禁增删改字)+ 硬校验 `strip_punct(出)==strip_punct(入)` 不过即 3 次重试、再不过回退裸文本进 review,缓存 `punct_seg_N.json`,thinking=False/3000。**红线核验脚本逐段 strip_punct 比对 28/28 全过**(diff 全 equal)。隔断按 `^隔断:【(.+?)】` 正则识别、独立成段、line_count=0、位置正确(解说1/主持人2/3/4 后各一)。标点 `punct_ok` 26/28;seg8(专家2)、seg27(专家7) 两段 LLM 顽固插连接词触发回退、已落裸文本+标记"需人工",归第二批。产物:`融合A稿.docx` + `c4_alignment.csv`(32行对齐表,含 start/end_line、confidence、punct_ok、note)。命令 `doco compose --episode-id <id>`。
|
||||
- [2026-06-17 |账号A] **P3-C3 收口**:`fusion_review.py` 逐行复审 B稿v2 ⊕ ASR(22 批×35行=743行),产 `融合B稿.txt`(行数/时间戳零偏移)+ `fusion_review.csv`(5条真OCR纠错留痕)。关键机制:断点缓存 `.c3_cache/batch_N.json` 可复用;硬校验行数/时间戳/change_type枚举不过不写文件;后处理修正 `final_text==B原文` 被 LLM 误标为 `minor_edit` 的行(19→5)。`--no-ai` 全 unchanged 可验证管道。
|
||||
@@ -99,7 +100,11 @@
|
||||
- [x] **C3**:B稿v2 ⊕ ASR 交叉复审 → 融合B稿(743行时间戳零偏移) + fusion_review.csv(5条留痕)。
|
||||
- [x] **C4(全部收口)**:融合B稿按 A稿28段对齐归拢 → 融合A稿 docx(公文格式)。汉字零改 + LLM 按语义加标点,红线 28/28 段逐字一致。`doco compose --episode-id <id>`。**OCR 漏字决定不补**(讨论见关键决策);seg8/seg27 两段标点接受一逗到底。
|
||||
- [x] **A稿解析器升级**:正则 → LLM分段骨架+人工确认+ignore合并;三期骨架已产并核验通过。`doco skeleton`。
|
||||
- [ ] **批量化首批三期·跑完整流水线(下一步主线)**:ep002/003/004 上游全空(连抽帧都没做)。需对每期跑 **P1抽帧 → P2 OCR(出B稿v2) → C1术语 → C2 ASR → C3融合(出融合B稿) → C4 compose(出融合A稿)**。重活在 P2 OCR(本地约半小时/期)与 C2 ASR(讯飞额度)。建议从 **ep002(最规整)** 起当烟雾测试,再 ep004(最难)、ep003。**注意:现在还不能直接跑 doco compose——三期都没有融合B稿。**
|
||||
- [~] **批量化首批三期·跑完整流水线(下一步主线)**:**ep003 已跑通收口**(见已完成)。剩 **ep002(潜艇,中等)+ ep004(枪王,最难·小剧场密)** 仍上游全空。每期顺序 **P1抽帧 → P2 OCR(出B稿v2) → C1术语 → C2 ASR → C3融合 → C4 compose**。重活在 P2 OCR 与 C2 ASR(讯飞额度)。**ep002 跑前先配 Ollama 并发**(见下条 backlog)。stage 脚本从**已修好的 ep003 版**复制,别再拿 ep001 的。
|
||||
- [ ] **【ep002 跑前必做·其一】标点层 prompt 修复(高优)**:ep003 复查实锤标点层整篇偏保守——逗号 511 vs 句号 70(断句标点 88% 逗号),语义该断句处全是逗号。根因判断:标点层关 thinking + STRICT prompt 只强调"别改字"、没强调"完整陈述句结尾用句号"。修法:prompt 里明确要求正常断句 + 给反例(过度逗号→句号),**有 strip_punct 硬校验兜底,标点层可放开手脚不怕越界**。修完重跑 ep003 `doco compose` 刷新 docx。不破红线(汉字零改),但不修则每期都要人工大改标点=自动化失义。
|
||||
- [ ] **【ep002 跑前必做·其二】配 Ollama 并发**:设 `OLLAMA_NUM_PARALLEL=4` + 重启 Ollama(托盘退再开,别在有任务时退) + 重启后看显存别溢出共享内存。客户端 stage_a 已是 4 线程,光设环境变量没用,两边都要。
|
||||
- [ ] **【产品 backlog】原稿缺【专家N】/【三维动画N】标签**:ep003 复查发现编导原稿里就没有专家、后续三维动画的分段标注,骨架如实反映=融合A稿里也没有(通哥手工补了高亮)。不赖程序(原稿零信号,LLM 与人一样猜不准),**不让程序猜**。治本=提醒编导/责编原稿把【专家N】等段头标全;50 期前在导入须知里写清。
|
||||
- [ ] **【backlog】C3 prompt 收紧**:专有名词(厂名/型号/番号)遇 ASR 同音异写,必须以 B稿v2/A稿为准、不许采 ASR——ep003 已踩"斯泰尔→斯太尔",50 期批量前在 prompt 里收紧防复发。
|
||||
- [ ] **串一键脚本**:把 C1→C2→C3→C4 串成"一条命令跑一期"(薄壳,各阶段已有断点缓存),验 2-3 期稳定后再谈监控文件夹/绑定界面。
|
||||
- [ ] **骨架小瑕疵 backlog(不拦路,后期顺手或跳过)**:ep002 演播室主持人 vs 主持人 是否统一;ep004 小剧场角色编号乱(斯9/斯通纳10、卡8跨场)直接改 JSON 即可,不必重调 LLM;ep003 行内`【固摇轨】`留在参照正文(无害,不进输出)。
|
||||
- [x] **C2** 讯飞 ASR 适配层(密钥外置 + asr_adapter 并入 + `doco asr` 命令 + 真转写310句)
|
||||
@@ -129,6 +134,9 @@
|
||||
- [2026-06-16] **C1 术语源 = A稿(规范写法),不是 B稿。** Cline 曾擅自换成 B稿v2,已纠正。
|
||||
- [2026-06-15] **讯飞用「录音文件转写标准版」,不要大模型版**(免费包阉割 `language` 参数,会报误导性 `language verify fail`)。参数锁定:`pd=mil`、`eng_smoothproc=true`、`eng_colloqproc=true`、`hotWord=<C1热词>`、`language=cn`。签名 `signa=base64(HmacSHA1(MD5(appid+ts), secretKey))`;`/upload` 拿 orderId,轮询 `/getResult` 到 status=4。
|
||||
- [2026-06-15] **B稿v2 权威升级**:屏幕术语/型号/番号 **B稿v2 ≈ A稿 并列权威**(B稿是屏幕实打的字,更贴近播出)。口语/语序/语气信 ASR;书面结构/分段信 A稿;同音事实错(美以→美伊)用 A稿/B稿v2 覆盖 ASR。
|
||||
- [2026-06-18 晚] **C3 会拿 ASR 同音字盖权威 B稿专名——必须核验留痕、专名一律以 B稿/A稿为准。** ep003 实证:B稿"斯泰尔"(奥地利厂名)被 C3 LLM 按 ASR 同音改成"斯太尔",造成 487/519 行不一致。已手改回。这正是上条权威规则的反例落地:**厂名/型号/番号遇 ASR 同音异写,零容忍采 ASR**。50 期批量前应在 C3 prompt 收紧(见待办 backlog);每期 fuse 后扫一眼 `fusion_review.csv` 的 minor_edit 是不是专名同音改。
|
||||
- [2026-06-18 晚] **C4 出现空段≠对齐 bug,先查"是不是播出剪了这段"。** ep003 有 4 个空段(seg15–18 整段 VSS 微声狙击枪 + NTW-20),一度疑似对齐错乱。核验路径:去**融合B稿**里 grep 该段专属词(VSS/NTW/南非/消音/反器材),零命中=播出确实剪了;再抽查相邻实段边界确认没把别段内容错塞过来。结论是 C4 如实留空、对齐正确。**空段是常态(播出删戏),别当 bug 去"修"。**
|
||||
- [2026-06-18 晚|通哥复查] **C4 标点层整篇偏保守是真缺陷,须在批量铺开前修——但不破红线。** ep003 复查实测逗号 511 vs 句号 70(断句标点 88% 逗号),语义该断处全逗号。根因:标点层关 thinking + STRICT prompt 只强调"别改字"未强调"句子结尾用句号"。**红线(汉字零改)由 strip_punct 守着没破,所以标点层尽可放开 prompt 让它正常断句、不怕越界**。修复列 ep002 前必做,修完重跑 ep003 compose 刷 docx。这条把先前"seg8/seg27 一逗到底可接受"的范围收窄:个别段一逗到底可接受,但整篇 88% 逗号不可接受、必须修。
|
||||
- [设计期] **分层不变**:OCR 错字纠正、术语统一、时间戳对齐走**规则层**(确定性);段落归属、整段删除判定、编导笔误识别走 **AI 层**(需语义判断)。
|
||||
- [设计期] **顺序约束**:术语提取(C1,产热词)必须在 ASR(C2)之前——已成立。
|
||||
- [2026-06-17] **`fusion_review.csv` 定位 = 留痕档案(给爱德华/复核),不是编导读物。** 编导读的是 C4 docx。CSV 可读性不优化,只看 final_text 准不准。
|
||||
@@ -140,22 +148,24 @@
|
||||
|
||||
## 7. ⏩ 交接备注(写给下一个接手的 session)
|
||||
|
||||
> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(本段已为「ep002/003/004 批量化」新 session 重写,2026-06-18)**
|
||||
> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(本段已为「ep002 + ep004 续跑」重写,2026-06-18 晚)**
|
||||
|
||||
- **大局**:首期 `ep001_20260612_fangkong_fandao` 全流程 C1→C4 已跑通、红线核验 28/28 逐字一致、`融合A稿.docx` 就位。代码管道(C1 terms / C2 asr / C3 fuse / C4 compose + 新增 skeleton)全部可用。现在进入**量产首批三期**。
|
||||
- **这三期现状(关键!)**:`ep002_20260127_qianting_fangsheng`(潜艇仿生,中等)/`ep003_20260331_qiangxie_chicun`(小尺寸大讲究,最简单)/`ep004_20260526_qiangwang_duijue`(枪王对决,最难)。**只做了 A稿分段骨架(skeleton),上游一片空白**——没抽帧、没 OC、没 B稿v2、没 ASR、没融合B稿。每期目录里现有:原始 A稿 docx + mp4(约 1GB,规格与 ep001 同 = 黑底白字字幕视频,OCR/ASR 共用)+ `<id>_a_skeleton.json` + `<id>_a_skeleton_preview.txt`。
|
||||
- **骨架已人工核验通过**(通哥过目):人名零泄露、覆盖完整、隔断/小剧场/ignore 分类正确。ep003 还修过两个真缺陷(主持人被 ignore 切成重复同名段→已合并 37→20;预览表"前20字"显示错位→已修)。**所以 skeleton 阶段对三期都算完成,别重跑。**
|
||||
- **第一句话该干的**:**给这三期补上游流水线**。每期顺序:P1 抽帧 → P2 本地 OCR(DeepSeek-OCR/Ollama,约 30min/期,放独立终端)→ C1 术语热词 → C2 讯飞 ASR(花额度)→ C3 fuse → C4 compose。**`doco compose` 现在跑不了这三期**(没有融合B稿,C3 的产物),别误试。
|
||||
- **推荐节奏**:先拿**最简单的 ep003** 当冒烟测试走完整条链验证管道,再 ep002,最后**最难的 ep004**(小剧场 58 段、历史人物对话密)。
|
||||
- **要串的一键脚本**:把 `doco terms → asr → fuse → compose` 串成"一条命令跑完一期"(C1→C4 链;P1/P2 OCR 可先独立跑因为重且慢)。**批量化形态(监控文件夹 vs 绑定界面)通哥还没拍板**,先把半自动脚本串顺、验 2-3 期稳定,再回来定要不要做花活。
|
||||
- **大局**:ep001 + **ep003 两期已全流程跑通**、融合A稿就位。代码管道(C1 terms / C2 asr / C3 fuse / C4 compose + skeleton)全部可用且经 ep003 实战验证。现在剩 **ep002 + ep004** 两期要跑。
|
||||
- **这两期现状(关键!)**:`ep002_20260127_qianting_fangsheng`(潜艇仿生,中等)/`ep004_20260526_qiangwang_duijue`(枪王对决,最难·小剧场密)。**只做了 A稿分段骨架(skeleton),上游全空**——没抽帧、没 OCR、没 B稿v2、没 ASR、没融合B稿。每期目录现有:原始 A稿 docx + mp4(约 1GB,规格与 ep001/ep003 同 = 黑底白字字幕,OCR/ASR 共用)+ `<id>_a_skeleton.json` + `<id>_a_skeleton_preview.txt`。骨架已人工核验过,**别重跑 skeleton**。
|
||||
- **第一句话该干的**:**ep002 起跑上游流水线,但跑 P2 OCR 前先配 Ollama 并发**(ep003 是串行跑的,慢)。配法:设 `OLLAMA_NUM_PARALLEL=4` → 重启 Ollama(托盘退再开,别在有任务时退)→ 重启后看显存别溢出共享内存。**客户端 stage_a 已改 4 线程(`OCR_NUM_WORKERS` 默认 4),光设环境变量不生效,两边都要。** 并发是 ep002 首秀,盯一眼是否真比串行快、有没有掉帧/重复行(stage_a 用 idx-set 续跑,乱序写安全)。
|
||||
- **每期顺序**:P1 抽帧 → P2 OCR(DeepSeek-OCR/Ollama,独立终端)→ C1 术语 → C2 讯飞 ASR(花额度)→ C3 fuse → C4 compose。**stage 脚本从已修好的 `ep003` 目录复制,别拿 ep001 的**(ep003 版已修 GBK 崩溃 + 去掉硬编码 ep001 台词断言 + 加并发)。`doco compose` 跑前必须先有融合B稿(C3 产物),否则报错——别跳着试。
|
||||
- **推荐节奏**:先 ep002(中等、当并发烟雾测试),最后 ep004(最难,小剧场历史人物对话密)。
|
||||
- **量产坑(务必记住)**:
|
||||
1. 每期热词/术语不同,**C1 每期重跑**;A稿分段编号各有各的重复/空格脏,**按出现顺序走、别假设单调唯一**,任何按段头文本做 key 的字典都会把重复段头合并(核验脚本初版踩过,用 occurrence 队列)。
|
||||
2. **ASR 花讯飞额度、embedding 花 MiniMax 额度**,批量前估下成本;长转写/OCR 放独立终端别让 Cline 盯。
|
||||
3. **OCR 漏字本期不补**(通哥拍板,见关键决策)——根在抽帧/OCR 漏掉两三字单屏,LLM 补词=破红线;治本是提醒编导别让两三字单独一屏。
|
||||
4. Cline 会偷换模型/术语源、误判字数、口头猜错根因——**自报结果一律对源数据核验**。
|
||||
5. **thinking 分任务用**:语义对齐/骨架开、标点/抽取关(见关键决策 2026-06-18)。
|
||||
- **代码待落实的两处(让 Cline 确认已接线,没接就先接)**:① `parse_a_segments()` 改造(读 skeleton.json 抽正文、丢 ignore、合并 ignore 切断的同角色段)是否真生效;② `run_compose` 的"compose 前置检查"(无融合B稿/无骨架要报清错而非跑崩)是否真加。
|
||||
- **骨架小瑕疵 backlog(非阻塞,可不动)**:ep002「演播室主持人」与「主持人」可统一称呼;ep004 小剧场角色编号(卡8/斯9/斯通纳10 等)可清成连续(直接改 JSON,**别重跑 LLM**);ep003 参考正文里内联的 `【固摇轨】` 镜头标记无害。
|
||||
1. 每期热词/术语不同,**C1 每期重跑**;A稿分段编号各有各的重复/空格脏,**按出现顺序走、别假设单调唯一**。
|
||||
2. **C3 fuse 后必扫 `fusion_review.csv`**:专名(厂名/型号/番号)若被 ASR 同音字改了要打回(ep003 踩过"斯泰尔→斯太尔",见关键决策)。
|
||||
3. **C4 出现空段先别当 bug**:多半是播出剪了那段戏,去融合B稿 grep 该段专属词确认(见关键决策)。
|
||||
4. **OCR 漏字本期不补**(通哥拍板)——根在抽帧/OCR 漏两三字单屏,LLM 补词=破红线。
|
||||
5. **ASR 花讯飞额度、embedding 花 MiniMax 额度**;长转写/OCR 放独立终端别让 Cline 盯。
|
||||
6. Cline 会偷换模型/术语源、误判字数、口头猜错根因——**自报结果一律对源数据核验**。
|
||||
7. **thinking 分任务用**:语义对齐/骨架开、标点/抽取/融合关(见关键决策 2026-06-18)。
|
||||
- **出稿命名已改**:`{原始A稿stem}_融合A稿.docx`(不覆盖原始定稿);`fusion_align.py` 选 A稿的 glob 已排除"融合/批改"字样,重跑 compose 不会把自己输出当输入。
|
||||
- **串一键脚本(ep002/ep004 验稳后做)**:把 `doco terms → asr → fuse → compose` 串成"一条命令跑完一期"(C1→C4;P1/P2 OCR 重且慢,先独立跑)。批量化形态(监控文件夹 vs 绑定界面)通哥未拍板,先把半自动脚本串顺。
|
||||
- **骨架小瑕疵 backlog(非阻塞)**:ep002「演播室主持人」vs「主持人」可统一;ep004 小剧场角色编号(卡8/斯9/斯通纳10)可清连续(直接改 JSON,别重跑 LLM)。
|
||||
- **字体坑(C4 出稿)**:大标题方正小标宋_GBK(商业字体),出稿前确认制片机/编导机已装,否则脚本回退(标宋→宋体加粗)。
|
||||
- 通哥连轴转了几轮,回复要紧凑。
|
||||
|
||||
|
||||
+508
-8
@@ -435,9 +435,10 @@
|
||||
"term": "美国",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep001_20260612_fangkong_fandao"
|
||||
"ep001_20260612_fangkong_fandao",
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
"frequency": 2
|
||||
},
|
||||
"以色列": {
|
||||
"term": "以色列",
|
||||
@@ -515,9 +516,10 @@
|
||||
"term": "主持人1",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep001_20260612_fangkong_fandao"
|
||||
"ep001_20260612_fangkong_fandao",
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
"frequency": 2
|
||||
},
|
||||
"专家1": {
|
||||
"term": "专家1",
|
||||
@@ -539,9 +541,10 @@
|
||||
"term": "主持人2",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep001_20260612_fangkong_fandao"
|
||||
"ep001_20260612_fangkong_fandao",
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
"frequency": 2
|
||||
},
|
||||
"专家3": {
|
||||
"term": "专家3",
|
||||
@@ -563,9 +566,10 @@
|
||||
"term": "主持人3",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep001_20260612_fangkong_fandao"
|
||||
"ep001_20260612_fangkong_fandao",
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
"frequency": 2
|
||||
},
|
||||
"专家5": {
|
||||
"term": "专家5",
|
||||
@@ -878,5 +882,501 @@
|
||||
"ep001_20260612_fangkong_fandao"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"FP-45": {
|
||||
"term": "FP-45",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"50AE": {
|
||||
"term": "50AE",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"PP-2000": {
|
||||
"term": "PP-2000",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"弹道": {
|
||||
"term": "弹道",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"日本": {
|
||||
"term": "日本",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"俄罗斯": {
|
||||
"term": "俄罗斯",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"陆军": {
|
||||
"term": "陆军",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"北约": {
|
||||
"term": "北约",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"主持人4": {
|
||||
"term": "主持人4",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"主持人5": {
|
||||
"term": "主持人5",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"主持人6": {
|
||||
"term": "主持人6",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"主持人7": {
|
||||
"term": "主持人7",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"主持人8": {
|
||||
"term": "主持人8",
|
||||
"domain": "person",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"FP-45“解放者”手枪": {
|
||||
"term": "FP-45“解放者”手枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
".45 ACP": {
|
||||
"term": ".45 ACP",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"沙漠之鹰.50AE": {
|
||||
"term": "沙漠之鹰.50AE",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
".50AE": {
|
||||
"term": ".50AE",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"PP-2000冲锋枪": {
|
||||
"term": "PP-2000冲锋枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"MP40冲锋枪": {
|
||||
"term": "MP40冲锋枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"MP18": {
|
||||
"term": "MP18",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"AUG突击步枪": {
|
||||
"term": "AUG突击步枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"M16A4步枪": {
|
||||
"term": "M16A4步枪",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"HK416": {
|
||||
"term": "HK416",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"M4A1卡宾枪": {
|
||||
"term": "M4A1卡宾枪",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"HK416 A5": {
|
||||
"term": "HK416 A5",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"VSS微声狙击步枪": {
|
||||
"term": "VSS微声狙击步枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"NTW-20大口径狙击步枪": {
|
||||
"term": "NTW-20大口径狙击步枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"毛瑟98k栓动步枪": {
|
||||
"term": "毛瑟98k栓动步枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"MG34重机枪": {
|
||||
"term": "MG34重机枪",
|
||||
"domain": "weapon",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"M416": {
|
||||
"term": "M416",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"9×39毫米亚音速弹": {
|
||||
"term": "9×39毫米亚音速弹",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"20×82毫米大口径弹药": {
|
||||
"term": "20×82毫米大口径弹药",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"5.56×45毫米北约弹": {
|
||||
"term": "5.56×45毫米北约弹",
|
||||
"domain": "model",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"美国陆军": {
|
||||
"term": "美国陆军",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"通用汽车大陆制造分公司": {
|
||||
"term": "通用汽车大陆制造分公司",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"导航灯公司": {
|
||||
"term": "导航灯公司",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"图拉仪器设计局": {
|
||||
"term": "图拉仪器设计局",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"俄罗斯警察": {
|
||||
"term": "俄罗斯警察",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"内务部": {
|
||||
"term": "内务部",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"纳粹德军": {
|
||||
"term": "纳粹德军",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"奥地利斯泰尔公司": {
|
||||
"term": "奥地利斯泰尔公司",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"奥地利军队": {
|
||||
"term": "奥地利军队",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"德国黑克勒-科赫公司": {
|
||||
"term": "德国黑克勒-科赫公司",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"美军特种部队": {
|
||||
"term": "美军特种部队",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"海豹突击队": {
|
||||
"term": "海豹突击队",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"苏联特种部队": {
|
||||
"term": "苏联特种部队",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"南非丹尼尔防务公司": {
|
||||
"term": "南非丹尼尔防务公司",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"南非国防军": {
|
||||
"term": "南非国防军",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"盟军": {
|
||||
"term": "盟军",
|
||||
"domain": "org",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"二战": {
|
||||
"term": "二战",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"无托结构": {
|
||||
"term": "无托结构",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"导气结构": {
|
||||
"term": "导气结构",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"气吹式导气结构": {
|
||||
"term": "气吹式导气结构",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"活塞导气系统": {
|
||||
"term": "活塞导气系统",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"皮卡汀尼导轨": {
|
||||
"term": "皮卡汀尼导轨",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"模块化设计": {
|
||||
"term": "模块化设计",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"亚音速弹": {
|
||||
"term": "亚音速弹",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"反器材步枪": {
|
||||
"term": "反器材步枪",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"液压缓冲器": {
|
||||
"term": "液压缓冲器",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"集成式消音器": {
|
||||
"term": "集成式消音器",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"“海神之矛”行动": {
|
||||
"term": "“海神之矛”行动",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
},
|
||||
"车臣战争": {
|
||||
"term": "车臣战争",
|
||||
"domain": "tech_concept",
|
||||
"episodes": [
|
||||
"ep003_20260331_qiangxie_chicun"
|
||||
],
|
||||
"frequency": 1
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,698 @@
|
||||
[0m6s] 藏于方寸的敌后利器
|
||||
[0m9s] 锋芒毕露的火力先锋
|
||||
[0m12s] 穿梭街巷的近战精灵
|
||||
[0m14s] 主宰阵地的压制王者
|
||||
[0m18s] 同为枪械家族成员
|
||||
[0m20s] 为何长度取舍
|
||||
[0m21s] 各不相同
|
||||
[0m23s] 每一寸伸缩
|
||||
[0m24s] 都是对实战需求的
|
||||
[0m26s] 精准回应
|
||||
[0m27s] 每一款设计
|
||||
[0m28s] 都凝结着军工领域的
|
||||
[0m30s] 深邃考量
|
||||
[0m32s] 《军事科技》带您解码
|
||||
[0m34s] 枪械设计背后的
|
||||
[0m36s] 长短智慧
|
||||
[1m13s] 各位观众你们好
|
||||
[1m14s] 欢迎收看《军事科技》
|
||||
[1m16s] 我是主持人蓝皓
|
||||
[1m17s] 提到枪械
|
||||
[1m18s] 威力 精度
|
||||
[1m19s] 往往是我们关注的焦点
|
||||
[1m21s] 但是
|
||||
[1m22s] 有一个看似基础
|
||||
[1m23s] 却至关重要的设计
|
||||
[1m24s] 始终左右着枪械的实战性能
|
||||
[1m27s] 它就是长度
|
||||
[1m30s] 今天要聊的枪械
|
||||
[1m31s] 每一款的长度都大不相同
|
||||
[1m33s] 有的枪械要极致缩短
|
||||
[1m36s] 甘愿舍弃部分舒适与功能
|
||||
[1m38s] 有的却要刻意加长
|
||||
[1m40s] 坦然放弃部分便携性
|
||||
[1m42s] 首先我们来看
|
||||
[1m44s] 手枪
|
||||
[1m55s] 首先出场的是
|
||||
[1m56s] 短到可以塞进火柴盒里的
|
||||
[1m58s] 美国FP-45解放者手枪
|
||||
[2m2s] 我手里的这款模型
|
||||
[2m3s] 是为了让大家看得更加清楚
|
||||
[2m5s] 所以做了放大
|
||||
[2m6s] 据资料显示
|
||||
[2m7s] 它的实际长度只有141毫米
|
||||
[2m11s] 比我手掌的宽度还要短
|
||||
[2m13s] 大家仔细来看它的结构
|
||||
[2m16s] 握把的下半部分是中空的
|
||||
[2m18s] 打开滑动挡板
|
||||
[2m20s] 能够装10发
|
||||
[2m21s] .45 ACP备用弹
|
||||
[2m25s] 瞄准具也非常的简单
|
||||
[2m27s] 只有在枪管的前端
|
||||
[2m28s] 有一个小小的片状准星
|
||||
[2m31s] 在尾端挡板上
|
||||
[2m32s] 有一个切削的简易缺口
|
||||
[2m35s] 不仔细看几乎发现不了
|
||||
[2m37s] 当然 不能说它没有瞄准具
|
||||
[2m39s] 做到了极致的简单
|
||||
[2m42s] 更特别的是
|
||||
[2m43s] 它没有半自动的功能
|
||||
[2m45s] 每打一发
|
||||
[2m46s] 都得手动把尾部的待击块
|
||||
[2m49s] 然后再向左旋转
|
||||
[2m51s] 才能装下一发弹
|
||||
[2m53s] 那么如此短小的设计
|
||||
[2m55s] 却让这款不起眼的小手枪
|
||||
[2m57s] 成为了敌后斗争的
|
||||
[2m59s] 特殊利器
|
||||
[3m2s] 这是一把
|
||||
[3m3s] 用来换取更好枪支的武器
|
||||
[3m6s] 一个构思独特 简单
|
||||
[3m8s] 却又精妙绝伦的设计
|
||||
[3m13s] FP-45绰号解放者
|
||||
[3m16s] 是一款外形笨拙的手枪
|
||||
[3m18s] 却从未真正投入过实战
|
||||
[3m21s] 解放者算是最酷的
|
||||
[3m23s] 未投入使用枪支之一
|
||||
[3m26s] 该枪诞生于二战时期
|
||||
[3m28s] 是针对德国和日本开展的
|
||||
[3m30s] 一项秘密心理战行动的产物
|
||||
[3m33s] 其设计理念
|
||||
[3m35s] 是制造一种小巧廉价的枪械
|
||||
[3m37s] 让盟军可以成千上万地
|
||||
[3m40s] 空投给欧洲
|
||||
[3m41s] 和亚洲的抵抗战士
|
||||
[3m43s] 设想让当地人捡到这种枪后
|
||||
[3m46s] 能悄悄接近德国或日本军官
|
||||
[3m49s] 扣动扳机将其击毙
|
||||
[3m51s] 然后夺走对方的枪支
|
||||
[4m3s] 每把FP-45解放者
|
||||
[4m5s] 会连同10发,45 ACP弹
|
||||
[4m8s] 装在纸盒里
|
||||
[4m10s] 盒内的绘画说明书
|
||||
[4m11s] 就算不识字的人
|
||||
[4m13s] 也能看懂操作步骤
|
||||
[4m15s] 这些“火柴盒杀手”
|
||||
[4m17s] 被大量投放到敌后
|
||||
[4m19s] 抵抗组织成员
|
||||
[4m20s] 用它近距离突袭德国哨岗后
|
||||
[4m23s] 就随手丢弃
|
||||
[4m25s] 即便被缴获
|
||||
[4m26s] 也能对对方产生
|
||||
[4m28s] 极大的心理威慑效果
|
||||
[4m30s] 当成千上万的
|
||||
[4m32s] FP-45被德军发现
|
||||
[4m34s] 他们便会心生疑惑
|
||||
[4m36s] 天知道当地人手里
|
||||
[4m39s] 到底还有多少把
|
||||
[4m42s] 它是在二战期间
|
||||
[4m44s] 比较特殊的这样的一款手枪
|
||||
[4m46s] 主要是秘密携带
|
||||
[4m48s] 秘密使用
|
||||
[4m49s] 它完全是采用这种单发的
|
||||
[4m51s] 这样的一个设计
|
||||
[4m52s] 这个退壳
|
||||
[4m53s] 也没有特别的这样的一个设备
|
||||
[4m55s] 必须要单独配一个小木棍
|
||||
[4m58s] 把使用之后的这个弹壳
|
||||
[5m1s] 再把它给捅出来
|
||||
[5m2s] 所以操作起来是比较复杂的
|
||||
[5m5s] 但是
|
||||
[5m6s] 解放者这款手枪最大的优势
|
||||
[5m8s] 就是结构简单
|
||||
[5m9s] 不需要经过专门的培训
|
||||
[5m11s] 任何人都可以对它进行使用
|
||||
[5m14s] 甚至这个枪管非常的短
|
||||
[5m17s] 连这个膛线都没有
|
||||
[5m19s] 在近距离
|
||||
[5m20s] 可以针对人员
|
||||
[5m21s] 构成比较大的杀伤
|
||||
[5m24s] 如今FP-45
|
||||
[5m25s] 成了收藏家眼中的珍品
|
||||
[5m28s] 它短小的尺寸
|
||||
[5m29s] 不是偷工减料
|
||||
[5m30s] 而是战略需求优先的必然结果
|
||||
[5m33s] 少一毫米
|
||||
[5m34s] 都可能影响空投效率
|
||||
[5m35s] 多一毫米
|
||||
[5m36s] 都可能失去隐蔽性
|
||||
[5m38s] 接下来我们看一看手枪中的
|
||||
[5m41s] 大家伙
|
||||
[5m45s] 它就是沙漠之鹰.50AE
|
||||
[5m49s] 它全长约273毫米
|
||||
[5m51s] 几乎是FP-45的两倍
|
||||
[5m54s] 仅枪管长152毫米
|
||||
[5m57s] 比FP-45的整枪还长11毫米
|
||||
[6m0s] 握在手里能明显感觉到它的分量
|
||||
[6m3s] 它完全放弃了手枪的便携性
|
||||
[6m5s] 所有的设计都为了适配
|
||||
[6m7s] .50AE大口径弹药的
|
||||
[6m10s] 极致火力
|
||||
[6m13s] 沙漠之鹰
|
||||
[6m15s] 是当今世界上最知名的
|
||||
[6m17s] 大口径手枪之一
|
||||
[6m19s] 从射击游戏到电影银幕
|
||||
[6m22s] 沙漠之鹰表现的强大威力
|
||||
[6m24s] 让其成为许多人的最爱
|
||||
[6m28s] 20世纪80年代
|
||||
[6m30s] 欧州狩猎运动兴起
|
||||
[6m32s] 面对熊 野猪等大型猛兽
|
||||
[6m35s] 传统9毫米
|
||||
[6m37s] 或,45口径的威力
|
||||
[6m39s] 根本不足以致命
|
||||
[6m41s] 在反恐作战中
|
||||
[6m43s] 警方和特种部队
|
||||
[6m45s] 也需要一种
|
||||
[6m46s] 能击穿轻型防弹衣
|
||||
[6m48s] 车辆挡风玻璃的便携武器
|
||||
[6m51s] 随着.50AE弹药的出现
|
||||
[6m54s] 让这些需求
|
||||
[6m55s] 有了实现的可能
|
||||
[6m57s] 这种弹药的弹头重量
|
||||
[6m59s] 超过15克
|
||||
[7m0s] 动能
|
||||
[7m1s] 是普通9毫米手枪弹的3倍以上
|
||||
[7m4s] 但是
|
||||
[7m5s] 也对枪械设计
|
||||
[7m6s] 提出了严峻挑战
|
||||
[7m16s] 大口径弹药燃烧时
|
||||
[7m18s] 会产生巨大的高温高压
|
||||
[7m20s] 必须有足够长的枪管
|
||||
[7m22s] 才能让火药充分燃烧
|
||||
[7m25s] 沙漠之鹰152毫米的枪管
|
||||
[7m28s] 能让弹头初速
|
||||
[7m29s] 达到每秒402米
|
||||
[7m32s] 比短枪管版本提升15%以上
|
||||
[7m36s] 有效射程
|
||||
[7m37s] 也从50米延伸到100米
|
||||
[7m40s] 随之而来的是巨大后坐力
|
||||
[7m43s] 需要273毫米的枪身
|
||||
[7m45s] 和两千克的重量来平衡
|
||||
[7m47s] 如果枪身过短
|
||||
[7m49s] 射击时枪口会剧烈上跳
|
||||
[7m52s] 甚至可能伤到射手的手腕
|
||||
[7m55s] 生产商还提供
|
||||
[7m56s] 254毫米枪管的加长版本
|
||||
[7m59s] 全长会达到374毫米
|
||||
[8m2s] 但因便携性太差
|
||||
[8m4s] 只有少数狩猎爱好者才会选择
|
||||
[8m10s] 如今
|
||||
[8m11s] 沙漠之鹰虽未大规模列装军队
|
||||
[8m14s] 却因独特的外形
|
||||
[8m16s] 和强大的威力
|
||||
[8m17s] 成为影视剧中的常客
|
||||
[8m19s] 用极致的长度
|
||||
[8m20s] 诠释了
|
||||
[8m21s] 火力至上的设计理念
|
||||
[8m24s] 也成为枪械文化中
|
||||
[8m25s] 力量象征的代名词
|
||||
[8m29s] 为什么说要把它的枪管
|
||||
[8m31s] 设计得比较长
|
||||
[8m32s] 因为它弹药的尺寸比较大
|
||||
[8m34s] 另外一个本身
|
||||
[8m36s] 在射击的过程当中
|
||||
[8m37s] 为了保证精度
|
||||
[8m38s] 为了保证可靠性
|
||||
[8m40s] 所以它整体的这个(重量)
|
||||
[8m41s] 是比较重的
|
||||
[8m43s] 重达两公斤
|
||||
[8m44s] 正常人对它进行持握射击
|
||||
[8m47s] 确实是很费劲儿的
|
||||
[8m50s] 沙漠之鹰它是采用导气结构
|
||||
[8m51s] 这一点和步枪是非常相似
|
||||
[8m54s] 能够保证
|
||||
[8m55s] 它发射大威力的弹药
|
||||
[8m57s] 但是在实战的过程当中
|
||||
[8m59s] 要进行短时间内的快速射击
|
||||
[9m2s] 这个就很难打得准
|
||||
[9m3s] 因为它的后坐力
|
||||
[9m4s] 是比较大的
|
||||
[9m5s] 所以从它的设计理念来看
|
||||
[9m7s] 它更像是靶场手枪
|
||||
[9m9s] 或者是狩猎手枪
|
||||
[9m11s] 在军警部队当中进行使用
|
||||
[9m14s] 首先是不便于携带
|
||||
[9m15s] 另外一个枪体太重了
|
||||
[9m18s] 那么在操作使用的过程中
|
||||
[9m20s] 会带来一系列的麻烦
|
||||
[9m24s] 一款手枪能藏进火柴盒
|
||||
[9m26s] 一款堪称手枪巨无霸
|
||||
[9m29s] FP-45和沙漠之鹰
|
||||
[9m31s] 用132毫米的长度差
|
||||
[9m33s] 精准命中了两种极端需求
|
||||
[9m36s] 它们的设计看似矛盾
|
||||
[9m38s] 却都在各自的场景下
|
||||
[9m40s] 实现了长度
|
||||
[9m41s] 与功能的最优匹配
|
||||
[9m44s] 接下来
|
||||
[9m45s] 我们把目光转向冲锋枪家族
|
||||
[9m47s] 看一看它们的长度差
|
||||
[9m49s] 又藏着怎样的战场逻辑
|
||||
[10m3s] 先看我手里的这把
|
||||
[10m4s] PP-2000冲锋枪
|
||||
[10m6s] 这是我见过
|
||||
[10m7s] 最“露骨”的一款冲锋枪了
|
||||
[10m9s] 同样
|
||||
[10m10s] 为了让大家看清楚
|
||||
[10m11s] 这款模型也做了一点放大
|
||||
[10m14s] 可以看到
|
||||
[10m15s] 它的枪机前半部分
|
||||
[10m17s] 完全是裸露在外的
|
||||
[10m19s] 根据设计方的官方参数
|
||||
[10m21s] 它的全长仅340毫米
|
||||
[10m24s] 比常见的500毫升矿泉水瓶
|
||||
[10m27s] 就长那么一点
|
||||
[10m28s] 刚好能够放进
|
||||
[10m29s] 战术背心的口袋里
|
||||
[10m31s] 单手就能握住操作
|
||||
[10m34s] 兼顾近战火力
|
||||
[10m35s] 和一定的有效射程
|
||||
[10m37s] 不会因为追求短尺寸
|
||||
[10m39s] 而牺牲核心威力
|
||||
[10m42s] PP-2000的设计
|
||||
[10m44s] 源于俄罗斯
|
||||
[10m45s] 在城市反恐作战中
|
||||
[10m46s] 遇到的实战痛点
|
||||
[10m49s] 20世纪90年代
|
||||
[10m50s] 车臣战争中的巷战
|
||||
[10m52s] 让俄军深刻体会到
|
||||
[10m54s] 传统冲锋枪
|
||||
[10m55s] 过长的枪身
|
||||
[10m57s] 在狭窄的楼道 房间中
|
||||
[10m59s] 根本无法灵活转向
|
||||
[11m1s] 士兵在破门后
|
||||
[11m3s] 常常因枪身剐蹭门框
|
||||
[11m5s] 而延误举枪时机
|
||||
[11m7s] 甚至被敌方近距离突袭
|
||||
[11m10s] 为了解决这一问题
|
||||
[11m11s] 图拉仪器设计局
|
||||
[11m13s] 从1993年开始
|
||||
[11m14s] 研发紧凑式冲锋枪
|
||||
[11m17s] 核心目标就是
|
||||
[11m18s] 在保证火力的前提下
|
||||
[11m20s] 把长度
|
||||
[11m21s] 控制在350毫米以内
|
||||
[11m23s] 为此
|
||||
[11m24s] 设计师采用了
|
||||
[11m25s] 多项针对性设计
|
||||
[11m28s] PP-2000冲锋枪的设计
|
||||
[11m30s] 非常小巧精妙
|
||||
[11m32s] 整枪上下两个部分
|
||||
[11m34s] 可以快速拆开
|
||||
[11m36s] 整体部件非常少
|
||||
[11m37s] 便于维护保养
|
||||
[11m39s] PP-2000冲锋枪的枪机前部分
|
||||
[11m42s] 暴露在机匣外
|
||||
[11m43s] 并兼作上膛拉机柄
|
||||
[11m46s] 在枪机连杆的前方
|
||||
[11m47s] 设有一个铰接手柄
|
||||
[11m49s] 当需要拉动的时候
|
||||
[11m51s] 可以扳起向左或向右旋转
|
||||
[11m54s] 然后再拉动连杆
|
||||
[11m55s] 进行上膛操作
|
||||
[11m58s] 这种枪机外露的方式
|
||||
[12m0s] 不仅能够减少整枪的长度
|
||||
[12m2s] 还可以让枪机
|
||||
[12m3s] 和枪管的一部分
|
||||
[12m5s] 直接暴露在外面
|
||||
[12m6s] 有利于整枪的散热
|
||||
[12m8s] PP-2000冲锋枪
|
||||
[12m10s] 配有两种容量的弹匣
|
||||
[12m12s] 一种是20发
|
||||
[12m13s] 另一种是44发
|
||||
[12m15s] 供弹弹匣插在握把内
|
||||
[12m18s] 而在枪尾
|
||||
[12m19s] 还有一个弹匣插口
|
||||
[12m21s] 把不用的弹匣插上去
|
||||
[12m22s] 便可以当作枪托来使用
|
||||
[12m24s] 量产型版本
|
||||
[12m26s] 则增加了折叠式枪托
|
||||
[12m28s] 这个可选配件
|
||||
[12m29s] 也是像弹匣一样
|
||||
[12m31s] 插到枪尾上使用
|
||||
[12m34s] 全枪的重量非常低
|
||||
[12m36s] 而且非常的短
|
||||
[12m37s] 特别适合特种部队
|
||||
[12m39s] 或者是强力部门的
|
||||
[12m41s] 执法人员去使用
|
||||
[12m43s] 可以在近距离的过程当中
|
||||
[12m45s] 针对对方
|
||||
[12m46s] 进行密集的火力压制
|
||||
[12m48s] 由于它的枪身比较短
|
||||
[12m50s] 其实也适合
|
||||
[12m51s] 乘车作战的部队
|
||||
[12m53s] 比如说坦克装甲车的
|
||||
[12m55s] 这个车组乘员
|
||||
[12m56s] 进行佩戴和使用
|
||||
[12m57s] 作为一种自卫武器
|
||||
[12m58s] 当然了战斗机的飞行员
|
||||
[13m0s] 和直升机的机组乘员
|
||||
[13m3s] 也可以把它作为一种
|
||||
[13m4s] 大威力的自卫武器
|
||||
[13m5s] 因为它的持续的火力压制能力
|
||||
[13m8s] 要比一般的手枪要强很多
|
||||
[13m10s] 而且
|
||||
[13m11s] 和这种短的冲锋枪相比
|
||||
[13m13s] 它的枪身确实更短
|
||||
[13m15s] 实现了最大程度地减重
|
||||
[13m21s] 用340毫米的紧凑长度
|
||||
[13m23s] 加上暴露枪机设计
|
||||
[13m24s] 把巷战灵活做到了极致
|
||||
[13m27s] 短身带来的机动优势
|
||||
[13m29s] 在狭小空间里无可替代
|
||||
[13m32s] 接下来我们看一把
|
||||
[13m33s] 长尺寸的冲锋枪
|
||||
[13m40s] 它就是
|
||||
[13m41s] MP40冲锋枪
|
||||
[13m44s] 根据二战时期的
|
||||
[13m45s] 德军技术手册记载
|
||||
[13m46s] 它折叠后
|
||||
[13m47s] 全枪长630毫米
|
||||
[13m50s] 比前面讲到的PP-2000
|
||||
[13m51s] 长近100毫米
|
||||
[13m55s] 当它展开之后
|
||||
[13m57s] 长833毫米
|
||||
[14m0s] 我抵肩握住它
|
||||
[14m1s] 能明显感觉到
|
||||
[14m3s] 枪身特别舒展
|
||||
[14m4s] 枪托与肩部的贴合度很好
|
||||
[14m7s] 250毫米的枪管
|
||||
[14m9s] 让枪口在射击时跳动很小
|
||||
[14m12s] 在二战的平原
|
||||
[14m14s] 和阵地战中特别实用
|
||||
[14m16s] 士兵在冲锋的时候
|
||||
[14m17s] 能够稳定抵肩射击
|
||||
[14m19s] 精准压制200米内的
|
||||
[14m22s] 敌方目标
|
||||
[14m24s] MP40是二战期间产量较大
|
||||
[14m27s] 影响力较广的一款冲锋枪
|
||||
[14m30s] 其因结构相对简单
|
||||
[14m31s] 稳定性强
|
||||
[14m33s] 成为当时多个作战单位的装备
|
||||
[14m41s] 二战前
|
||||
[14m42s] 德军步兵班组的火力核心
|
||||
[14m44s] 是毛瑟98k栓动步枪
|
||||
[14m47s] 和MG34重机枪
|
||||
[14m49s] 冲锋枪仅作为辅助武器
|
||||
[14m52s] 第二次世界大战爆发后
|
||||
[14m54s] 纳粹德军强调快速推进
|
||||
[14m57s] 近距离火力压制的理念
|
||||
[14m59s] 这就需要一种
|
||||
[15m0s] 能伴随步兵冲锋
|
||||
[15m2s] 兼顾射程与精度的武器
|
||||
[15m4s] 而传统冲锋枪
|
||||
[15m6s] 如MP18
|
||||
[15m8s] 尺寸虽短
|
||||
[15m9s] 但枪管仅198毫米
|
||||
[15m11s] 有效射程仅100米
|
||||
[15m14s] 无法满足压制需求
|
||||
[15m16s] 而MP40
|
||||
[15m17s] 很好地解决了这一问题
|
||||
[15m29s] MP40冲锋枪的设计
|
||||
[15m32s] 围绕中近距离持续压制展开
|
||||
[15m35s] 250毫米的枪管
|
||||
[15m36s] 采用镀铬工艺
|
||||
[15m38s] 能让枪口初速
|
||||
[15m39s] 提升至每秒380米
|
||||
[15m41s] 有效射程达到200米
|
||||
[15m44s] 比MP18提升一倍
|
||||
[15m47s] 833毫米的枪身长度
|
||||
[15m49s] 让士兵在抵肩射击时
|
||||
[15m52s] 能更好地控制后坐力
|
||||
[15m54s] 配合32发弹匣
|
||||
[15m56s] 能形成持续的火力输出
|
||||
[15m58s] 更值得一提的是
|
||||
[16m0s] 它的生产工艺
|
||||
[16m1s] 特别适合战时量产
|
||||
[16m4s] 枪身采用冲压和焊接技术
|
||||
[16m7s] 零件数量比MP18减少40%
|
||||
[16m11s] 一个熟练工人
|
||||
[16m12s] 每天能组装10支
|
||||
[16m15s] 到1944年
|
||||
[16m16s] 累计生产了120万支
|
||||
[16m19s] 833毫米的长度
|
||||
[16m21s] 适配了二战时期
|
||||
[16m22s] 开阔战场的作战需求
|
||||
[16m24s] 也成为了二战中
|
||||
[16m26s] 纳粹德军步兵火力支柱的
|
||||
[16m28s] 标志性武器之一
|
||||
[16m33s] MP40是在MP38的基础上
|
||||
[16m36s] 改进升级而来的
|
||||
[16m38s] 可以说在二战期间
|
||||
[16m39s] 在德国军队的
|
||||
[16m41s] 武器装备当中
|
||||
[16m42s] 它是一款设计
|
||||
[16m43s] 比较优秀的冲锋枪
|
||||
[16m45s] 优先装备的是
|
||||
[16m47s] 德军的装甲部队
|
||||
[16m48s] 和它的空降部队
|
||||
[16m50s] 也就是伞兵
|
||||
[16m51s] 装甲部队和伞兵
|
||||
[16m52s] 在使用的过程中
|
||||
[16m54s] 就是要求在近距离
|
||||
[16m55s] 针对对方的作战人员
|
||||
[16m57s] 短时间内倾泻大量的弹药
|
||||
[17m0s] 所以我们看这个MP40
|
||||
[17m3s] 它的弹匣的长度是比较长
|
||||
[17m6s] 所以能够在近距离
|
||||
[17m7s] 比如说100到150米的
|
||||
[17m8s] 这样的一个距离上
|
||||
[17m10s] 针对对方进行这种
|
||||
[17m11s] 持续的这样的一个射击
|
||||
[17m13s] 那么采用这种比较长的
|
||||
[17m15s] 枪身和枪管
|
||||
[17m16s] 就是要保证射击的精度
|
||||
[17m17s] 所以
|
||||
[17m18s] 在近距离射击的过程当中
|
||||
[17m20s] MP40它的精准程度
|
||||
[17m22s] 也是比较高的
|
||||
[17m25s] 从340毫米的紧凑灵活
|
||||
[17m27s] 到833毫米的稳定压制
|
||||
[17m30s] 冲锋枪的长度选择
|
||||
[17m31s] 本质上是**对作战空间**
|
||||
[17m33s] 和战术节奏的精准回应
|
||||
[17m36s] 短有短的便捷
|
||||
[17m37s] 长有长的稳定
|
||||
[17m39s] 这正是枪械设计中
|
||||
[17m40s] 长短智慧的核心之一
|
||||
[17m43s] 接下来
|
||||
[17m44s] 我们看一看步枪家族
|
||||
[17m55s] 先来看我手中的这把
|
||||
[17m57s] AUG突击步枪
|
||||
[18m0s] 大家有没有发现
|
||||
[18m1s] 它的外形非常的独特
|
||||
[18m3s] 没有传统步枪的枪托
|
||||
[18m5s] 弹匣直接插在了扳机后方
|
||||
[18m8s] 根据奥地利
|
||||
[18m9s] 斯泰尔公司的官方数据
|
||||
[18m11s] 它的全长只有665毫米
|
||||
[18m14s] 比折叠后的MP40冲锋枪
|
||||
[18m16s] 长不到40毫米
|
||||
[18m18s] 大家可别被它的短身所迷惑了
|
||||
[18m21s] 它的枪管长度
|
||||
[18m23s] 足足有508毫米
|
||||
[18m25s] 和传统M16A4步枪的枪管
|
||||
[18m27s] 几乎是一样长的
|
||||
[18m29s] 设计师用无托结构
|
||||
[18m31s] 硬生生在不缩短枪管的前提下
|
||||
[18m34s] 把枪身
|
||||
[18m35s] 缩短了将近340毫米
|
||||
[18m37s] 真正实现了短身不短能
|
||||
[18m45s] AUG的出现
|
||||
[18m46s] 掀起了步枪设计的
|
||||
[18m48s] 一场结构革命
|
||||
[18m59s] 随着城市化进程加快
|
||||
[19m1s] 传统长枪管步枪
|
||||
[19m2s] 在城市作战
|
||||
[19m4s] 装甲车内部操作时的弊端
|
||||
[19m6s] 日益凸显
|
||||
[19m9s] 在楼宇作战中
|
||||
[19m11s] 过长的枪身
|
||||
[19m12s] 导致转向不便
|
||||
[19m14s] 甚至影响战术动作
|
||||
[19m16s] 各国都在寻找一种
|
||||
[19m17s] 能兼顾射击精度
|
||||
[19m19s] 与机动灵活的步枪
|
||||
[19m21s] 但传统有托结构的设计逻辑
|
||||
[19m23s] 是枪管长则枪身长
|
||||
[19m26s] 似乎无法突破这一局限
|
||||
[19m29s] 奥地利斯泰尔公司的设计师
|
||||
[19m32s] 大胆创新
|
||||
[19m33s] 提出了无托结构的理念
|
||||
[19m45s] AUG突击步枪
|
||||
[19m47s] 将枪托与机匣融为一体
|
||||
[19m49s] 让射手的肩部
|
||||
[19m50s] 直接抵在机匣尾部
|
||||
[19m53s] 这样一来
|
||||
[19m54s] 枪管的长度
|
||||
[19m55s] 不再受枪托位置的限制
|
||||
[19m57s] 508毫米的枪管
|
||||
[19m59s] 能保证
|
||||
[20m0s] 5.56×45毫米弹药的初速
|
||||
[20m3s] 达到每秒970米
|
||||
[20m5s] 有效射程600米
|
||||
[20m7s] 与传统步枪持平
|
||||
[20m8s] 而665毫米的全长
|
||||
[20m11s] 让士兵在装甲车内
|
||||
[20m12s] 能轻松操作
|
||||
[20m14s] 在楼宇中能快速转向
|
||||
[20m16s] 更创新的是
|
||||
[20m18s] AUG采用了模块化设计
|
||||
[20m20s] 枪管可以快速更换
|
||||
[20m22s] 能在几分钟内切换成步枪
|
||||
[20m25s] 卡宾枪
|
||||
[20m26s] 轻机枪
|
||||
[20m27s] 甚至狙击枪
|
||||
[20m28s] 适配不同作战场景
|
||||
[20m32s] 首先我们看它是
|
||||
[20m33s] 大量采用了
|
||||
[20m34s] 这种塑料和合成材料
|
||||
[20m36s] 所以全枪
|
||||
[20m37s] 可以有效地实现减重
|
||||
[20m39s] 士兵在携带和使用的过程当中
|
||||
[20m41s] 可以最大程度地节省体力
|
||||
[20m43s] 由于采用了这种
|
||||
[20m45s] 无托化的设计理念
|
||||
[20m46s] 它全枪的重量和长度
|
||||
[20m48s] 是可以进行进一步优化
|
||||
[20m51s] 但是
|
||||
[20m52s] 由于采用无托的设计理念
|
||||
[20m54s] 也可以保证它的枪管比较长
|
||||
[20m55s] 这样的话无论是
|
||||
[20m57s] 有效的射击距离
|
||||
[20m59s] 和它的这样的一个
|
||||
[21m0s] 火力的持续性
|
||||
[21m1s] 其实是达到了一种均衡的状态
|
||||
[21m6s] AUG用无托枪身的设计
|
||||
[21m8s] 真正做到
|
||||
[21m9s] 短小精悍
|
||||
[21m11s] 接下来我们看一看
|
||||
[21m12s] 长家伙
|
||||
[21m18s] 下面要讲到的这款步枪
|
||||
[21m20s] 就是大名鼎鼎的
|
||||
[21m24s] 根据德国
|
||||
[21m25s] 黑克勒-科赫公司的官方参数
|
||||
[21m27s] HK416在配备
|
||||
[21m29s] 20英寸枪管之后
|
||||
[21m31s] 全枪长可达1030毫米
|
||||
[21m34s] 比AUG足足长了365毫米
|
||||
[21m37s] 长长的枪身
|
||||
[21m39s] 给可伸缩枪托
|
||||
[21m41s] 全长度的皮卡汀尼导轨
|
||||
[21m43s] 和活塞导气系统
|
||||
[21m44s] 留出了适配的空间
|
||||
[21m47s] 大家看它的顶部导轨
|
||||
[21m49s] 能从头到尾加装瞄准镜
|
||||
[21m52s] 激光指示器
|
||||
[21m53s] 护木两侧还能
|
||||
[21m54s] 扩展战术握把
|
||||
[21m56s] 手电
|
||||
[21m57s] 完全是为现代特种作战多任务
|
||||
[21m59s] 多环境
|
||||
[22m0s] 量身打造的长枪身设计
|
||||
[22m9s] 如果你曾接触过枪战类游戏
|
||||
[22m11s] 那么你一定知道
|
||||
[22m12s] 这把突击步枪
|
||||
[22m16s] 在各种枪战游戏中
|
||||
[22m18s] 这把枪的性能排名
|
||||
[22m20s] 都是稳居前列
|
||||
[22m22s] 近几年爆火的吃鸡游戏玩家
|
||||
[22m24s] 更是将其称之为“吃鸡神器”
|
||||
[22m27s] 在游戏中
|
||||
[22m28s] 只要能装备上M416
|
||||
[22m30s] 便能无往不利
|
||||
[22m31s] 所向披靡
|
||||
[22m33s] 而现实中
|
||||
[22m35s] 这把枪的原型便是HK416
|
||||
[22m50s] HK416的诞生
|
||||
[22m52s] 源于现代特种作战
|
||||
[22m54s] 对可靠性
|
||||
[22m55s] 与多场景适配的极致追求
|
||||
[22m58s] 21世纪初
|
||||
[22m59s] 美军特种部队
|
||||
[23m1s] 在全球反恐作战中发现
|
||||
[23m3s] M4A1卡宾枪的
|
||||
[23m5s] 气吹式导气结构
|
||||
[23m6s] 在沙漠
|
||||
[23m7s] 湿热等恶劣环境下
|
||||
[23m9s] 容易积碳故障
|
||||
[23m11s] 且短枪管在中距离压制时
|
||||
[23m13s] 精度不足
|
||||
[23m16s] 于是
|
||||
[23m17s] 黑克勒-科赫公司
|
||||
[23m18s] 在M4A1基础上
|
||||
[23m20s] 重新设计改造出了HK416
|
||||
[23m32s] HK416自动步枪
|
||||
[23m34s] 长805毫米
|
||||
[23m36s] 既保证了抵肩射击的稳定性
|
||||
[23m39s] 又能通过伸缩枪托
|
||||
[23m40s] 适配不同身高士兵
|
||||
[23m43s] 5.56×45毫米北约弹
|
||||
[23m45s] 初速达到每秒900米
|
||||
[23m48s] 有效射程600米
|
||||
[23m49s] 比M4A1提升10%
|
||||
[23m52s] 其最新改型HK416 A5
|
||||
[23m55s] 提供5种枪管选择
|
||||
[23m58s] 分别是11英寸
|
||||
[23m59s] 12.5英寸
|
||||
[24m1s] 14.5英寸
|
||||
[24m2s] 16.5英寸和20英寸
|
||||
[24m5s] 这让HK416
|
||||
[24m6s] 既能在城市反恐中灵活操作
|
||||
[24m9s] 又能在沙漠 平原等开阔地形
|
||||
[24m12s] 提供远距离火力支援
|
||||
[24m18s] HK416自动步枪
|
||||
[24m20s] 最经典的实战案例
|
||||
[24m21s] 是在2011年“海神之矛”行动
|
||||
[24m24s] 海豹突击队队员
|
||||
[24m26s] 正是用HK416击毙本·拉登
|
||||
[24m29s] 当时
|
||||
[24m30s] 队员在狭小房间内
|
||||
[24m32s] 完成近距离突袭
|
||||
[24m34s] 后续撤离时
|
||||
[24m35s] 又在开阔地带
|
||||
[24m36s] 用其压制可能的追兵
|
||||
[24m39s] 证明其能同时适配
|
||||
[24m40s] 近距离突袭
|
||||
[24m41s] 和中距离压制双重需求
|
||||
[24m44s] 如今
|
||||
[24m46s] 被三十多个国家的特种部队列装
|
||||
[24m49s] 法国 挪威等国
|
||||
[24m51s] 更将其定为全军制式步枪
|
||||
[24m54s] 成为现代步枪的代表之一
|
||||
[24m59s] 和AUG相比
|
||||
[25m1s] HK416最大的优势
|
||||
[25m3s] 就是它的适应性比较好
|
||||
[25m4s] 可以衍生出很多的这种型号
|
||||
[25m8s] HK416它的
|
||||
[25m10s] 皮卡汀尼导轨的
|
||||
[25m12s] 这样的一个安装也比较方便
|
||||
[25m14s] 在枪管外面的护套上
|
||||
[25m17s] 它可以安装四条
|
||||
[25m19s] 皮卡汀尼导轨
|
||||
[25m20s] 也就是说
|
||||
[25m21s] 不仅可以加装战术手电
|
||||
[25m23s] 或者是这种激光的指示系统
|
||||
[25m26s] 还可以加装
|
||||
[25m27s] 外挂的榴弹发射器
|
||||
[25m30s] 所以HK416既可以作为
|
||||
[25m32s] 普通士兵所使用的突击步枪
|
||||
[25m34s] 也可以作为精准射手步枪
|
||||
[25m36s] 进行这种精准的火力支援
|
||||
[25m41s] 今天我们展示的每一款枪械
|
||||
[25m43s] 它们没有绝对的优劣
|
||||
[25m45s] 只有是否贴合使命的区别
|
||||
[25m47s] 这正是枪械设计中
|
||||
[25m49s] 最珍贵的长短智慧
|
||||
[25m52s] 长度从来不是孤立的数字
|
||||
[25m55s] 而是设计师平衡使命需求
|
||||
[25m57s] 核心功能
|
||||
[25m58s] 使用环境的结果
|
||||
[26m0s] 每一寸增减
|
||||
[26m1s] 都凝结着对战场的深刻理解
|
||||
[26m4s] 和对功能的极致追求
|
||||
[26m7s] 好了观众朋友们
|
||||
[26m8s] 感谢您持续关注
|
||||
[26m9s] 国防军事频道 《军事科技》
|
||||
[26m11s] 我们下周同一时间
|
||||
[26m13s] 再见
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,278 @@
|
||||
[0m6s] 藏于方寸的敌后利器,
|
||||
[0m8s] 锋芒毕露的火力先锋,
|
||||
[0m11s] 穿梭街巷的近战精灵,
|
||||
[0m14s] 主宰阵地的压制王者,
|
||||
[0m17s] 同为枪械家族成员为何长度取舍各不相同,
|
||||
[0m22s] 每一寸伸缩都是对实战需求的精准回应。
|
||||
[0m27s] 每一款设计都凝结着军工领域的深邃考量,军事科技
|
||||
[0m32s] 带您解码枪械设计背后的长短智慧。
|
||||
[1m13s] 各位观众你们好,欢迎收看军事科技,我是主持人蓝皓。
|
||||
[1m17s] 提到枪械威力,精度往往是我们关注的焦点,
|
||||
[1m21s] 但是有一个看似基础却至关重要的设计,始终左右着枪械的实战性能,
|
||||
[1m27s] 它就是
|
||||
[1m28s] 长度
|
||||
[1m29s] 今天要聊的枪械每一款的长度都大不相同,
|
||||
[1m33s] 有的枪械要极致缩短,甘愿舍弃部分舒适与功能,
|
||||
[1m38s] 有的呢却要刻意加长坦然放弃部分便携性。
|
||||
[1m42s] 首先我们来看
|
||||
[1m44s] 手枪,
|
||||
[1m54s] 首先出场的是短到可以塞进火柴盒里的美国fp45解放者手枪,
|
||||
[2m1s] 我手里的这款模型呢是为了让大家看得更加清楚,所以做了放大。
|
||||
[2m6s] 据资料显示,它的实际长度只有141毫米,
|
||||
[2m10s] 比我手掌的宽度还要短。
|
||||
[2m13s] 大家仔细来看它的结构,
|
||||
[2m15s] 握把的下半部分是中空的,
|
||||
[2m18s] 打开滑动挡板,能够装10发点45acp备用弹。
|
||||
[2m24s] 瞄准具啊也非常的简单,只有在枪管的前端有一个小小的片状准星,
|
||||
[2m31s] 在尾端挡板上有一个切削的简易缺口,不仔细看几乎发现不了。
|
||||
[2m36s] 当然不能说它没有瞄准镜,只不过是做到了极致的简单,
|
||||
[2m41s] 更特别的是它没有半自动的功能,每打一发都得手动把尾部的
|
||||
[2m48s] 待机块向后拉,然后再向左旋转才能装下一发弹。
|
||||
[2m53s] 那么如此短小的设计,却让这款不起眼的小手枪成为了敌后斗争的
|
||||
[2m59s] 特殊利器,
|
||||
[3m2s] 这是一把用来换取更好枪支的武器,
|
||||
[3m5s] 一个构思独特简单却又精妙绝伦的设计。
|
||||
[3m13s] Fp45绰号解放者,
|
||||
[3m16s] 是一款外形笨拙的手枪,却从未真正投入过实战。
|
||||
[3m21s] 解放者算是最酷的未投入使用枪支之一。
|
||||
[3m26s] 该枪诞生于二战时期,
|
||||
[3m28s] 是针对德国和日本开展的一项秘密心理战行动的产物,
|
||||
[3m33s] 其设计理念是制造一种小巧廉价的枪械,
|
||||
[3m37s] 让盟军可以成千上万地空投给欧洲和亚洲的抵抗战士,
|
||||
[3m43s] 设想让当地人捡到这种枪后,能悄悄接近德国或日本军官,
|
||||
[3m48s] 扣动扳机将其击毙,
|
||||
[3m51s] 然后夺走对方的枪支。
|
||||
[4m3s] 每把fp45解放者会连同10发点45acp弹装在纸盒里,
|
||||
[4m9s] 盒内的绘画说明书,就算不识字的人也能看懂操作步骤,
|
||||
[4m15s] 这些火柴盒杀手被大量投放到敌后,
|
||||
[4m18s] 抵抗组织成员用它近距离突袭德国哨岗后就随手丢弃,
|
||||
[4m25s] 即便被缴获,也能对对方产生极大的心理威慑效果。
|
||||
[4m30s] 当成千上万的fp四五被德军发现,
|
||||
[4m34s] 他们便会心生疑惑,
|
||||
[4m36s] 天知道当地人手里到底还有多少把,
|
||||
[4m42s] 它是在二战期间比较特殊的这样的一款手枪,主要是秘密携带秘密使用,它完全是采用这种单发的这样的一个设计,呃这个退壳呢也没有呃特别的这样的一个设备,必须要单独配一个小木棍,
|
||||
[4m57s] 从这个枪口把这个呃使用之后的这个弹壳再把它给捅出来,所以操作起来呢是比较复杂的,但是呢解放者这款手枪最大的优势就是结构简单,不需要经过专门的培训,任何人都
|
||||
[5m12s] 都可以对它进行使用,甚至呃这个枪管啊非常的短,啊连这个膛线都没有,在近距离呢可以针对人员构成比较大的杀伤。
|
||||
[5m23s] 如今fp四五成了收藏家眼中的珍品,它短小的尺寸不是偷工减料,而是战略需求优先的必然结果。
|
||||
[5m32s] 少一毫米都可能影响空投效率,多一毫米都可能失去隐蔽性。
|
||||
[5m38s] 接下来我们看一看手枪中的大家伙,
|
||||
[5m45s] 它就是沙漠之鹰点50ae,
|
||||
[5m49s] 它全长约273毫米,几乎是fp45的两倍,
|
||||
[5m54s] 仅枪管长152毫米,
|
||||
[5m57s] 比fp45的整枪还长11毫米,
|
||||
[6m0s] 握在手里呢能明显感觉到它的分量。
|
||||
[6m3s] 它完全放弃了手枪的便携性,所有的设计都为了适配点50ae大口径弹药的
|
||||
[6m9s] 极致火力。
|
||||
[6m13s] 沙漠之鹰是当今世界上最知名的大口径手枪之一,从射击游戏到电影银幕,
|
||||
[6m21s] 沙漠之鹰表现的强大威力让其成为许多人的最爱。
|
||||
[6m28s] 20世纪80年代,
|
||||
[6m30s] 欧洲狩猎运动兴起,
|
||||
[6m32s] 面对熊、野猪等大型猛兽,
|
||||
[6m35s] 传统9毫米或点45口径的威力根本不足以致命。
|
||||
[6m40s] 同时在反恐作战中,警方和特种部队也需要一种能够击穿轻型防弹衣,车辆挡风玻璃的便携武器。
|
||||
[6m51s] 随着点50ae弹药的出现,
|
||||
[6m53s] 让这些需求有了实现的可能,
|
||||
[6m57s] 这种弹药的弹头重量超过15克,
|
||||
[7m0s] 动能是普通9毫米手枪弹的3倍以上,
|
||||
[7m4s] 但是也对枪械设计提出了严峻挑战,
|
||||
[7m15s] 大口径弹药燃烧时会产生巨大的高温高压,
|
||||
[7m20s] 必须有足够长的枪管才能让火药充分燃烧。
|
||||
[7m24s] 沙漠之鹰,
|
||||
[7m25s] 152毫米的枪管能让弹头初速达到每秒402米,
|
||||
[7m31s] 比短枪管版本提升15%以上,
|
||||
[7m35s] 有效射程也从50米延伸到100米,
|
||||
[7m39s] 随之而来的是巨大后坐力,
|
||||
[7m42s] 需要273毫米的枪身和两千克的重量来平衡。
|
||||
[7m47s] 如果枪身过短,射击时枪口会剧烈上跳,甚至可能伤到射手的手腕,
|
||||
[7m54s] 生产商还提供254毫米枪管的加长版本,全长会达到374毫米,
|
||||
[8m2s] 但因便携性太差,
|
||||
[8m4s] 只有少数狩猎爱好者才会选择。
|
||||
[8m10s] 如今沙漠之鹰虽未大规模列装军队,
|
||||
[8m14s] 却因独特的外形和强大的威力
|
||||
[8m16s] 成为影视剧中的常客,
|
||||
[8m18s] 用极致的长度诠释了火力至上的设计理念,
|
||||
[8m23s] 也成为枪械文化中力量象征的代名词。
|
||||
[8m29s] 为什么说要把它的枪管设计的比较长,因为它弹药的尺寸比较大。另外一个呢
|
||||
[8m35s] 本身在射击的过程当中,为了保证精度,为了保证可靠性,所以它整体的这个是比较重的啊重达两公斤,正常人对它进行持握射击呃确实是很费劲的。
|
||||
[8m49s] 沙漠之鹰它是采用导气结构,这一点呢和步枪是非常相似,能够保证它发射大威力的弹药,但是在实战的这个过程当中要进行呃短时间内的快速射击这个就很难打得准,因为呢它的后坐力是比
|
||||
[9m4s] 比较大的,所以从它的设计理念来看,它更像是靶场手枪或者是狩猎手枪呃在军警部队当中进行使用,首先呢是不便于携带,另外一个呢呃枪体太重了,那么在操作使用的过程当中
|
||||
[9m19s] 会带来一系列的麻烦。
|
||||
[9m23s] 一款手枪能藏进火柴盒,一款堪称手枪巨无霸。
|
||||
[9m28s] Fp45和沙漠之鹰用132毫米的长度差精准命中了两种极端需求,
|
||||
[9m36s] 它们的设计看似矛盾,却都在各自的场景下实现了长度与功能的最优匹配。
|
||||
[9m43s] 接下来我们把目光转向冲锋枪,家族看一看它们的长度差又藏着怎样的战场逻辑。
|
||||
[10m2s] 先看我手里的这把PP2000冲锋枪,这是我见过啊最露骨的一款冲锋枪了。同样为了让大家看清楚这款模型呢也做了一点放大,
|
||||
[10m14s] 可以看到它的枪机前半部分完全是裸露在外的。
|
||||
[10m19s] 根据设计方的官方参数,它的全长仅340毫米,比常见的500毫升矿泉水瓶就长那么一点,
|
||||
[10m28s] 刚好能够放进战术背心的口袋里,
|
||||
[10m31s] 单手就能握住操作,
|
||||
[10m33s] 兼顾近战火力和一定的有效射程,不会因为追求短尺寸而牺牲核心威力。
|
||||
[10m42s] Pp2000的设计源于俄罗斯在城市反恐作战中遇到的实战痛点,
|
||||
[10m48s] 20世纪90年代,车臣战争中的巷战,让俄军深刻体会到,
|
||||
[10m54s] 传统冲锋枪过长的枪身在狭窄的楼道房间中根本无法灵活转向,
|
||||
[11m1s] 士兵在破门后常常因枪身剐蹭门框而延误举枪时机,
|
||||
[11m6s] 甚至被敌方近距离突袭。
|
||||
[11m9s] 为了解决这一问题,图拉仪器设计局从1993年开始研发紧凑式冲锋枪,
|
||||
[11m16s] 核心目标就是在保证火力的前提下,
|
||||
[11m20s] 把长度控制在350毫米以内。
|
||||
[11m23s] 为此设计师采用了多项针对性设计,
|
||||
[11m28s] PP2000冲锋枪的设计非常小巧精妙,
|
||||
[11m32s] 整枪上下两个部分可以快速拆开,
|
||||
[11m35s] 整体部件非常少,便于维护保养。
|
||||
[11m39s] Pp2000冲锋枪的枪机前部分暴露在机匣外,
|
||||
[11m43s] 并兼作上膛拉机柄。
|
||||
[11m45s] 在枪机连杆的前方设有一个铰接手柄,
|
||||
[11m49s] 当需要拉动的时候可以搬起向左或向右旋转,
|
||||
[11m54s] 然后再拉动连杆进行上膛操作。
|
||||
[11m57s] 这种枪机外露的方式不仅能够减少整枪的长度,还可以让枪机和枪管的一部分直接暴露在外面,有利于整枪的散热。
|
||||
[12m8s] Pp2000冲锋枪配有两种容量的弹匣,
|
||||
[12m11s] 一种是20发,
|
||||
[12m13s] 另一种是44发。
|
||||
[12m15s] 供弹弹匣插在握把内,
|
||||
[12m17s] 而在枪尾还有一个弹匣插口,
|
||||
[12m20s] 把不用的弹匣插上去,便可以当做枪托来使用。
|
||||
[12m24s] 量产型版本则增加了折叠式枪托,
|
||||
[12m27s] 这个可选配件也是像弹匣一样插到枪尾上使用,
|
||||
[12m33s] 呃这个全枪的重量非常低,而且呢非常的短,特别适合特种部队或者是这个强力部门的执法人员去这个使用,可以在近距离的过程当中针对对方进行密集的这个火力压制。
|
||||
[12m48s] 由于它的枪身比较短,其实呢也适合呃乘车作战的部队,啊比如说坦克装甲车的这个车组成员进行佩戴和使用,作为一种自卫武器。当然呢
|
||||
[12m59s] 战斗机的飞行员和这个直升机的这个机组成员也可以把它作为一种大威力的自卫武器,因为呢它的持续的火力压制能力要比一般的手枪要强很多,而且呢和这种短的冲锋枪相比,它的枪身
|
||||
[13m14s] 确实更短,而且呢实现了最大程度的减重。
|
||||
[13m19s] Pp2000用340毫米的紧凑长度加上暴露枪机设计,
|
||||
[13m24s] 把巷战灵活做到了极致。
|
||||
[13m27s] 短身带来的机动优势在狭小空间里无可替代。
|
||||
[13m31s] 接下来我们看一把长尺寸的冲锋枪,
|
||||
[13m40s] 它就是MP40冲锋枪s
|
||||
[13m43s] 根据二战时期的德军技术手册记载,它折叠后全枪长630毫米,
|
||||
[13m49s] 比前面讲到的PP2000呢长近100毫米,
|
||||
[13m55s] 当它展开之后长833毫米,
|
||||
[14m0s] 我抵肩握住它能明显感觉到枪身呢特别舒展,
|
||||
[14m4s] 枪托与肩部的贴合度很好,
|
||||
[14m7s] 250毫米的枪管让枪口在射击时跳动很小。
|
||||
[14m11s] 这种设计啊在二战的平原和阵地战中特别实用,士兵在冲锋的时候能够稳定抵肩射击,
|
||||
[14m19s] 精准压制200米内的
|
||||
[14m21s] 敌方目标。
|
||||
[14m24s] Mp40是二战期间产量较大,影响力较广的一款冲锋枪,
|
||||
[14m29s] 其因结构相对简单,稳定性强,成为当时多个作战单位的装备。
|
||||
[14m41s] 二战前德国步兵班组的火力核心是毛瑟98k栓动步枪和MG34重机枪,
|
||||
[14m49s] 冲锋枪仅作为辅助武器。
|
||||
[14m52s] 第二次世界大战爆发后,纳粹德军强调快速推进近距离火力压制的理念,
|
||||
[14m59s] 这就需要一种能伴随步兵冲锋,兼顾射程与精度的武器。
|
||||
[15m4s] 而传统冲锋枪
|
||||
[15m6s] 如MP18尺寸虽短,但枪管仅198毫米,
|
||||
[15m11s] 有效射程仅100米,
|
||||
[15m13s] 无法满足压制需求,
|
||||
[15m16s] 而MP40很好的解决了这一问题。
|
||||
[15m29s] Mp40冲锋枪的设计围绕中近距离持续压制展开,
|
||||
[15m34s] 250毫米的枪管采用镀铬工艺能让枪口初速提升至每秒380米,
|
||||
[15m41s] 有效射程达到200米,比MP18提升一倍。
|
||||
[15m46s] 833毫米的枪身长度,让士兵在抵肩射击时能够更好地控制后坐力,
|
||||
[15m53s] 配合32发弹匣能形成持续的火力输出。
|
||||
[15m58s] 更值得一提的是它的生产工艺特别适合战时量产,
|
||||
[16m3s] 枪身采用冲压和焊接技术,
|
||||
[16m6s] 零件数量比MP18减少40%,
|
||||
[16m11s] 一个熟练工人每天能组装10只,
|
||||
[16m14s] 到1944年累计生产了120万支,
|
||||
[16m18s] 833毫米的长度,
|
||||
[16m20s] 适配了二战时期开阔战场的作战需求,
|
||||
[16m24s] 也成为了二战中纳粹德军步兵火力支柱的标志性武器之一。
|
||||
[16m33s] Mp40呢是在MP38的基础上改进升级而来的,可以说呢在二战期间,在德国军队的武器装备当中,它是一款设计比较优秀的这个冲锋枪,
|
||||
[16m44s] 那么优先装备的是德军的装甲部队和它的空降部队,也就是伞兵,那么装甲部队和伞兵在使用的过程当中,啊就是要求在近距离针对对方的作战人员短时间内倾泻大量的弹药,所以
|
||||
[16m59s] 所以呢呃我们看啊这个MP40啊它的这个弹匣的长度是比较长,所以能够在近距离比如说100~150米的这样的一个距离上,针对对方进行这种持续的这样的一个射击。
|
||||
[17m13s] 那么采用这种比较长的枪身和枪管,就是要保证射击的精度,所以呢呃在近距离射击的过程当中,MP40它的精准程度也是比较高的,
|
||||
[17m24s] 从340毫米的紧凑灵活到833毫米的稳定压制,
|
||||
[17m29s] 冲锋枪的长度选择本质上是对作战空间和战术节奏的精准回应,
|
||||
[17m36s] 短有短的便捷,长有长的稳定,这正是枪械设计中长短智慧的核心之一。
|
||||
[17m43s] 接下来我们看一看步枪家族,
|
||||
[17m55s] 先来看我手中的这把aug突击步枪,
|
||||
[17m59s] 大家有没有发现它的外形呢非常的独特,没有传统步枪的枪托,
|
||||
[18m5s] 弹匣直接插在了扳机后方。
|
||||
[18m8s] 根据奥地利斯太尔公司的官方数据,它的全长只有665毫米,比折叠后的MP40冲锋枪长不到40毫米,
|
||||
[18m17s] 但是大家可别被它的短身所迷惑了,
|
||||
[18m21s] 它的枪管长度呢足足有508毫米和传统的m16a4步枪的枪管几乎是一样长的。
|
||||
[18m29s] 设计师用无托结构硬生生在不缩短枪管的前提下,把枪身缩短了将近340毫米,
|
||||
[18m37s] 真正实现了短身不短能。
|
||||
[18m45s] Aug的出现,掀起了步枪设计的一场结构革命。
|
||||
[18m58s] 随着城市化进程加快,传统长枪管步枪在城市作战,
|
||||
[19m3s] 装甲车内部操作时的弊端日益凸显,
|
||||
[19m9s] 在楼宇作战中过长的枪身导致转向不便,
|
||||
[19m13s] 甚至影响战术动作。
|
||||
[19m15s] 各国都在寻找一种能兼顾射击精度与机动灵活的步枪,但传统有托结构的设计逻辑是枪管长则枪身长似乎无法突破这一局限。
|
||||
[19m28s] 于是
|
||||
[19m29s] 奥地利斯太尔公司的设计师大胆创新,提出了无托结构的理念,
|
||||
[19m45s] Aug突击步枪,将枪托与机匣融为一体,
|
||||
[19m49s] 让射手的肩部直接抵在机匣尾部。
|
||||
[19m52s] 这样一来枪管的长度不再受枪托位置的限制,
|
||||
[19m57s] 508毫米的枪管能保证5.56×45毫米弹药的初速达到每秒970米,
|
||||
[20m4s] 有效射程600米,与传统步枪持平。
|
||||
[20m8s] 而665毫米的全长让士兵在装甲车内能轻松操作,在楼宇中能快速转向。
|
||||
[20m16s] 更创新的是
|
||||
[20m17s] aOG采用了模块化设计,
|
||||
[20m20s] 枪管可以快速更换,
|
||||
[20m22s] 能在几分钟内切换成步枪、卡宾枪、轻机枪甚至狙击枪适配不同作战场景。
|
||||
[20m31s] 首先我们看它是大量采用了这种塑料和合成材料,所以全枪可以有效的实现减重,士兵在携带和使用的过程当中可以最大程度的节省体力。那么由于采用了这种无托化的设计理念,那么它
|
||||
[20m46s] 它全枪的重量和长度呃是可以进行进一步的优化,但是呢呃由于采用无托的设计理念,也可以保证它的枪管比较长,这样的话呢呃无论是有效的射击距离和它的啊这样的一个火力的持续性,其实呢
|
||||
[21m1s] 上是达到了一种均衡的状态。
|
||||
[21m5s] Aug用无托枪身的设计真正做到了短小精悍。
|
||||
[21m10s] 接下来我们看一看长家伙
|
||||
[21m18s] 下面要讲到的这款步枪啊就是大名鼎鼎的HK416,
|
||||
[21m24s] 根据德国黑克勒科赫公司的官方参数,HK416在配备20英寸枪管之后,全枪长可达1030毫米,
|
||||
[21m33s] 比aug足足长了365毫米。
|
||||
[21m37s] 长长的枪身给可伸缩枪托,全长度的皮卡汀尼导轨和活塞导气系统留出了适配的空间。
|
||||
[21m46s] 大家看它的顶部导轨能从头到尾加装瞄准镜,激光指示器,护木两侧还能扩展战术,握把手电完全是为现代特种作战多任务多环境量身打造的
|
||||
[22m1s] 长枪身设计。
|
||||
[22m8s] 如果你曾接触过枪战类游戏,
|
||||
[22m11s] 那么你一定知道这把突击步枪m416
|
||||
[22m16s] 在各种枪战游戏中,这把枪的性能排名都是稳居前列,
|
||||
[22m21s] 近几年火爆的吃鸡游戏玩家更是将其称为吃鸡神器。
|
||||
[22m26s] 在游戏中只要能装备上m416便能无往不利,所向披靡。
|
||||
[22m33s] 而现实中这把枪的原型便是HK416。
|
||||
[22m50s] Hk416的诞生源于现代特种作战,对可靠性与多场景适配的极致追求。
|
||||
[22m57s] 21世纪初,美军特种部队在全球反恐作战中发现,
|
||||
[23m3s] m4a1卡宾枪的气吹式导气结构,
|
||||
[23m6s] 在沙漠湿热等恶劣环境下容易积碳故障,且短枪管在中距离压制时精度不足。
|
||||
[23m15s] 于是黑克勒科赫公司在m4a1基础上重新设计改造出了HK416,
|
||||
[23m32s] HK416自动步枪长805毫米,
|
||||
[23m36s] 既保证了抵肩射击的稳定性,
|
||||
[23m38s] 又能通过伸缩枪托适配不同身高士兵,
|
||||
[23m42s] 5.56×45毫米,北约弹
|
||||
[23m45s] 初速达到每秒900米,
|
||||
[23m47s] 有效射程600米,
|
||||
[23m49s] 比m4a一提升10%。
|
||||
[23m52s] 其最新改型HK416a5提供5种枪管选择,
|
||||
[23m57s] 分别是11英寸、12.5英寸、14.5英寸、16.5英寸和20英寸。
|
||||
[24m4s] 这让HK416既能在城市反恐中灵活操作,
|
||||
[24m9s] 又能在沙漠平原等开阔地形提供远距离火力支援。
|
||||
[24m17s] Hk416自动步枪最经典的实战案例是在2011年海神之矛行动,
|
||||
[24m24s] 海豹突击队队员正是用HK416击毙本拉登,
|
||||
[24m29s] 当时队员在狭小房间内完成近距离突袭,
|
||||
[24m33s] 后续撤离时又在开阔地带用其压制可能的追兵,
|
||||
[24m38s] 证明其能同时适配近距离突袭和中距离压制双重需求。
|
||||
[24m44s] 如今
|
||||
[24m45s] HK416被30多个国家的特种部队列装,
|
||||
[24m49s] 法国、挪威等国
|
||||
[24m51s] 更将其定为全军制式步枪,成为现代步枪的代表之一。
|
||||
[24m59s] 和Aug相比,HK416最大的优势呢就是它的适应性比较好,可以衍生出很多的啊这种型号,HK416它的皮卡汀尼导轨的这样的一个安装也比较方便。
|
||||
[25m13s] 在枪管外面的护套上,它可以安装4条皮卡汀尼导轨,也就是说呢不仅可以加装战术手电,或者是啊这种激光的指示系统,还可以加装啊这个外挂的
|
||||
[25m28s] 榴弹发射器,所以HK416既可以作为普通士兵所使用的突击步枪,也可以作为精准射手步枪,那么呃进行这种啊精准的火力支援。
|
||||
[25m41s] 今天我们展示的每一款枪械它们没有绝对的优劣,只有是否贴合使命的区别,
|
||||
[25m46s] 这正是枪械设计中最珍贵的
|
||||
[25m49s] 长短智慧。
|
||||
[25m52s] 长度从来不是孤立的数字,而是设计师平衡使命需求,核心功能使用环境的结果。
|
||||
[25m59s] 每一寸增减都凝结着对战场的深刻理解和对功能的
|
||||
[26m5s] 极致追求。
|
||||
[26m7s] 好了,观众朋友们,感谢您持续关注国防军事频道,军事科技,我们下周同一时间
|
||||
[26m13s] 再见。
|
||||
[26m15s] 数学领域x为待求解的未知数,
|
||||
[26m18s] 科幻范畴,
|
||||
[26m20s] x是象征未来的科技标志,
|
||||
[26m24s] 近期
|
||||
[26m24s] 美军x系列又加入了重要新成员,
|
||||
[26m28s] 代号x76的折叠旋翼机,
|
||||
[26m31s] 他声称解决了航空界几十年的难题,
|
||||
[26m34s] 可垂直悬停,
|
||||
[26m36s] 且能达到喷气式战机的速度。
|
||||
[26m39s] 那么这款空中新物种究竟蕴含哪些突破性?黑科技
|
||||
[26m44s] 是否能重塑未来空战规则?
|
||||
[26m47s] 本期军事科技
|
||||
[26m49s] 为您深入解读
|
||||
[26m50s] x家族最新成员x76。
|
||||
@@ -0,0 +1,4 @@
|
||||
<table><td colspan="3">As of December 31,<i>(In millions)</i>201820172016Total return4.9%5.0%5.1%</table>
|
||||
HK416
|
||||
M416
|
||||
PP-2000
|
||||
@@ -0,0 +1,674 @@
|
||||
{
|
||||
"episode_id": "ep003_20260331_qiangxie_chicun",
|
||||
"rule_candidates": [
|
||||
{
|
||||
"term": "FP-45",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "50AE",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "PP-2000",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "弹道",
|
||||
"domain": "weapon",
|
||||
"source": "rule_cn_weapon"
|
||||
},
|
||||
{
|
||||
"term": "美国",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "日本",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "俄罗斯",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "陆军",
|
||||
"domain": "org",
|
||||
"source": "rule_org"
|
||||
},
|
||||
{
|
||||
"term": "北约",
|
||||
"domain": "org",
|
||||
"source": "rule_org"
|
||||
},
|
||||
{
|
||||
"term": "主持人1",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人2",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人3",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人4",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人5",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人6",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人7",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人8",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
}
|
||||
],
|
||||
"ai_raw_response": [
|
||||
{
|
||||
"term": "FP-45“解放者”手枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": ".45 ACP",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "沙漠之鹰.50AE",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": ".50AE",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "PP-2000冲锋枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MP40冲锋枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MP18",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "AUG突击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M16A4步枪",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "HK416",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M4A1卡宾枪",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "HK416 A5",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "VSS微声狙击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "NTW-20大口径狙击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "毛瑟98k栓动步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MG34重机枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M416",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "9×39毫米亚音速弹",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "20×82毫米大口径弹药",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "5.56×45毫米北约弹",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "美国陆军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "通用汽车大陆制造分公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "导航灯公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "图拉仪器设计局",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "俄罗斯警察",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "内务部",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "纳粹德军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "奥地利斯泰尔公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "奥地利军队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "德国黑克勒-科赫公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "美军特种部队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "海豹突击队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "苏联特种部队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "南非丹尼尔防务公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "南非国防军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "盟军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "二战",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "无托结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "导气结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "气吹式导气结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "活塞导气系统",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "皮卡汀尼导轨",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "模块化设计",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "亚音速弹",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "反器材步枪",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "液压缓冲器",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "集成式消音器",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "“海神之矛”行动",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "车臣战争",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
}
|
||||
],
|
||||
"merged_candidates": [
|
||||
{
|
||||
"term": "FP-45",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "50AE",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "PP-2000",
|
||||
"domain": "model",
|
||||
"source": "rule_model"
|
||||
},
|
||||
{
|
||||
"term": "弹道",
|
||||
"domain": "weapon",
|
||||
"source": "rule_cn_weapon"
|
||||
},
|
||||
{
|
||||
"term": "美国",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "日本",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "俄罗斯",
|
||||
"domain": "org",
|
||||
"source": "rule_country"
|
||||
},
|
||||
{
|
||||
"term": "陆军",
|
||||
"domain": "org",
|
||||
"source": "rule_org"
|
||||
},
|
||||
{
|
||||
"term": "北约",
|
||||
"domain": "org",
|
||||
"source": "rule_org"
|
||||
},
|
||||
{
|
||||
"term": "主持人1",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人2",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人3",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人4",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人5",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人6",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人7",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "主持人8",
|
||||
"domain": "person",
|
||||
"source": "rule_person"
|
||||
},
|
||||
{
|
||||
"term": "FP-45“解放者”手枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": ".45 ACP",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "沙漠之鹰.50AE",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": ".50AE",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "PP-2000冲锋枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MP40冲锋枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MP18",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "AUG突击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M16A4步枪",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "HK416",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M4A1卡宾枪",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "HK416 A5",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "VSS微声狙击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "NTW-20大口径狙击步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "毛瑟98k栓动步枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "MG34重机枪",
|
||||
"domain": "weapon",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "M416",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "9×39毫米亚音速弹",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "20×82毫米大口径弹药",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "5.56×45毫米北约弹",
|
||||
"domain": "model",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "美国陆军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "通用汽车大陆制造分公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "导航灯公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "图拉仪器设计局",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "俄罗斯警察",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "内务部",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "纳粹德军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "奥地利斯泰尔公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "奥地利军队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "德国黑克勒-科赫公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "美军特种部队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "海豹突击队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "苏联特种部队",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "南非丹尼尔防务公司",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "南非国防军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "盟军",
|
||||
"domain": "org",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "二战",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "无托结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "导气结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "气吹式导气结构",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "活塞导气系统",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "皮卡汀尼导轨",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "模块化设计",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "亚音速弹",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "反器材步枪",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "液压缓冲器",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "集成式消音器",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "“海神之矛”行动",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
},
|
||||
{
|
||||
"term": "车臣战争",
|
||||
"domain": "tech_concept",
|
||||
"source": "ai_deepseek"
|
||||
}
|
||||
],
|
||||
"stats": {
|
||||
"rule_count": 17,
|
||||
"ai_count": 49,
|
||||
"merged_count": 66
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
seg_id,header,start_line,end_line,line_count,min_confidence,punct_ok,note
|
||||
0,"【导视1】",1,16,16,1.0000,True,""
|
||||
1,"【主持人1】",17,67,51,0.9000,True,""
|
||||
2,"【解说1】",68,129,62,0.9900,True,""
|
||||
3,"【主持人2】",130,150,21,1.0000,True,""
|
||||
4,"【解说2】",151,177,27,1.0000,True,""
|
||||
5,"【三维动画1】",178,198,21,1.0000,True,""
|
||||
6,"【解说3】",199,237,39,1.0000,False,"标点恢复失败已回退,需人工"
|
||||
7,"【主持人3】",238,271,34,0.9000,True,""
|
||||
8,"【解说4】",272,357,86,1.0000,True,""
|
||||
9,"【主持人4】",358,386,29,1.0000,True,""
|
||||
10,"【解说5】",387,468,82,1.0000,True,""
|
||||
11,"【主持人5】",469,500,32,1.0000,True,""
|
||||
12,"【解说6】",501,565,65,1.0000,True,""
|
||||
13,"【主持人6】",566,592,27,1.0000,True,""
|
||||
14,"【解说7】",593,681,89,1.0000,True,""
|
||||
15,"【主持人7】",,,0,1.0000,True,"空段:无对应字幕"
|
||||
16,"【解说8】",,,0,1.0000,True,"空段:无对应字幕"
|
||||
17,"【主持人8】",,,0,1.0000,True,"空段:无对应字幕"
|
||||
18,"【解说9】",,,0,1.0000,True,"空段:无对应字幕"
|
||||
19,"【主持人9】",682,698,17,1.0000,True,""
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
line_no,timestamp,b_original,asr_context,final_text,change_type,confidence,reason
|
||||
519,19m29s,奥地利斯泰尔公司的设计师,各国都在寻找一种能兼顾射击精度与机动灵活的步枪,但传统有托结构的设计逻辑是枪管长则枪身长似乎无法突破这一局限。 于是 奥地利斯太尔公司的设计师大胆创新,提出了无托结构的理念, Aug突击步枪,将枪托与机匣融为一体,,奥地利斯太尔公司的设计师,minor_edit,0.95,B稿为“斯泰尔”,ASR为“斯太尔”,根据上下文及官方译名应为“斯太尔”,修正为统一名称。
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,279 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
阶段 A:抽帧 + OCR(产出原始缓存 ocr_raw.jsonl)
|
||||
================================================
|
||||
策略:OCR 优先,每帧都 OCR。绝不使用亮度判空/dHash/IoU 过滤。
|
||||
按 idx 断点续跑:读取已有 ocr_raw.jsonl 中最大 idx,从 max_idx+1 继续。
|
||||
"""
|
||||
import base64
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import threading
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
|
||||
# 根治 Windows 控制台 GBK 崩溃:强制 stdout 用 UTF-8
|
||||
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
||||
|
||||
# ========================================================================
|
||||
# 全局参数(放文件顶部做常量,方便后续调)
|
||||
# ========================================================================
|
||||
FPS = 1
|
||||
CROP_BOTTOM_RATIO = 0.2
|
||||
SIM_THRESHOLD = 0.85
|
||||
OLLAMA_URL = "http://localhost:11434/api/generate"
|
||||
MODEL = "deepseek-ocr"
|
||||
OCR_PROMPT = "Free OCR."
|
||||
# 并发 OCR 线程数(环境变量 OCR_NUM_WORKERS 可覆盖)。
|
||||
# 需配合 Ollama 服务端 OLLAMA_NUM_PARALLEL >= 此值,否则服务端仍排队、提速无效。
|
||||
NUM_WORKERS = int(os.environ.get("OCR_NUM_WORKERS", "4"))
|
||||
|
||||
# 工作目录(脚本所在目录)
|
||||
WORK_DIR = Path(__file__).resolve().parent
|
||||
SOURCE_VIDEO_DIR = WORK_DIR / "source"
|
||||
FRAMES_DIR = WORK_DIR / "frames_v2"
|
||||
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# A1: 定位源视频
|
||||
# ========================================================================
|
||||
def find_source_video():
|
||||
"""在工作目录 source/ 下定位 .mp4 或 .mkv 源视频"""
|
||||
for ext in (".mp4", ".mkv"):
|
||||
candidates = list(SOURCE_VIDEO_DIR.glob(f"*{ext}"))
|
||||
if candidates:
|
||||
return candidates[0]
|
||||
raise FileNotFoundError(
|
||||
f"在 {SOURCE_VIDEO_DIR} 中未找到 .mp4 或 .mkv 文件"
|
||||
)
|
||||
|
||||
|
||||
def get_video_info(video_path):
|
||||
"""用 ffprobe 获取时长(秒)和分辨率(宽x高)"""
|
||||
cmd = [
|
||||
"ffprobe", "-v", "error",
|
||||
"-select_streams", "v:0",
|
||||
"-show_entries", "stream=duration,width,height",
|
||||
"-of", "json",
|
||||
str(video_path),
|
||||
]
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")
|
||||
if result.returncode != 0:
|
||||
raise RuntimeError(f"ffprobe 失败:\n{result.stderr}")
|
||||
info = json.loads(result.stdout)
|
||||
stream = info["streams"][0]
|
||||
duration = float(stream.get("duration", 0))
|
||||
width = stream["width"]
|
||||
height = stream["height"]
|
||||
return duration, width, height
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# A2: ffmpeg 抽帧
|
||||
# ========================================================================
|
||||
def extract_frames(video_path):
|
||||
"""
|
||||
用 ffmpeg 按 1fps 抽帧,裁切下方 20% 字幕区域。
|
||||
输出到 frames_v2/frame_%04d.png(从 0001 开始)。
|
||||
返回按文件名排序的帧路径列表。
|
||||
"""
|
||||
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 清理旧帧避免残留
|
||||
for old in FRAMES_DIR.glob("frame_*.png"):
|
||||
old.unlink()
|
||||
|
||||
crop_expr = (
|
||||
f"fps={FPS},"
|
||||
f"crop=iw:ih*{CROP_BOTTOM_RATIO}:0:ih*{1 - CROP_BOTTOM_RATIO}"
|
||||
)
|
||||
frame_pattern = str(FRAMES_DIR / "frame_%04d.png")
|
||||
|
||||
cmd = [
|
||||
"ffmpeg",
|
||||
"-i", str(video_path),
|
||||
"-vf", crop_expr,
|
||||
"-q:v", "2",
|
||||
frame_pattern,
|
||||
"-y",
|
||||
]
|
||||
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")
|
||||
if result.returncode != 0:
|
||||
raise RuntimeError(f"ffmpeg 抽帧失败:\n{result.stderr}")
|
||||
|
||||
frames = sorted(FRAMES_DIR.glob("frame_*.png"))
|
||||
return frames
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# OCR 单帧
|
||||
# ========================================================================
|
||||
def ocr_single_frame(image_path):
|
||||
"""
|
||||
调用本地 Ollama OCR 识别单帧。
|
||||
API: POST /api/generate,单轮,图片走 base64,stream=false。
|
||||
返回 strip 后的文本;异常向上抛出让调用方处理。
|
||||
"""
|
||||
with open(image_path, "rb") as fh:
|
||||
img_bytes = fh.read()
|
||||
img_b64 = base64.b64encode(img_bytes).decode("utf-8")
|
||||
|
||||
body = {
|
||||
"model": MODEL,
|
||||
"prompt": OCR_PROMPT,
|
||||
"images": [img_b64],
|
||||
"stream": False,
|
||||
}
|
||||
|
||||
resp = requests.post(OLLAMA_URL, json=body, timeout=120)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
text = data.get("response", "").strip()
|
||||
return text
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# A3: 单帧验证
|
||||
# ========================================================================
|
||||
def test_single_frame():
|
||||
"""
|
||||
A3: 验证单帧 OCR。
|
||||
对 frame_0076.png 调一次 OCR,打印原始返回。
|
||||
若对不上预期则中止,不进入批量。
|
||||
"""
|
||||
test_frame = FRAMES_DIR / "frame_0076.png"
|
||||
if not test_frame.exists():
|
||||
print("[A3] [WARN] test frame not found:", test_frame)
|
||||
print("[A3] skip single-frame check")
|
||||
return
|
||||
|
||||
print("[A3] test frame:", test_frame.name)
|
||||
try:
|
||||
raw_text = ocr_single_frame(test_frame)
|
||||
except Exception as exc:
|
||||
print("[A3] [FAIL] OCR call failed:", exc)
|
||||
print("[A3] check Ollama / deepseek-ocr, abort.")
|
||||
sys.exit(1)
|
||||
|
||||
print("[A3] raw return:", repr(raw_text))
|
||||
|
||||
# 通用冒烟检查:OCR 返回非空中文即视为链路正常(不绑定某期具体台词);
|
||||
# 真正的"Ollama 挂了"由上面 ocr_single_frame 抛异常 + sys.exit(1) 兜底。
|
||||
if any("一" <= ch <= "鿿" for ch in raw_text):
|
||||
print("[A3] [OK] OCR 链路正常(返回非空中文)。")
|
||||
else:
|
||||
print("[A3] [WARN] OCR 返回无中文,链路可能异常,但不阻断,继续批量:", repr(raw_text))
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# A4: 批量 OCR(按 idx 断点续跑 + 单帧容错)
|
||||
# ========================================================================
|
||||
def batch_ocr(frames):
|
||||
"""
|
||||
并发 OCR(线程池 NUM_WORKERS 路) + 按 idx 断点续跑 + 单帧容错。
|
||||
- 读 ocr_raw.jsonl 已写入的 idx 集合(并发中断可能留空洞,用集合而非 max),只补未写帧
|
||||
- NUM_WORKERS 个线程并发调 Ollama;每帧独立,输出与串行逐帧完全一致
|
||||
- 写盘按完成顺序、加锁逐条 append + flush(stage_b 读后会按 idx 重排,顺序无所谓)
|
||||
- 单帧 OCR 报错写 error 字段,不崩整个进程
|
||||
"""
|
||||
total = len(frames)
|
||||
|
||||
# --- 读已写入的 idx 集合(含 error 记录,避免重跑出重复 idx 行) ---
|
||||
done_idx = set()
|
||||
if OCR_RAW_PATH.exists():
|
||||
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
|
||||
for line in fh:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
try:
|
||||
rec = json.loads(line)
|
||||
if "idx" in rec:
|
||||
done_idx.add(rec["idx"])
|
||||
except json.JSONDecodeError:
|
||||
pass
|
||||
|
||||
# --- 构建 idx -> frame_path 映射 ---
|
||||
idx_to_path = {}
|
||||
for fp in frames:
|
||||
idx = int(fp.stem.split("_")[1])
|
||||
idx_to_path[idx] = fp
|
||||
|
||||
pending = [idx for idx in sorted(idx_to_path) if idx not in done_idx]
|
||||
if not pending:
|
||||
print(f"[A4] all {total} frames already done, skip.")
|
||||
return
|
||||
|
||||
print(
|
||||
f"[A4] 已完成 {len(done_idx)}/{total},待处理 {len(pending)} 帧,"
|
||||
f"并发 {NUM_WORKERS} 路"
|
||||
)
|
||||
|
||||
def _ocr_one(idx):
|
||||
t_sec = idx - 1
|
||||
frame_path = idx_to_path.get(idx)
|
||||
if frame_path is None:
|
||||
return {"idx": idx, "t_sec": t_sec, "text": "", "error": "frame file missing"}
|
||||
try:
|
||||
text = ocr_single_frame(frame_path)
|
||||
return {"idx": idx, "t_sec": t_sec, "text": text}
|
||||
except Exception as exc:
|
||||
return {"idx": idx, "t_sec": t_sec, "text": "", "error": str(exc)}
|
||||
|
||||
write_lock = threading.Lock()
|
||||
done_count = len(done_idx)
|
||||
|
||||
with open(OCR_RAW_PATH, "a", encoding="utf-8") as fh:
|
||||
with ThreadPoolExecutor(max_workers=NUM_WORKERS) as pool:
|
||||
futures = {pool.submit(_ocr_one, idx): idx for idx in pending}
|
||||
for fut in as_completed(futures):
|
||||
record = fut.result()
|
||||
with write_lock:
|
||||
fh.write(json.dumps(record, ensure_ascii=False) + "\n")
|
||||
fh.flush()
|
||||
done_count += 1
|
||||
if done_count % 50 == 0:
|
||||
print(f"{done_count}/{total}", flush=True)
|
||||
|
||||
print(f"{total}/{total}", flush=True)
|
||||
print(f"[A4] OCR done, {total} records in {OCR_RAW_PATH}")
|
||||
|
||||
|
||||
# ========================================================================
|
||||
# 主流程
|
||||
# ========================================================================
|
||||
def main():
|
||||
# A1
|
||||
video_path = find_source_video()
|
||||
duration, width, height = get_video_info(video_path)
|
||||
print(f"[A1] video: {video_path}")
|
||||
print(f"[A1] duration: {duration:.1f}s resolution: {width}x{height}")
|
||||
|
||||
# A2: skip re-extract if frames already exist
|
||||
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
|
||||
existing = sorted(FRAMES_DIR.glob("frame_*.png"))
|
||||
if existing:
|
||||
print(f"[A2] {len(existing)} frames already exist, skip re-extract")
|
||||
frames = existing
|
||||
else:
|
||||
print(f"[A2] ffmpeg extract (fps={FPS}, crop_bottom_ratio={CROP_BOTTOM_RATIO})...")
|
||||
frames = extract_frames(video_path)
|
||||
print(f"[A2] extracted {len(frames)} frames -> {FRAMES_DIR}")
|
||||
|
||||
# A3
|
||||
test_single_frame()
|
||||
|
||||
# A4
|
||||
batch_ocr(frames)
|
||||
|
||||
print("\nstage A done.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,300 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
阶段 B:文本去重 + 出稿(只读缓存,可反复重跑调阈值)
|
||||
=======================================================
|
||||
策略:基于 difflib 文本相似度折叠连续重复段,绝不使用像素级过滤。
|
||||
"""
|
||||
import csv
|
||||
import json
|
||||
import re
|
||||
from difflib import SequenceMatcher
|
||||
from pathlib import Path
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# 全局参数(与阶段 A 共享,放文件顶部做常量)
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
FPS = 1
|
||||
CROP_BOTTOM_RATIO = 0.2
|
||||
SIM_THRESHOLD = 0.85
|
||||
|
||||
# 工作目录
|
||||
WORK_DIR = Path(__file__).resolve().parent
|
||||
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
|
||||
B_MANUSCRIPT_PATH = WORK_DIR / "B稿_v2.txt"
|
||||
DEBUG_CSV_PATH = WORK_DIR / "dedup_debug.csv"
|
||||
BLANK_FILTERED_PATH = WORK_DIR / "blank_filtered.txt"
|
||||
|
||||
|
||||
def similarity(a, b):
|
||||
"""计算两个文本的 difflib 相似度(0.0 ~ 1.0)"""
|
||||
if not a or not b:
|
||||
return 0.0
|
||||
return SequenceMatcher(None, a, b).ratio()
|
||||
|
||||
|
||||
def is_blank_ocr(text):
|
||||
"""基于文本的空场判定:空串 / HTML幻觉 / 不含汉字"""
|
||||
t = text.strip()
|
||||
if not t: # 空串
|
||||
return True
|
||||
if '<' in t and '>' in t: # HTML/markup 幻觉(如 <table>)
|
||||
return True
|
||||
if not re.search(r'[\u4e00-\u9fff]', t): # 不含任何汉字 → 非本节目字幕
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# B1: 读缓存
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
def load_ocr_raw():
|
||||
"""读 ocr_raw.jsonl,按 idx(时间)升序返回记录列表"""
|
||||
if not OCR_RAW_PATH.exists():
|
||||
raise FileNotFoundError(
|
||||
f"ocr_raw.jsonl 不存在: {OCR_RAW_PATH}\n"
|
||||
"请先跑阶段 A(stage_a_extract_ocr.py)。"
|
||||
)
|
||||
|
||||
records = []
|
||||
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
|
||||
for line in fh:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
rec = json.loads(line)
|
||||
records.append(rec)
|
||||
|
||||
# 按 idx 升序
|
||||
records.sort(key=lambda r: r["idx"])
|
||||
return records
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# B2: 折叠连续重复段(裁判在此,基于文本不基于像素)
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
def collapse_segments(records):
|
||||
"""
|
||||
维护"当前字幕"(文本 + 起始 t_sec),遍历每帧:
|
||||
- 文本为空 → 空场:结束当前字幕(若有),并清空,不开新段。
|
||||
- 非空且与当前字幕文本的 difflib 相似度 ≥ SIM_THRESHOLD → 同一条,并入当前段(记下这条文本备投票)。
|
||||
- 非空且相似度 < SIM_THRESHOLD → 结束并输出当前段,用这帧开新段。
|
||||
只比时间相邻帧,只折叠连续段;绝不全局去重。
|
||||
|
||||
每段最终文本 = 段内出现次数最多的 OCR 文本(多数投票,抵消个别帧抖动)。
|
||||
每段时间戳 = 段内最早 t_sec。
|
||||
|
||||
返回: (segments, debug_rows)
|
||||
segments: [{"start_t": float, "text": str}, ...]
|
||||
debug_rows: [{idx, t_sec, ocr_text, decision, merged_into_start_t}, ...]
|
||||
"""
|
||||
segments = []
|
||||
debug_rows = []
|
||||
|
||||
if not records:
|
||||
return segments, debug_rows
|
||||
|
||||
current_text = None # 当前段内用于比对的参考文本
|
||||
current_texts = [] # 当前段内所有 OCR 文本(用于投票)
|
||||
current_start_t = None # 当前段起始 t_sec
|
||||
current_segment_indices = [] # 当前段包含的帧号列表
|
||||
|
||||
def _finalize_segment():
|
||||
"""输出当前段(若存在)"""
|
||||
nonlocal current_text, current_texts, current_start_t, current_segment_indices
|
||||
if current_text is not None and current_texts:
|
||||
# 多数投票:选出现次数最多的文本
|
||||
text_counts = {}
|
||||
for t in current_texts:
|
||||
text_counts[t] = text_counts.get(t, 0) + 1
|
||||
best_text = max(text_counts, key=lambda k: text_counts[k])
|
||||
|
||||
segments.append({
|
||||
"start_t": current_start_t,
|
||||
"text": best_text,
|
||||
})
|
||||
current_text = None
|
||||
current_texts = []
|
||||
current_start_t = None
|
||||
current_segment_indices = []
|
||||
|
||||
for rec in records:
|
||||
ocr_text = rec["text"]
|
||||
|
||||
if is_blank_ocr(ocr_text):
|
||||
# 空场:结束当前字幕(若有),并清空,不开新段
|
||||
if current_text is not None:
|
||||
_finalize_segment()
|
||||
debug_rows.append({
|
||||
"idx": rec["idx"],
|
||||
"t_sec": rec["t_sec"],
|
||||
"ocr_text": ocr_text,
|
||||
"decision": "blank",
|
||||
"merged_into_start_t": "",
|
||||
})
|
||||
continue
|
||||
|
||||
if current_text is None:
|
||||
# 开新段
|
||||
current_text = ocr_text
|
||||
current_texts = [ocr_text]
|
||||
current_start_t = rec["t_sec"]
|
||||
current_segment_indices = [rec["idx"]]
|
||||
debug_rows.append({
|
||||
"idx": rec["idx"],
|
||||
"t_sec": rec["t_sec"],
|
||||
"ocr_text": ocr_text,
|
||||
"decision": "new",
|
||||
"merged_into_start_t": rec["t_sec"],
|
||||
})
|
||||
else:
|
||||
sim = similarity(current_text, ocr_text)
|
||||
if sim >= SIM_THRESHOLD:
|
||||
# 同一条,并入当前段
|
||||
current_texts.append(ocr_text)
|
||||
current_segment_indices.append(rec["idx"])
|
||||
debug_rows.append({
|
||||
"idx": rec["idx"],
|
||||
"t_sec": rec["t_sec"],
|
||||
"ocr_text": ocr_text,
|
||||
"decision": "merged",
|
||||
"merged_into_start_t": current_start_t,
|
||||
})
|
||||
else:
|
||||
# 结束当前段,用这帧开新段
|
||||
_finalize_segment()
|
||||
current_text = ocr_text
|
||||
current_texts = [ocr_text]
|
||||
current_start_t = rec["t_sec"]
|
||||
current_segment_indices = [rec["idx"]]
|
||||
debug_rows.append({
|
||||
"idx": rec["idx"],
|
||||
"t_sec": rec["t_sec"],
|
||||
"ocr_text": ocr_text,
|
||||
"decision": "new",
|
||||
"merged_into_start_t": rec["t_sec"],
|
||||
})
|
||||
|
||||
# 遍历结束,落最后一个段
|
||||
_finalize_segment()
|
||||
|
||||
return segments, debug_rows
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# B3: 输出 B稿_v2.txt
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
def write_b_manuscript(segments):
|
||||
"""
|
||||
输出 B稿_v2.txt,每行格式: [XmYs] 文本
|
||||
例: [1m18s] 我是主持人蓝皓
|
||||
"""
|
||||
lines = []
|
||||
for seg in segments:
|
||||
t = seg["start_t"]
|
||||
m = int(t) // 60
|
||||
s = int(t) % 60
|
||||
cleaned = re.sub(r'^[#*\->`\s]+', '', seg['text']).strip()
|
||||
lines.append(f"[{m}m{s}s] {cleaned}")
|
||||
|
||||
with open(B_MANUSCRIPT_PATH, "w", encoding="utf-8") as fh:
|
||||
fh.write("\n".join(lines) + "\n")
|
||||
|
||||
print(f"[B3] B稿_v2.txt 写入: {B_MANUSCRIPT_PATH} ({len(lines)} 行)")
|
||||
return lines
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# B4: 输出 dedup_debug.csv
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
def write_debug_csv(debug_rows):
|
||||
"""
|
||||
输出 dedup_debug.csv,逐帧记:
|
||||
idx, t_sec, ocr_text, decision(new/merged/blank), merged_into_start_t
|
||||
"""
|
||||
with open(DEBUG_CSV_PATH, "w", encoding="utf-8", newline="") as fh:
|
||||
writer = csv.writer(fh)
|
||||
writer.writerow([
|
||||
"idx", "t_sec", "ocr_text",
|
||||
"decision", "merged_into_start_t",
|
||||
])
|
||||
for row in debug_rows:
|
||||
writer.writerow([
|
||||
row["idx"],
|
||||
row["t_sec"],
|
||||
row["ocr_text"],
|
||||
row["decision"],
|
||||
row["merged_into_start_t"],
|
||||
])
|
||||
|
||||
print(f"[B4] dedup_debug.csv 写入: {DEBUG_CSV_PATH} ({len(debug_rows)} 行)")
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# 主流程
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
def main():
|
||||
print(f"[B] SIM_THRESHOLD = {SIM_THRESHOLD}")
|
||||
|
||||
# B1
|
||||
records = load_ocr_raw()
|
||||
print(f"[B1] 读取 ocr_raw.jsonl,共 {len(records)} 条记录")
|
||||
|
||||
# B2
|
||||
segments, debug_rows = collapse_segments(records)
|
||||
print(f"[B2] 折叠完成: {len(segments)} 个不连续字幕段")
|
||||
print(f"[B2] 调试行数: {len(debug_rows)}")
|
||||
|
||||
# B3
|
||||
lines = write_b_manuscript(segments)
|
||||
|
||||
# B4
|
||||
write_debug_csv(debug_rows)
|
||||
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
# 跑完报告
|
||||
# ═══════════════════════════════════════════════════════════
|
||||
total_frames = len(records)
|
||||
ocr_success = sum(1 for r in records if r["text"].strip())
|
||||
blank_count = sum(1 for r in records if is_blank_ocr(r["text"]))
|
||||
|
||||
# 收集所有"被判空场但原文本非空"的去重文本
|
||||
blank_but_nonempty = set()
|
||||
for r in records:
|
||||
t = r["text"]
|
||||
if is_blank_ocr(t) and t.strip():
|
||||
blank_but_nonempty.add(t)
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("跑完报告")
|
||||
print("=" * 60)
|
||||
print(f"抽帧总数: {total_frames}")
|
||||
print(f"OCR 成功数(非空): {ocr_success}")
|
||||
print(f"空场数: {blank_count}")
|
||||
print(f"B稿_v2.txt 最终行数: {len(lines)}")
|
||||
print("=" * 60)
|
||||
print(f"B 稿路径: {B_MANUSCRIPT_PATH}")
|
||||
print(f"调试表路径: {DEBUG_CSV_PATH}")
|
||||
|
||||
# 写出"被判空场但原文本非空"去重清单到文件
|
||||
blank_list = sorted(blank_but_nonempty)
|
||||
with open(BLANK_FILTERED_PATH, "w", encoding="utf-8") as fh:
|
||||
for t in blank_list:
|
||||
fh.write(t + "\n")
|
||||
print(f"\n空白过滤清单写入: {BLANK_FILTERED_PATH} ({len(blank_list)} 条去重文本)")
|
||||
|
||||
# 打印"被判空场但原文本非空"的去重清单
|
||||
if blank_but_nonempty:
|
||||
print("\n" + "=" * 60)
|
||||
print("【被判空场但原文本非空】去重文本清单(请肉眼确认无真中文字幕)")
|
||||
print("=" * 60)
|
||||
for i, t in enumerate(blank_list, 1):
|
||||
print(f" [{i}] {repr(t)}")
|
||||
print(f"共 {len(blank_but_nonempty)} 条去重文本")
|
||||
else:
|
||||
print("\n无'被判空场但原文本非空'的文本。")
|
||||
|
||||
print("\n阶段 B 完成。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1 @@
|
||||
.45 ACP|.50AE|20×82毫米大口径弹药|5.56×45毫米北约弹|50AE|9×39毫米亚音速弹|AUG突击步枪|FP-45|FP-45“解放者”手枪|HK416|HK416 A5|M16A4步枪|M416|M4A1卡宾枪|MG34重机枪|MP18|MP40冲锋枪|NTW-20大口径狙击步枪|PP-2000|PP-2000冲锋枪|VSS微声狙击步枪|“海神之矛”行动|主持人6|主持人7|主持人8|二战|亚音速弹|俄罗斯|俄罗斯警察|内务部|北约|南非丹尼尔防务公司|南非国防军|反器材步枪|图拉仪器设计局|奥地利军队|奥地利斯泰尔公司|导气结构|导航灯公司|弹道|德国黑克勒-科赫公司|无托结构|日本|模块化设计|毛瑟98k栓动步枪|气吹式导气结构|沙漠之鹰.50AE|活塞导气系统|海豹突击队|液压缓冲器|皮卡汀尼导轨|盟军|纳粹德军|美军特种部队|美国陆军|苏联特种部队|车臣战争|通用汽车大陆制造分公司|陆军|集成式消音器
|
||||
@@ -0,0 +1,698 @@
|
||||
[0m6s] 藏于方寸的敌后利器
|
||||
[0m9s] 锋芒毕露的火力先锋
|
||||
[0m12s] 穿梭街巷的近战精灵
|
||||
[0m14s] 主宰阵地的压制王者
|
||||
[0m18s] 同为枪械家族成员
|
||||
[0m20s] 为何长度取舍
|
||||
[0m21s] 各不相同
|
||||
[0m23s] 每一寸伸缩
|
||||
[0m24s] 都是对实战需求的
|
||||
[0m26s] 精准回应
|
||||
[0m27s] 每一款设计
|
||||
[0m28s] 都凝结着军工领域的
|
||||
[0m30s] 深邃考量
|
||||
[0m32s] 《军事科技》带您解码
|
||||
[0m34s] 枪械设计背后的
|
||||
[0m36s] 长短智慧
|
||||
[1m13s] 各位观众你们好
|
||||
[1m14s] 欢迎收看《军事科技》
|
||||
[1m16s] 我是主持人蓝皓
|
||||
[1m17s] 提到枪械
|
||||
[1m18s] 威力 精度
|
||||
[1m19s] 往往是我们关注的焦点
|
||||
[1m21s] 但是
|
||||
[1m22s] 有一个看似基础
|
||||
[1m23s] 却至关重要的设计
|
||||
[1m24s] 始终左右着枪械的实战性能
|
||||
[1m27s] 它就是长度
|
||||
[1m30s] 今天要聊的枪械
|
||||
[1m31s] 每一款的长度都大不相同
|
||||
[1m33s] 有的枪械要极致缩短
|
||||
[1m36s] 甘愿舍弃部分舒适与功能
|
||||
[1m38s] 有的却要刻意加长
|
||||
[1m40s] 坦然放弃部分便携性
|
||||
[1m42s] 首先我们来看
|
||||
[1m44s] 手枪
|
||||
[1m55s] 首先出场的是
|
||||
[1m56s] 短到可以塞进火柴盒里的
|
||||
[1m58s] 美国FP-45解放者手枪
|
||||
[2m2s] 我手里的这款模型
|
||||
[2m3s] 是为了让大家看得更加清楚
|
||||
[2m5s] 所以做了放大
|
||||
[2m6s] 据资料显示
|
||||
[2m7s] 它的实际长度只有141毫米
|
||||
[2m11s] 比我手掌的宽度还要短
|
||||
[2m13s] 大家仔细来看它的结构
|
||||
[2m16s] 握把的下半部分是中空的
|
||||
[2m18s] 打开滑动挡板
|
||||
[2m20s] 能够装10发
|
||||
[2m21s] .45 ACP备用弹
|
||||
[2m25s] 瞄准具也非常的简单
|
||||
[2m27s] 只有在枪管的前端
|
||||
[2m28s] 有一个小小的片状准星
|
||||
[2m31s] 在尾端挡板上
|
||||
[2m32s] 有一个切削的简易缺口
|
||||
[2m35s] 不仔细看几乎发现不了
|
||||
[2m37s] 当然 不能说它没有瞄准具
|
||||
[2m39s] 做到了极致的简单
|
||||
[2m42s] 更特别的是
|
||||
[2m43s] 它没有半自动的功能
|
||||
[2m45s] 每打一发
|
||||
[2m46s] 都得手动把尾部的待击块
|
||||
[2m49s] 然后再向左旋转
|
||||
[2m51s] 才能装下一发弹
|
||||
[2m53s] 那么如此短小的设计
|
||||
[2m55s] 却让这款不起眼的小手枪
|
||||
[2m57s] 成为了敌后斗争的
|
||||
[2m59s] 特殊利器
|
||||
[3m2s] 这是一把
|
||||
[3m3s] 用来换取更好枪支的武器
|
||||
[3m6s] 一个构思独特 简单
|
||||
[3m8s] 却又精妙绝伦的设计
|
||||
[3m13s] FP-45绰号解放者
|
||||
[3m16s] 是一款外形笨拙的手枪
|
||||
[3m18s] 却从未真正投入过实战
|
||||
[3m21s] 解放者算是最酷的
|
||||
[3m23s] 未投入使用枪支之一
|
||||
[3m26s] 该枪诞生于二战时期
|
||||
[3m28s] 是针对德国和日本开展的
|
||||
[3m30s] 一项秘密心理战行动的产物
|
||||
[3m33s] 其设计理念
|
||||
[3m35s] 是制造一种小巧廉价的枪械
|
||||
[3m37s] 让盟军可以成千上万地
|
||||
[3m40s] 空投给欧洲
|
||||
[3m41s] 和亚洲的抵抗战士
|
||||
[3m43s] 设想让当地人捡到这种枪后
|
||||
[3m46s] 能悄悄接近德国或日本军官
|
||||
[3m49s] 扣动扳机将其击毙
|
||||
[3m51s] 然后夺走对方的枪支
|
||||
[4m3s] 每把FP-45解放者
|
||||
[4m5s] 会连同10发,45 ACP弹
|
||||
[4m8s] 装在纸盒里
|
||||
[4m10s] 盒内的绘画说明书
|
||||
[4m11s] 就算不识字的人
|
||||
[4m13s] 也能看懂操作步骤
|
||||
[4m15s] 这些“火柴盒杀手”
|
||||
[4m17s] 被大量投放到敌后
|
||||
[4m19s] 抵抗组织成员
|
||||
[4m20s] 用它近距离突袭德国哨岗后
|
||||
[4m23s] 就随手丢弃
|
||||
[4m25s] 即便被缴获
|
||||
[4m26s] 也能对对方产生
|
||||
[4m28s] 极大的心理威慑效果
|
||||
[4m30s] 当成千上万的
|
||||
[4m32s] FP-45被德军发现
|
||||
[4m34s] 他们便会心生疑惑
|
||||
[4m36s] 天知道当地人手里
|
||||
[4m39s] 到底还有多少把
|
||||
[4m42s] 它是在二战期间
|
||||
[4m44s] 比较特殊的这样的一款手枪
|
||||
[4m46s] 主要是秘密携带
|
||||
[4m48s] 秘密使用
|
||||
[4m49s] 它完全是采用这种单发的
|
||||
[4m51s] 这样的一个设计
|
||||
[4m52s] 这个退壳
|
||||
[4m53s] 也没有特别的这样的一个设备
|
||||
[4m55s] 必须要单独配一个小木棍
|
||||
[4m58s] 把使用之后的这个弹壳
|
||||
[5m1s] 再把它给捅出来
|
||||
[5m2s] 所以操作起来是比较复杂的
|
||||
[5m5s] 但是
|
||||
[5m6s] 解放者这款手枪最大的优势
|
||||
[5m8s] 就是结构简单
|
||||
[5m9s] 不需要经过专门的培训
|
||||
[5m11s] 任何人都可以对它进行使用
|
||||
[5m14s] 甚至这个枪管非常的短
|
||||
[5m17s] 连这个膛线都没有
|
||||
[5m19s] 在近距离
|
||||
[5m20s] 可以针对人员
|
||||
[5m21s] 构成比较大的杀伤
|
||||
[5m24s] 如今FP-45
|
||||
[5m25s] 成了收藏家眼中的珍品
|
||||
[5m28s] 它短小的尺寸
|
||||
[5m29s] 不是偷工减料
|
||||
[5m30s] 而是战略需求优先的必然结果
|
||||
[5m33s] 少一毫米
|
||||
[5m34s] 都可能影响空投效率
|
||||
[5m35s] 多一毫米
|
||||
[5m36s] 都可能失去隐蔽性
|
||||
[5m38s] 接下来我们看一看手枪中的
|
||||
[5m41s] 大家伙
|
||||
[5m45s] 它就是沙漠之鹰.50AE
|
||||
[5m49s] 它全长约273毫米
|
||||
[5m51s] 几乎是FP-45的两倍
|
||||
[5m54s] 仅枪管长152毫米
|
||||
[5m57s] 比FP-45的整枪还长11毫米
|
||||
[6m0s] 握在手里能明显感觉到它的分量
|
||||
[6m3s] 它完全放弃了手枪的便携性
|
||||
[6m5s] 所有的设计都为了适配
|
||||
[6m7s] .50AE大口径弹药的
|
||||
[6m10s] 极致火力
|
||||
[6m13s] 沙漠之鹰
|
||||
[6m15s] 是当今世界上最知名的
|
||||
[6m17s] 大口径手枪之一
|
||||
[6m19s] 从射击游戏到电影银幕
|
||||
[6m22s] 沙漠之鹰表现的强大威力
|
||||
[6m24s] 让其成为许多人的最爱
|
||||
[6m28s] 20世纪80年代
|
||||
[6m30s] 欧州狩猎运动兴起
|
||||
[6m32s] 面对熊 野猪等大型猛兽
|
||||
[6m35s] 传统9毫米
|
||||
[6m37s] 或,45口径的威力
|
||||
[6m39s] 根本不足以致命
|
||||
[6m41s] 在反恐作战中
|
||||
[6m43s] 警方和特种部队
|
||||
[6m45s] 也需要一种
|
||||
[6m46s] 能击穿轻型防弹衣
|
||||
[6m48s] 车辆挡风玻璃的便携武器
|
||||
[6m51s] 随着.50AE弹药的出现
|
||||
[6m54s] 让这些需求
|
||||
[6m55s] 有了实现的可能
|
||||
[6m57s] 这种弹药的弹头重量
|
||||
[6m59s] 超过15克
|
||||
[7m0s] 动能
|
||||
[7m1s] 是普通9毫米手枪弹的3倍以上
|
||||
[7m4s] 但是
|
||||
[7m5s] 也对枪械设计
|
||||
[7m6s] 提出了严峻挑战
|
||||
[7m16s] 大口径弹药燃烧时
|
||||
[7m18s] 会产生巨大的高温高压
|
||||
[7m20s] 必须有足够长的枪管
|
||||
[7m22s] 才能让火药充分燃烧
|
||||
[7m25s] 沙漠之鹰152毫米的枪管
|
||||
[7m28s] 能让弹头初速
|
||||
[7m29s] 达到每秒402米
|
||||
[7m32s] 比短枪管版本提升15%以上
|
||||
[7m36s] 有效射程
|
||||
[7m37s] 也从50米延伸到100米
|
||||
[7m40s] 随之而来的是巨大后坐力
|
||||
[7m43s] 需要273毫米的枪身
|
||||
[7m45s] 和两千克的重量来平衡
|
||||
[7m47s] 如果枪身过短
|
||||
[7m49s] 射击时枪口会剧烈上跳
|
||||
[7m52s] 甚至可能伤到射手的手腕
|
||||
[7m55s] 生产商还提供
|
||||
[7m56s] 254毫米枪管的加长版本
|
||||
[7m59s] 全长会达到374毫米
|
||||
[8m2s] 但因便携性太差
|
||||
[8m4s] 只有少数狩猎爱好者才会选择
|
||||
[8m10s] 如今
|
||||
[8m11s] 沙漠之鹰虽未大规模列装军队
|
||||
[8m14s] 却因独特的外形
|
||||
[8m16s] 和强大的威力
|
||||
[8m17s] 成为影视剧中的常客
|
||||
[8m19s] 用极致的长度
|
||||
[8m20s] 诠释了
|
||||
[8m21s] 火力至上的设计理念
|
||||
[8m24s] 也成为枪械文化中
|
||||
[8m25s] 力量象征的代名词
|
||||
[8m29s] 为什么说要把它的枪管
|
||||
[8m31s] 设计得比较长
|
||||
[8m32s] 因为它弹药的尺寸比较大
|
||||
[8m34s] 另外一个本身
|
||||
[8m36s] 在射击的过程当中
|
||||
[8m37s] 为了保证精度
|
||||
[8m38s] 为了保证可靠性
|
||||
[8m40s] 所以它整体的这个(重量)
|
||||
[8m41s] 是比较重的
|
||||
[8m43s] 重达两公斤
|
||||
[8m44s] 正常人对它进行持握射击
|
||||
[8m47s] 确实是很费劲儿的
|
||||
[8m50s] 沙漠之鹰它是采用导气结构
|
||||
[8m51s] 这一点和步枪是非常相似
|
||||
[8m54s] 能够保证
|
||||
[8m55s] 它发射大威力的弹药
|
||||
[8m57s] 但是在实战的过程当中
|
||||
[8m59s] 要进行短时间内的快速射击
|
||||
[9m2s] 这个就很难打得准
|
||||
[9m3s] 因为它的后坐力
|
||||
[9m4s] 是比较大的
|
||||
[9m5s] 所以从它的设计理念来看
|
||||
[9m7s] 它更像是靶场手枪
|
||||
[9m9s] 或者是狩猎手枪
|
||||
[9m11s] 在军警部队当中进行使用
|
||||
[9m14s] 首先是不便于携带
|
||||
[9m15s] 另外一个枪体太重了
|
||||
[9m18s] 那么在操作使用的过程中
|
||||
[9m20s] 会带来一系列的麻烦
|
||||
[9m24s] 一款手枪能藏进火柴盒
|
||||
[9m26s] 一款堪称手枪巨无霸
|
||||
[9m29s] FP-45和沙漠之鹰
|
||||
[9m31s] 用132毫米的长度差
|
||||
[9m33s] 精准命中了两种极端需求
|
||||
[9m36s] 它们的设计看似矛盾
|
||||
[9m38s] 却都在各自的场景下
|
||||
[9m40s] 实现了长度
|
||||
[9m41s] 与功能的最优匹配
|
||||
[9m44s] 接下来
|
||||
[9m45s] 我们把目光转向冲锋枪家族
|
||||
[9m47s] 看一看它们的长度差
|
||||
[9m49s] 又藏着怎样的战场逻辑
|
||||
[10m3s] 先看我手里的这把
|
||||
[10m4s] PP-2000冲锋枪
|
||||
[10m6s] 这是我见过
|
||||
[10m7s] 最“露骨”的一款冲锋枪了
|
||||
[10m9s] 同样
|
||||
[10m10s] 为了让大家看清楚
|
||||
[10m11s] 这款模型也做了一点放大
|
||||
[10m14s] 可以看到
|
||||
[10m15s] 它的枪机前半部分
|
||||
[10m17s] 完全是裸露在外的
|
||||
[10m19s] 根据设计方的官方参数
|
||||
[10m21s] 它的全长仅340毫米
|
||||
[10m24s] 比常见的500毫升矿泉水瓶
|
||||
[10m27s] 就长那么一点
|
||||
[10m28s] 刚好能够放进
|
||||
[10m29s] 战术背心的口袋里
|
||||
[10m31s] 单手就能握住操作
|
||||
[10m34s] 兼顾近战火力
|
||||
[10m35s] 和一定的有效射程
|
||||
[10m37s] 不会因为追求短尺寸
|
||||
[10m39s] 而牺牲核心威力
|
||||
[10m42s] PP-2000的设计
|
||||
[10m44s] 源于俄罗斯
|
||||
[10m45s] 在城市反恐作战中
|
||||
[10m46s] 遇到的实战痛点
|
||||
[10m49s] 20世纪90年代
|
||||
[10m50s] 车臣战争中的巷战
|
||||
[10m52s] 让俄军深刻体会到
|
||||
[10m54s] 传统冲锋枪
|
||||
[10m55s] 过长的枪身
|
||||
[10m57s] 在狭窄的楼道 房间中
|
||||
[10m59s] 根本无法灵活转向
|
||||
[11m1s] 士兵在破门后
|
||||
[11m3s] 常常因枪身剐蹭门框
|
||||
[11m5s] 而延误举枪时机
|
||||
[11m7s] 甚至被敌方近距离突袭
|
||||
[11m10s] 为了解决这一问题
|
||||
[11m11s] 图拉仪器设计局
|
||||
[11m13s] 从1993年开始
|
||||
[11m14s] 研发紧凑式冲锋枪
|
||||
[11m17s] 核心目标就是
|
||||
[11m18s] 在保证火力的前提下
|
||||
[11m20s] 把长度
|
||||
[11m21s] 控制在350毫米以内
|
||||
[11m23s] 为此
|
||||
[11m24s] 设计师采用了
|
||||
[11m25s] 多项针对性设计
|
||||
[11m28s] PP-2000冲锋枪的设计
|
||||
[11m30s] 非常小巧精妙
|
||||
[11m32s] 整枪上下两个部分
|
||||
[11m34s] 可以快速拆开
|
||||
[11m36s] 整体部件非常少
|
||||
[11m37s] 便于维护保养
|
||||
[11m39s] PP-2000冲锋枪的枪机前部分
|
||||
[11m42s] 暴露在机匣外
|
||||
[11m43s] 并兼作上膛拉机柄
|
||||
[11m46s] 在枪机连杆的前方
|
||||
[11m47s] 设有一个铰接手柄
|
||||
[11m49s] 当需要拉动的时候
|
||||
[11m51s] 可以扳起向左或向右旋转
|
||||
[11m54s] 然后再拉动连杆
|
||||
[11m55s] 进行上膛操作
|
||||
[11m58s] 这种枪机外露的方式
|
||||
[12m0s] 不仅能够减少整枪的长度
|
||||
[12m2s] 还可以让枪机
|
||||
[12m3s] 和枪管的一部分
|
||||
[12m5s] 直接暴露在外面
|
||||
[12m6s] 有利于整枪的散热
|
||||
[12m8s] PP-2000冲锋枪
|
||||
[12m10s] 配有两种容量的弹匣
|
||||
[12m12s] 一种是20发
|
||||
[12m13s] 另一种是44发
|
||||
[12m15s] 供弹弹匣插在握把内
|
||||
[12m18s] 而在枪尾
|
||||
[12m19s] 还有一个弹匣插口
|
||||
[12m21s] 把不用的弹匣插上去
|
||||
[12m22s] 便可以当作枪托来使用
|
||||
[12m24s] 量产型版本
|
||||
[12m26s] 则增加了折叠式枪托
|
||||
[12m28s] 这个可选配件
|
||||
[12m29s] 也是像弹匣一样
|
||||
[12m31s] 插到枪尾上使用
|
||||
[12m34s] 全枪的重量非常低
|
||||
[12m36s] 而且非常的短
|
||||
[12m37s] 特别适合特种部队
|
||||
[12m39s] 或者是强力部门的
|
||||
[12m41s] 执法人员去使用
|
||||
[12m43s] 可以在近距离的过程当中
|
||||
[12m45s] 针对对方
|
||||
[12m46s] 进行密集的火力压制
|
||||
[12m48s] 由于它的枪身比较短
|
||||
[12m50s] 其实也适合
|
||||
[12m51s] 乘车作战的部队
|
||||
[12m53s] 比如说坦克装甲车的
|
||||
[12m55s] 这个车组乘员
|
||||
[12m56s] 进行佩戴和使用
|
||||
[12m57s] 作为一种自卫武器
|
||||
[12m58s] 当然了战斗机的飞行员
|
||||
[13m0s] 和直升机的机组乘员
|
||||
[13m3s] 也可以把它作为一种
|
||||
[13m4s] 大威力的自卫武器
|
||||
[13m5s] 因为它的持续的火力压制能力
|
||||
[13m8s] 要比一般的手枪要强很多
|
||||
[13m10s] 而且
|
||||
[13m11s] 和这种短的冲锋枪相比
|
||||
[13m13s] 它的枪身确实更短
|
||||
[13m15s] 实现了最大程度地减重
|
||||
[13m21s] 用340毫米的紧凑长度
|
||||
[13m23s] 加上暴露枪机设计
|
||||
[13m24s] 把巷战灵活做到了极致
|
||||
[13m27s] 短身带来的机动优势
|
||||
[13m29s] 在狭小空间里无可替代
|
||||
[13m32s] 接下来我们看一把
|
||||
[13m33s] 长尺寸的冲锋枪
|
||||
[13m40s] 它就是
|
||||
[13m41s] MP40冲锋枪
|
||||
[13m44s] 根据二战时期的
|
||||
[13m45s] 德军技术手册记载
|
||||
[13m46s] 它折叠后
|
||||
[13m47s] 全枪长630毫米
|
||||
[13m50s] 比前面讲到的PP-2000
|
||||
[13m51s] 长近100毫米
|
||||
[13m55s] 当它展开之后
|
||||
[13m57s] 长833毫米
|
||||
[14m0s] 我抵肩握住它
|
||||
[14m1s] 能明显感觉到
|
||||
[14m3s] 枪身特别舒展
|
||||
[14m4s] 枪托与肩部的贴合度很好
|
||||
[14m7s] 250毫米的枪管
|
||||
[14m9s] 让枪口在射击时跳动很小
|
||||
[14m12s] 在二战的平原
|
||||
[14m14s] 和阵地战中特别实用
|
||||
[14m16s] 士兵在冲锋的时候
|
||||
[14m17s] 能够稳定抵肩射击
|
||||
[14m19s] 精准压制200米内的
|
||||
[14m22s] 敌方目标
|
||||
[14m24s] MP40是二战期间产量较大
|
||||
[14m27s] 影响力较广的一款冲锋枪
|
||||
[14m30s] 其因结构相对简单
|
||||
[14m31s] 稳定性强
|
||||
[14m33s] 成为当时多个作战单位的装备
|
||||
[14m41s] 二战前
|
||||
[14m42s] 德军步兵班组的火力核心
|
||||
[14m44s] 是毛瑟98k栓动步枪
|
||||
[14m47s] 和MG34重机枪
|
||||
[14m49s] 冲锋枪仅作为辅助武器
|
||||
[14m52s] 第二次世界大战爆发后
|
||||
[14m54s] 纳粹德军强调快速推进
|
||||
[14m57s] 近距离火力压制的理念
|
||||
[14m59s] 这就需要一种
|
||||
[15m0s] 能伴随步兵冲锋
|
||||
[15m2s] 兼顾射程与精度的武器
|
||||
[15m4s] 而传统冲锋枪
|
||||
[15m6s] 如MP18
|
||||
[15m8s] 尺寸虽短
|
||||
[15m9s] 但枪管仅198毫米
|
||||
[15m11s] 有效射程仅100米
|
||||
[15m14s] 无法满足压制需求
|
||||
[15m16s] 而MP40
|
||||
[15m17s] 很好地解决了这一问题
|
||||
[15m29s] MP40冲锋枪的设计
|
||||
[15m32s] 围绕中近距离持续压制展开
|
||||
[15m35s] 250毫米的枪管
|
||||
[15m36s] 采用镀铬工艺
|
||||
[15m38s] 能让枪口初速
|
||||
[15m39s] 提升至每秒380米
|
||||
[15m41s] 有效射程达到200米
|
||||
[15m44s] 比MP18提升一倍
|
||||
[15m47s] 833毫米的枪身长度
|
||||
[15m49s] 让士兵在抵肩射击时
|
||||
[15m52s] 能更好地控制后坐力
|
||||
[15m54s] 配合32发弹匣
|
||||
[15m56s] 能形成持续的火力输出
|
||||
[15m58s] 更值得一提的是
|
||||
[16m0s] 它的生产工艺
|
||||
[16m1s] 特别适合战时量产
|
||||
[16m4s] 枪身采用冲压和焊接技术
|
||||
[16m7s] 零件数量比MP18减少40%
|
||||
[16m11s] 一个熟练工人
|
||||
[16m12s] 每天能组装10支
|
||||
[16m15s] 到1944年
|
||||
[16m16s] 累计生产了120万支
|
||||
[16m19s] 833毫米的长度
|
||||
[16m21s] 适配了二战时期
|
||||
[16m22s] 开阔战场的作战需求
|
||||
[16m24s] 也成为了二战中
|
||||
[16m26s] 纳粹德军步兵火力支柱的
|
||||
[16m28s] 标志性武器之一
|
||||
[16m33s] MP40是在MP38的基础上
|
||||
[16m36s] 改进升级而来的
|
||||
[16m38s] 可以说在二战期间
|
||||
[16m39s] 在德国军队的
|
||||
[16m41s] 武器装备当中
|
||||
[16m42s] 它是一款设计
|
||||
[16m43s] 比较优秀的冲锋枪
|
||||
[16m45s] 优先装备的是
|
||||
[16m47s] 德军的装甲部队
|
||||
[16m48s] 和它的空降部队
|
||||
[16m50s] 也就是伞兵
|
||||
[16m51s] 装甲部队和伞兵
|
||||
[16m52s] 在使用的过程中
|
||||
[16m54s] 就是要求在近距离
|
||||
[16m55s] 针对对方的作战人员
|
||||
[16m57s] 短时间内倾泻大量的弹药
|
||||
[17m0s] 所以我们看这个MP40
|
||||
[17m3s] 它的弹匣的长度是比较长
|
||||
[17m6s] 所以能够在近距离
|
||||
[17m7s] 比如说100到150米的
|
||||
[17m8s] 这样的一个距离上
|
||||
[17m10s] 针对对方进行这种
|
||||
[17m11s] 持续的这样的一个射击
|
||||
[17m13s] 那么采用这种比较长的
|
||||
[17m15s] 枪身和枪管
|
||||
[17m16s] 就是要保证射击的精度
|
||||
[17m17s] 所以
|
||||
[17m18s] 在近距离射击的过程当中
|
||||
[17m20s] MP40它的精准程度
|
||||
[17m22s] 也是比较高的
|
||||
[17m25s] 从340毫米的紧凑灵活
|
||||
[17m27s] 到833毫米的稳定压制
|
||||
[17m30s] 冲锋枪的长度选择
|
||||
[17m31s] 本质上是**对作战空间**
|
||||
[17m33s] 和战术节奏的精准回应
|
||||
[17m36s] 短有短的便捷
|
||||
[17m37s] 长有长的稳定
|
||||
[17m39s] 这正是枪械设计中
|
||||
[17m40s] 长短智慧的核心之一
|
||||
[17m43s] 接下来
|
||||
[17m44s] 我们看一看步枪家族
|
||||
[17m55s] 先来看我手中的这把
|
||||
[17m57s] AUG突击步枪
|
||||
[18m0s] 大家有没有发现
|
||||
[18m1s] 它的外形非常的独特
|
||||
[18m3s] 没有传统步枪的枪托
|
||||
[18m5s] 弹匣直接插在了扳机后方
|
||||
[18m8s] 根据奥地利
|
||||
[18m9s] 斯泰尔公司的官方数据
|
||||
[18m11s] 它的全长只有665毫米
|
||||
[18m14s] 比折叠后的MP40冲锋枪
|
||||
[18m16s] 长不到40毫米
|
||||
[18m18s] 大家可别被它的短身所迷惑了
|
||||
[18m21s] 它的枪管长度
|
||||
[18m23s] 足足有508毫米
|
||||
[18m25s] 和传统M16A4步枪的枪管
|
||||
[18m27s] 几乎是一样长的
|
||||
[18m29s] 设计师用无托结构
|
||||
[18m31s] 硬生生在不缩短枪管的前提下
|
||||
[18m34s] 把枪身
|
||||
[18m35s] 缩短了将近340毫米
|
||||
[18m37s] 真正实现了短身不短能
|
||||
[18m45s] AUG的出现
|
||||
[18m46s] 掀起了步枪设计的
|
||||
[18m48s] 一场结构革命
|
||||
[18m59s] 随着城市化进程加快
|
||||
[19m1s] 传统长枪管步枪
|
||||
[19m2s] 在城市作战
|
||||
[19m4s] 装甲车内部操作时的弊端
|
||||
[19m6s] 日益凸显
|
||||
[19m9s] 在楼宇作战中
|
||||
[19m11s] 过长的枪身
|
||||
[19m12s] 导致转向不便
|
||||
[19m14s] 甚至影响战术动作
|
||||
[19m16s] 各国都在寻找一种
|
||||
[19m17s] 能兼顾射击精度
|
||||
[19m19s] 与机动灵活的步枪
|
||||
[19m21s] 但传统有托结构的设计逻辑
|
||||
[19m23s] 是枪管长则枪身长
|
||||
[19m26s] 似乎无法突破这一局限
|
||||
[19m29s] 奥地利斯泰尔公司的设计师
|
||||
[19m32s] 大胆创新
|
||||
[19m33s] 提出了无托结构的理念
|
||||
[19m45s] AUG突击步枪
|
||||
[19m47s] 将枪托与机匣融为一体
|
||||
[19m49s] 让射手的肩部
|
||||
[19m50s] 直接抵在机匣尾部
|
||||
[19m53s] 这样一来
|
||||
[19m54s] 枪管的长度
|
||||
[19m55s] 不再受枪托位置的限制
|
||||
[19m57s] 508毫米的枪管
|
||||
[19m59s] 能保证
|
||||
[20m0s] 5.56×45毫米弹药的初速
|
||||
[20m3s] 达到每秒970米
|
||||
[20m5s] 有效射程600米
|
||||
[20m7s] 与传统步枪持平
|
||||
[20m8s] 而665毫米的全长
|
||||
[20m11s] 让士兵在装甲车内
|
||||
[20m12s] 能轻松操作
|
||||
[20m14s] 在楼宇中能快速转向
|
||||
[20m16s] 更创新的是
|
||||
[20m18s] AUG采用了模块化设计
|
||||
[20m20s] 枪管可以快速更换
|
||||
[20m22s] 能在几分钟内切换成步枪
|
||||
[20m25s] 卡宾枪
|
||||
[20m26s] 轻机枪
|
||||
[20m27s] 甚至狙击枪
|
||||
[20m28s] 适配不同作战场景
|
||||
[20m32s] 首先我们看它是
|
||||
[20m33s] 大量采用了
|
||||
[20m34s] 这种塑料和合成材料
|
||||
[20m36s] 所以全枪
|
||||
[20m37s] 可以有效地实现减重
|
||||
[20m39s] 士兵在携带和使用的过程当中
|
||||
[20m41s] 可以最大程度地节省体力
|
||||
[20m43s] 由于采用了这种
|
||||
[20m45s] 无托化的设计理念
|
||||
[20m46s] 它全枪的重量和长度
|
||||
[20m48s] 是可以进行进一步优化
|
||||
[20m51s] 但是
|
||||
[20m52s] 由于采用无托的设计理念
|
||||
[20m54s] 也可以保证它的枪管比较长
|
||||
[20m55s] 这样的话无论是
|
||||
[20m57s] 有效的射击距离
|
||||
[20m59s] 和它的这样的一个
|
||||
[21m0s] 火力的持续性
|
||||
[21m1s] 其实是达到了一种均衡的状态
|
||||
[21m6s] AUG用无托枪身的设计
|
||||
[21m8s] 真正做到
|
||||
[21m9s] 短小精悍
|
||||
[21m11s] 接下来我们看一看
|
||||
[21m12s] 长家伙
|
||||
[21m18s] 下面要讲到的这款步枪
|
||||
[21m20s] 就是大名鼎鼎的
|
||||
[21m24s] 根据德国
|
||||
[21m25s] 黑克勒-科赫公司的官方参数
|
||||
[21m27s] HK416在配备
|
||||
[21m29s] 20英寸枪管之后
|
||||
[21m31s] 全枪长可达1030毫米
|
||||
[21m34s] 比AUG足足长了365毫米
|
||||
[21m37s] 长长的枪身
|
||||
[21m39s] 给可伸缩枪托
|
||||
[21m41s] 全长度的皮卡汀尼导轨
|
||||
[21m43s] 和活塞导气系统
|
||||
[21m44s] 留出了适配的空间
|
||||
[21m47s] 大家看它的顶部导轨
|
||||
[21m49s] 能从头到尾加装瞄准镜
|
||||
[21m52s] 激光指示器
|
||||
[21m53s] 护木两侧还能
|
||||
[21m54s] 扩展战术握把
|
||||
[21m56s] 手电
|
||||
[21m57s] 完全是为现代特种作战多任务
|
||||
[21m59s] 多环境
|
||||
[22m0s] 量身打造的长枪身设计
|
||||
[22m9s] 如果你曾接触过枪战类游戏
|
||||
[22m11s] 那么你一定知道
|
||||
[22m12s] 这把突击步枪
|
||||
[22m16s] 在各种枪战游戏中
|
||||
[22m18s] 这把枪的性能排名
|
||||
[22m20s] 都是稳居前列
|
||||
[22m22s] 近几年爆火的吃鸡游戏玩家
|
||||
[22m24s] 更是将其称之为“吃鸡神器”
|
||||
[22m27s] 在游戏中
|
||||
[22m28s] 只要能装备上M416
|
||||
[22m30s] 便能无往不利
|
||||
[22m31s] 所向披靡
|
||||
[22m33s] 而现实中
|
||||
[22m35s] 这把枪的原型便是HK416
|
||||
[22m50s] HK416的诞生
|
||||
[22m52s] 源于现代特种作战
|
||||
[22m54s] 对可靠性
|
||||
[22m55s] 与多场景适配的极致追求
|
||||
[22m58s] 21世纪初
|
||||
[22m59s] 美军特种部队
|
||||
[23m1s] 在全球反恐作战中发现
|
||||
[23m3s] M4A1卡宾枪的
|
||||
[23m5s] 气吹式导气结构
|
||||
[23m6s] 在沙漠
|
||||
[23m7s] 湿热等恶劣环境下
|
||||
[23m9s] 容易积碳故障
|
||||
[23m11s] 且短枪管在中距离压制时
|
||||
[23m13s] 精度不足
|
||||
[23m16s] 于是
|
||||
[23m17s] 黑克勒-科赫公司
|
||||
[23m18s] 在M4A1基础上
|
||||
[23m20s] 重新设计改造出了HK416
|
||||
[23m32s] HK416自动步枪
|
||||
[23m34s] 长805毫米
|
||||
[23m36s] 既保证了抵肩射击的稳定性
|
||||
[23m39s] 又能通过伸缩枪托
|
||||
[23m40s] 适配不同身高士兵
|
||||
[23m43s] 5.56×45毫米北约弹
|
||||
[23m45s] 初速达到每秒900米
|
||||
[23m48s] 有效射程600米
|
||||
[23m49s] 比M4A1提升10%
|
||||
[23m52s] 其最新改型HK416 A5
|
||||
[23m55s] 提供5种枪管选择
|
||||
[23m58s] 分别是11英寸
|
||||
[23m59s] 12.5英寸
|
||||
[24m1s] 14.5英寸
|
||||
[24m2s] 16.5英寸和20英寸
|
||||
[24m5s] 这让HK416
|
||||
[24m6s] 既能在城市反恐中灵活操作
|
||||
[24m9s] 又能在沙漠 平原等开阔地形
|
||||
[24m12s] 提供远距离火力支援
|
||||
[24m18s] HK416自动步枪
|
||||
[24m20s] 最经典的实战案例
|
||||
[24m21s] 是在2011年“海神之矛”行动
|
||||
[24m24s] 海豹突击队队员
|
||||
[24m26s] 正是用HK416击毙本·拉登
|
||||
[24m29s] 当时
|
||||
[24m30s] 队员在狭小房间内
|
||||
[24m32s] 完成近距离突袭
|
||||
[24m34s] 后续撤离时
|
||||
[24m35s] 又在开阔地带
|
||||
[24m36s] 用其压制可能的追兵
|
||||
[24m39s] 证明其能同时适配
|
||||
[24m40s] 近距离突袭
|
||||
[24m41s] 和中距离压制双重需求
|
||||
[24m44s] 如今
|
||||
[24m46s] 被三十多个国家的特种部队列装
|
||||
[24m49s] 法国 挪威等国
|
||||
[24m51s] 更将其定为全军制式步枪
|
||||
[24m54s] 成为现代步枪的代表之一
|
||||
[24m59s] 和AUG相比
|
||||
[25m1s] HK416最大的优势
|
||||
[25m3s] 就是它的适应性比较好
|
||||
[25m4s] 可以衍生出很多的这种型号
|
||||
[25m8s] HK416它的
|
||||
[25m10s] 皮卡汀尼导轨的
|
||||
[25m12s] 这样的一个安装也比较方便
|
||||
[25m14s] 在枪管外面的护套上
|
||||
[25m17s] 它可以安装四条
|
||||
[25m19s] 皮卡汀尼导轨
|
||||
[25m20s] 也就是说
|
||||
[25m21s] 不仅可以加装战术手电
|
||||
[25m23s] 或者是这种激光的指示系统
|
||||
[25m26s] 还可以加装
|
||||
[25m27s] 外挂的榴弹发射器
|
||||
[25m30s] 所以HK416既可以作为
|
||||
[25m32s] 普通士兵所使用的突击步枪
|
||||
[25m34s] 也可以作为精准射手步枪
|
||||
[25m36s] 进行这种精准的火力支援
|
||||
[25m41s] 今天我们展示的每一款枪械
|
||||
[25m43s] 它们没有绝对的优劣
|
||||
[25m45s] 只有是否贴合使命的区别
|
||||
[25m47s] 这正是枪械设计中
|
||||
[25m49s] 最珍贵的长短智慧
|
||||
[25m52s] 长度从来不是孤立的数字
|
||||
[25m55s] 而是设计师平衡使命需求
|
||||
[25m57s] 核心功能
|
||||
[25m58s] 使用环境的结果
|
||||
[26m0s] 每一寸增减
|
||||
[26m1s] 都凝结着对战场的深刻理解
|
||||
[26m4s] 和对功能的极致追求
|
||||
[26m7s] 好了观众朋友们
|
||||
[26m8s] 感谢您持续关注
|
||||
[26m9s] 国防军事频道 《军事科技》
|
||||
[26m11s] 我们下周同一时间
|
||||
[26m13s] 再见
|
||||
@@ -1567,7 +1567,15 @@ def run_compose(
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# ---- 找 A 稿 docx ----
|
||||
a_candidates = [f for f in out_dir.glob("*.docx") if not f.name.startswith("~$")]
|
||||
# 只认原始 A 稿:排除本流程产出的"融合"稿与人工"批改"稿,
|
||||
# 否则重跑 compose 时 glob 可能把自己的输出当成输入 A 稿。
|
||||
a_candidates = [
|
||||
f
|
||||
for f in out_dir.glob("*.docx")
|
||||
if not f.name.startswith("~$")
|
||||
and "融合" not in f.name
|
||||
and "_批改" not in f.name
|
||||
]
|
||||
if not a_candidates:
|
||||
raise FileNotFoundError(
|
||||
f"在 {out_dir} 中找不到 docx 文件\n"
|
||||
@@ -1667,7 +1675,8 @@ def run_compose(
|
||||
punct_results[sid] = punct_ok
|
||||
|
||||
# ---- 出 docx ----
|
||||
docx_path = out_dir / "融合A稿.docx"
|
||||
# 出稿命名 = 原始 A 稿名 + "_融合A稿"(不覆盖原始定稿,且带本期日期/节目/编导信息)
|
||||
docx_path = out_dir / f"{a_path.stem}_融合A稿.docx"
|
||||
render_docx(title, segments, seg_texts, str(docx_path))
|
||||
print(f"[fusion_align] 融合A稿: {docx_path}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user