ffmpeg cortando a maioria do áudio ao adicionar tags de metadados

0

Estou tentando adicionar tags id3v2.3 de metadados a alguns arquivos que converti para mp3 usando o VLC media player. Aqui está o comando que estou usando:

ffmpeg -i "100000A9.mp3" -id3v2_version 3 -write_id3v1 1 -metadata title="titlename" -metadata artist="artistname" -metadata album="albumname" -b:a 320k "100000A9.mp3"

Infelizmente, quando faço isso, recebo a seguinte saída:

    ffmpeg version N-79630-g9ac154d Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib
modplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enabl
e-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable
-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --ena
ble-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx
264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable
-lzma --enable-decklink --enable-zlib
  libavutil      55. 22.101 / 55. 22.101
  libavcodec     57. 38.100 / 57. 38.100
  libavformat    57. 34.103 / 57. 34.103
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 44.100 /  6. 44.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mp3 @ 0000000001e42b80] Estimating duration from bitrate, this may be inaccurat
e
Input #0, mp3, from '100000A9.mp3':
  Duration: 00:04:32.56, start: 0.000000, bitrate: 320 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
File '100000A9.mp3' already exists. Overwrite ? [y/N] y
[mp3 @ 00000000006271e0] Using AVStream.codec to pass codec parameters to muxers
 is deprecated, use AVStream.codecpar instead.
Output #0, mp3, to '100000A9.mp3':
  Metadata:
    TIT2            : titlename
    TPE1            : artistname
    TALB            : albumname
    TSSE            : Lavf57.34.103
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
    Metadata:
      encoder         : Lavc57.38.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
size=      67kB time=00:00:01.64 bitrate= 331.1kbits/s speed=10.2x
video:0kB audio:65kB subtitle:0kB other streams:0kB global headers:0kB muxing ov
erhead: 1.915571%

Como você pode ver, o arquivo é enviado para 67kb e tem apenas 1,64 segundos de duração. As tags são adicionadas corretamente, mas o arquivo inteiro está arruinado.

O FFmpeg vê o tamanho correto no início (o 4: 32.56), mas por algum motivo ele se recusa a produzir corretamente. Isso não é a mesma coisa que outras pessoas estão tendo quando alguns segundos são perdidos. O arquivo inteiro desapareceu. Eu verifiquei e joguei o arquivo também, tudo o que está lá é o 1,64 segundos iniciais. Alguém entende por quê?

    
por Ryuluce 28.04.2016 / 19:50

1 resposta

1

O FFmpeg não faz nenhuma edição ou processamento de arquivos no local!

Ao especificar o arquivo de saída igual ao arquivo de entrada, o ffmpeg limpa o arquivo e somente os pacotes inicialmente lidos na memória antes que o token de saída seja acionado é codificado e gravado.

Você deve sempre especificar um arquivo de saída diferente da entrada.

Dito isto, é assim que você adicionaria ou mudaria as tags

ffmpeg -i "current.mp3" -id3v2_version 3 -write_id3v1 1 \
  -metadata title="titlename" -metadata artist="artistname" -metadata album="albumname" \
  -c:a copy "new.mp3"
    
por 28.04.2016 / 22:30