Você não pode editar um arquivo no local com ffmpeg
- ele sempre precisa criar um novo arquivo de saída. Eu acho que é o padrão para quase todos os programas, e em muitos casos o arquivo de saída precisa ser procurado e editável pelo programa durante a escrita. *
Se a questão real é a perda de metadados, tente:
ffmpeg -i input.mp4 -i subtitles.srt \
-c copy -c:s mov_text \
-map 0 -map 1 -map_metadata 0 output.mp4
Você precisa ter ffmpeg
converter SRT (SubRip) para legendas compatíveis com MP4 com -c:s mov_text
caso contrário, ffmpeg
se recusa a copiar o fluxo. **
A opção -map_metadata
deve copiar todos os metadados globais do arquivo MP4 de entrada para a saída, ou seja, qualquer coisa definida no nível do contêiner. Os metadados do nível de fluxo de dados devem ser copiados automaticamente sem mais opções.
* É claro que programas como o sponge
do moreutils podem "absorver" a entrada e sobrescrever um arquivo no local, mas isso só funciona com muxers que suportam saída não-pesquisável e, portanto, não com MP4.
** Há problemas com legendas codificadas mov_text
eo player do QuickTime, consulte Bilhete FFmpeg # 1845 e também # 2488 .