AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1759053
Accepted
Benjamin Lindley
Benjamin Lindley
Asked: 2022-12-23 04:18:45 +0800 CST2022-12-23 04:18:45 +0800 CST 2022-12-23 04:18:45 +0800 CST

Por que a remoção de metadados diminui a duração do meu arquivo MP3 em 0,03 segundos?

  • 772

Eu tenho um arquivo, input.mp3, que rodando o ffprobe dá o seguinte:

[mp3 @ 0x559431400a00] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from '../backup/1.mp3':
  Metadata:
    album           : DW01-The Colour Of Magic
    artist          : Terry Pratchett
    album_artist    : Terry Pratchett
    comment         : Read By Nigel Planer
    composer        : Nigel Planer
    genre           : Discworld
    publisher       : Polygram
    title           : Colour Of Magic 1 of 6
    track           : 1
    date            : 1983
    id3v2_priv.WM/Provider: A\x00M\x00G\x00\x00\x00
    id3v2_priv.WM/WMCollectionGroupID: \xe4\xbba\xf0\xf2\xcd.D\xab\x92b\xeb{\x8b\x9a\xce
    id3v2_priv.WM/WMCollectionID: \xe4\xbba\xf0\xf2\xcd.D\xab\x92b\xeb{\x8b\x9a\xce
    id3v2_priv.WM/UniqueFileIdentifier: A\x00M\x00G\x00a\x00_\x00i\x00d\x00=\x00R\x00 \x00 \x00 \x002\x007\x007\x008\x004\x003\x00;\x00A\x00M\x00G\x00p\x00_\x00i\x00d\x00=\x00P\x00 \x00 \x00 \x00 \x00 \x00 \x003\x003\x007\x00;\x00A\x00M\x00G\x00t\x00_\x00i\x00d\x00=\x00T\x00 \x00 \x001\x005\x00
    id3v2_priv.WM/WMContentID: h\x86H@^\xe6qF\x95T\x04m\x01P\x90\x7f
    id3v2_priv.WM/MediaClassSecondaryID: \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
    id3v2_priv.WM/MediaClassPrimaryID: \xbc}`\xd1#\xe3\xe2K\x86\xa1H\xa4*(D\x1e
    id3v2_priv.ZuneCollectionID: \x1d\xcb\xdf\xf3X89D\x81\xd1\xd0s#P\x00\xf8
  Duration: 01:08:19.30, start: 0.000000, bitrate: 32 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 32 kb/s
    Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 274x417, 90k tbr, 90k tbn, 90k tbc (attached pic)
    Metadata:
      comment         : Cover (front)

Há várias coisas que quero fazer com este arquivo, como concatená-lo com outros arquivos e, em seguida, dividi-lo em pequenos segmentos. Mas, por enquanto, considerarei apenas o caso simples de remover os metadados, pois isso por si só produz problemas semelhantes aos que estou enfrentando com essas outras operações. Quando executo o seguinte comando no arquivo acima:

ffmpeg -i input.mp3 -map 0:a -c:a copy -map_metadata -1 output.mp3

Então eu corro ffprobe em output.mp3

Input #0, mp3, from 'output.mp3':
  Metadata:
    encoder         : Lavf58.29.100
  Duration: 01:08:19.27, start: 0.011995, bitrate: 32 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 32 kb/s
    Metadata:
      encoder         : Lavf

Por que a duração diminui em 0,03 segundos? E por que a hora de início não é mais 0? Além disso, por que, quando abro este arquivo em um vlc, parece ter problemas para descobrir a duração? Com o arquivo original, sabia a duração instantaneamente. Mas com o novo arquivo, parece estar tentando estimá-lo, aproximando-se lentamente com o tempo enquanto o reproduzo.

Informações do codec em vlc (e são idênticas para ambos os arquivos)

Stream 0
    Codec: MPEG Audio layer 1/2 (mpga)
    Type: Audio
    Channels: Stereo
    Sample rate: 44100 Hz
    Bits per sample: 32
    Bitrate: 32 kb/s
ffmpeg
  • 2 2 respostas
  • 3138 Views

2 respostas

  • Voted
  1. Best Answer
    user1686
    2022-12-23T04:43:10+08:002022-12-23T04:43:10+08:00

    Os arquivos MP3 não têm o mesmo tipo de estrutura interna que, por exemplo, um arquivo MP4 ou MKV teria - um MP3 "simples" é apenas uma série bruta de quadros de áudio e não tem sua duração armazenada em nenhum lugar. Para arquivos MP3 de taxa de bits constante, a duração pode ser calculada a partir do tamanho do arquivo, enquanto para VBR ela só pode ser determinada avaliando todo o arquivo quadro a quadro.

    Isto é, a menos que o codificador armazene a duração e as informações VBR em uma " tag LAME INFO " (também conhecida como "tag Xing VBR"). Praticamente todos os codificadores e players suportam essa tag agora, e a maioria dos arquivos MP3 a possui.

    A partir da saída do ffprobe, parece que seu arquivo original não possui essa tag, enquanto o novo arquivo possui ("encoder: Lavf" faz parte dele, adicionado por FFmpeg). Portanto, eu esperaria o resultado oposto - a duração deve ser conhecida para o novo arquivo, mas não para o original - isto é, a menos que o FFmpeg tenha adicionado informações imprecisas.


    Na verdade, um arquivo MP3 simples nem mesmo reserva espaço para metadados – as tags Xing e ID3 são, na verdade, disfarçadas como quadros de áudio especiais que a maioria dos decodificadores sabe ignorar – o que também significa que a duração estimada de um arquivo MP3 pode depender de como quantos metadados ele contém ou costumava conter. Uma estimativa simples como "tamanho÷bitrate" estará errada se o arquivo tiver um buraco remanescente da remoção da tag ID3v2.

    Você pode usar Mp3Diags para dar uma olhada na estrutura do arquivo. (Ele também pode ser usado para corrigir tags Xing imprecisas que fazem os jogadores pensarem que a pista é mais longa ou mais curta do que realmente é.)

    • 29
  2. gnasher729
    2022-12-24T15:39:59+08:002022-12-24T15:39:59+08:00

    Um arquivo mp3 contém três coisas: blocos de áudio, metadados e lixo. Um reprodutor de áudio provavelmente tem código para ler e exibir os metadados e deve ter código para reproduzir os blocos de áudio. O lixo é ignorado.

    Agora, a duração exibida dos dados de áudio foi alterada. Existem duas razões possíveis:

    1. O editor de metadados conseguiu destruir o cabeçalho de um bloco de áudio (e os blocos de áudio geralmente têm cerca de 30ms). Com o cabeçalho destruído, o bloco de áudio agora é lixo, então isso realmente reduziu a duração do áudio.

    2. O reprodutor de áudio não verifica todos os blocos de áudio e soma sua duração, mas adivinha o número de blocos de áudio com base no tamanho do arquivo. E talvez não leve em consideração os metadados, portanto, ter mais metadados faz com que superestime a duração do áudio. Como você excluiu os metadados, a duração estimada do áudio foi reduzida. O comprimento real permanece inalterado e provavelmente menor do que o exibido.

    • 3

relate perguntas

  • -map_metadata captura vários metadados de fluxo de áudio

  • Codec e configuração para saída ffmpeg de taxa de bits mais baixa

  • Como salvar o fluxo de vídeo TS com ffmpeg 2.0.2?

  • Extraia I-frames para imagens rapidamente

  • Os vídeos compactados podem ser decodificados de volta ao formato original não compactado?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve