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 / 1825872
Accepted
Binarus
Binarus
Asked: 2024-01-15 22:56:21 +0800 CST2024-01-15 22:56:21 +0800 CST 2024-01-15 22:56:21 +0800 CST

ffmpeg não consegue converter áudio bluray_pcm em áudio PCM normal em arquivos M2TS?

  • 772

Eu tenho um cenário de teste onde tenho um arquivo M2TS (chamado 1.m2ts) que contém uma trilha de vídeo e várias trilhas de áudio. Uma das faixas de áudio é incomum por estar em bluray_pcmformato.

Na primeira etapa, gostaria de criar um novo arquivo M2TS (chamado 2.m2ts) 1.m2tsque contenha todas as trilhas de áudio, exceto a bluray_pcmtrilha removida.

Na segunda etapa, gostaria de converter 2.m2tspara o formato MKV (arquivo 3.mkv).

Como o MKV parece incapaz de lidar com uma bluray_pcmfaixa, também converto a bluray_pcmfaixa em áudio PCM normal durante a primeira etapa.

A primeira etapa funciona em princípio, mas o ffmpeg bagunça as tags do codec. Depois de perceber isso, pesquisei o assunto e descobri que deveria adicionar -map_metadatana linha de comando, mas infelizmente não adiantou. A seguir são mostradas as linhas de comando e as alterações nas tags do codec:

Primeiro, deixei o ffprobe gerar os dados da trilha do arquivo original 1.m2ts:

ffprobe -print_format json -loglevel fatal -show_streams -count_frames -i 1.m2ts > 1.json

1.jsonentão tinha o seguinte conteúdo (deixando de lado linhas irrelevantes):

{
    "streams": [
        {
            "index": 0,
            "codec_name": "mpeg2video",
            "codec_long_name": "MPEG-2 video",
            "profile": "Main",
            "codec_type": "video",
            "codec_tag_string": "HDMV",
            "codec_tag": "0x564d4448",
        },
        {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "ATSC A/52A (AC-3)",
            "codec_type": "audio",
            "codec_tag_string": "AC-3",
            "codec_tag": "0x332d4341",
            "sample_fmt": "fltp",
        },
        {
            "index": 2,
            "codec_name": "ac3",
            "codec_long_name": "ATSC A/52A (AC-3)",
            "codec_type": "audio",
            "codec_tag_string": "AC-3",
            "codec_tag": "0x332d4341",
            "sample_fmt": "fltp",
        },
        {
            "index": 3,
            "codec_name": "pcm_bluray",
            "codec_long_name": "PCM signed 16|20|24-bit big-endian for Blu-ray media",
            "codec_type": "audio",
            "codec_tag_string": "HDMV",
            "codec_tag": "0x564d4448",
            "sample_fmt": "s16",
        },
    ]
}

Até agora tudo bem. Como podemos ver, a bluray_pcmfaixa é a faixa 3.

Então criei 2.m2tsconforme descrito acima:

ffmpeg -analyzeduration 100G -probesize 100G -fix_sub_duration -copyts -i 1.m2ts -map 0:0 -map 0:3 -map_metadata 0 -muxpreload 0 -muxdelay 0 -vcodec copy -acodec pcm_s16le 2.m2ts

Observe que a linha de comando contém -map_metadata 0.

O comando foi executado sem erros, então chegou a hora de analisar 2.m2tspelo método mostrado acima:

ffprobe -print_format json -loglevel fatal -show_streams -count_frames -i 2.m2ts > 2.json

2.jsonentão contido (novamente, deixando de lado partes irrelevantes):

{
    "streams": [
        {
            "index": 0,
            "codec_name": "mpeg2video",
            "codec_long_name": "MPEG-2 video",
            "profile": "Main",
            "codec_type": "video",
            "codec_tag_string": "[2][0][0][0]",
            "codec_tag": "0x0002",
        },
        {
            "index": 1,
            "codec_name": "bin_data",
            "codec_long_name": "binary data",
            "codec_type": "data",
            "codec_tag_string": "[6][0][0][0]",
            "codec_tag": "0x0006",
        }
    ]
}

Portanto o codec de áudio agora é "bin_data". E além disso, o codec_tag_stringe o codec_tagda trilha de vídeo também estão confusos.

Consequentemente, ao tentar converter 2.m2tspara 3.mkv, acontece o seguinte (novamente, linhas irrelevantes deixadas de lado):

ffmpeg.exe" -i 2.m2ts -map 0:0 -map 0:1 -codec copy 3.mkv

Input #0, mpegts, from '2.m2ts':
  Duration: 01:46:24.34, start: 11.650667, bitrate: 22115 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
  Stream #0:0[0x1011]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 30000000/0/0 buffer size: 9781248 vbv_delay: N/A
  Stream #0:1[0x1100]: Data: bin_data ([6][0][0][0] / 0x0006)
File '3.mkv' already exists. Overwrite? [y/N] y
[matroska @ 000001f6cfd4d340] Tag [6][0][0][0] incompatible with output codec id '98314' ([0][0][0][0])
[out#0/matroska @ 000001f6cfd25dc0] Could not write header (incorrect codec parameters ?): Invalid data found when processing input
Error opening output file 3.mkv.
Error opening output files: Invalid data found when processing input

Agora gostaria de saber onde está meu erro. O procedimento que utilizo na etapa 1 (remover todas as trilhas de áudio, exceto bluray_pcm tracke converter essa trilha em PCM normal) é descrito em vários tutoriais e perguntas e respostas, respectivamente.

Por que isso bagunça os metadados da trilha de vídeo também está além do meu horizonte (embora isso não tenha efeitos colaterais negativos, aparentemente).

O que exatamente preciso fazer para converter uma bluray_pcmfaixa em um arquivo M2TS em PCM normal, para que o arquivo M2TS resultante possa ser processado posteriormente e como evito que o ffmpeg altere as tags do codec?

ffmpeg
  • 1 1 respostas
  • 34 Views

1 respostas

  • Voted
  1. Best Answer
    Gyan
    2024-01-16T17:23:28+08:002024-01-16T17:23:28+08:00

    Como o @Rotem apontou no comentário, o LPCM não é suportado diretamente no MPEG-TS. No entanto, você pode empacotá-lo como um fluxo SMPTE ST 302 usando -acodec s302m -strict -2.

    • 2

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
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • 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
    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