AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1836518
Accepted
Samson Choo
Samson Choo
Asked: 2024-03-25 15:24:26 +0800 CST2024-03-25 15:24:26 +0800 CST 2024-03-25 15:24:26 +0800 CST

如何恢复损坏的(mp3?)文件

  • 772

我在https://drive.google.com/file/d/10Fqr6Ipu2J8yKU_m3-EMzsVj7XeSYEdV/view?usp=sharing获得了一个文件。从https://hexed.it/打开它显示它很可能是一个 mp3 文件(基于文件末尾的 ID3 信息)。任务是恢复文件头,以便我们能够打开它(大概在音乐播放器中)。任何线索将不胜感激。

我注意到文件头是空字节,因此我尝试从工作 mp3 文件中复制起始字节。还尝试将带有清晰文本的最后几个字节移动到文件的开头。这些都不起作用。

mp3
  • 1 1 个回答
  • 113 Views

1 个回答

  • Voted
  1. Best Answer
    u1686_grawity
    2024-03-25T18:16:36+08:002024-03-25T18:16:36+08:00

    MP3 文件没有强制标头;它们只是一系列原始的 MPEG 音频帧,每个帧都有自己的 4 字节迷你标头(a、b)。其他一切都是额外的。(甚至 ID3 标签和 LAME 标头(两者都是后来添加的)也被伪装成无效帧,大多数玩家现在都知道要忽略它们。)

    此外,帧格式是自同步的 - 您可以在任何点剪切它,解码器将忽略开头的垃圾半帧,寻找同步位0xFFF以找到下一帧的开始。这意味着您可以将 MP3 文件的任意随机片段扔到解码器中,它就会播放;如果不是,那么它很可能根本就不是 MP3 文件。

    我的结论是你的文件不是MP3;它是使用 ID3 标记格式的其他东西(罕见但并不罕见)。更重要的是,文件的结尾位看起来不太像ID3标记 – 许多 4 字母块标识符并不像 ID3v2 的典型情况那样以“T”开头;在我看来,它们更像是您在AIFF或WAV/RIFF等分块格式中发现的内容(这两种格式确实都嵌入了 ID3 标签!),但在 MP3 中则不然。

    (嗯,是的,ID3 标签本身也是一种分块格式 - 但 MP3 总体上不是,这才是重点。)

    除了 IFF 及其 AIFF/RIFF 衍生品之外,还有相当多其他标记/分块格式,例如 PNG 以及 ISO BMFF(用于 MP4/HEIF/AVIF 文件)在概念上类似,但在你的文件 – LIST, INFO– 是独特的 RIFF,用于各种与 Windows 相关的格式:.wav 用于音频,.avi 用于视频,.ani 用于动画鼠标光标等。data最开始附近很可能也是一个块标签。

    在这些 RIFF 子格式中,IART(艺术家)、ICRD(日期)、IGNR(流派)、id3␣(嵌入 ID3 标签)块是 WAV 文件的典型块。缺少的是顶层RIFF块(可能是块的一部分fmt␣),这会阻止玩家识别该文件。

    fmt␣与另一个 .wav 文件相比,偏移量 0x10 确实看起来像块的完整内容,因此丢失的前八个字节应该如下所示:

    00000000  52 49 46 46 __ __ __ __  57 41 56 45 66 6d 74 20  |RIFF____WAVEfmt |
    

    …空白部分是顶层块的长度(或 0xFFFFFFFF 表示“整个文件”)。整体结构应该是这样的:

    RIFF[WAVE]
     ├─fmt␣   (PCM S16LE)
     ├─data   (~Never gonna give you up~)
     ├─LIST[INFO]
     │  ├─IART = "GCTF"
     │  ├─ICRD
     │  └─IGNR = "Drum & Bass"
     └─id3␣   (embedded ID3, not RIFF-format)
        ├─TPE1 = "GCTF"
        ├─TDRC
        └─TCON = "Drum & Bass"
    

    如果您尝试修复标头,请使用fq检查它(这也适用于实际的 MP3 文件和其他常见格式):

    $ fq . test.wav
    $ fq .chunks[] test.wav
    $ fq .chunks[2].chunks[] test.wav
    

    在此输入图像描述

    或者,由于您确实拥有包含全部 PCM 数据(长度为 4 字节)的整个data块,因此仅提取该部分并通过强力尝试各种原始 PCM 格式可能会更容易(没有那种方法)多种组合)。

    • 2

相关问题

  • 如何使用 youtube-dl 下载 youtube 播放列表并使其成为 mp3 播放列表?

  • 如何在 WIndows 媒体播放器中编辑 MP3 标签以获得正确的曲目列表

  • “ffmpeg -ss”支持的准确搜索格式?mp3 似乎不起作用,只有 .wav

  • 如何使年/日期标签在媒体播放器中完整显示?

  • 如何使文件日期修改为静态(不可更改)?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve