Existe um sinalizador para fazer o ffmpeg ler a entrada sequencialmente do disco em vez de usar acesso aleatório


1

Existe uma opção no ffmpeg para fazê-lo ler apenas seqüencialmente do início ao final do arquivo, sem tentar verificar se há eventualmente metadados no final do arquivo?

O pano de fundo é que eu pareço enfrentar uma situação em que a presença nua de um rodapé em um arquivo .mxf (mais a repetição de índice) causa erros massivos de processamento.

Na verdade, não é sobre ffmpeg.exe, mas libavcodec que é utilizado por algum software 3rdparty, mas este software 3rdparty permite-me especificar opções ffmpeg para a abertura do arquivo mxf.

Apagar alguns bytes, como 10kb do final do arquivo de entrada de 40Gb, leva a processar o arquivo corretamente, por isso estou pedindo uma maneira de forçar a leitura sequencial.

Eu tentei usar -re opção, mas ainda analisa a informação "footer".

Respostas:


2

Você pode tentar colocar o arquivo: cat file.mxf | ffmpeg -f mxf -i - out.mp4

Mas, em geral, o ffmpeg não possui uma rotina genérica para ler o arquivo. O ffmpeg primeiro identifica o formato da entrada com base em uma análise e, em seguida, depende de um módulo específico do formato (o demuxer) para analisá-lo. Se alguma rotina nesse demuxer procura os dados que estão no final, mas vai para lá.

Um segundo método é usar o protocolo de subarquivo. Isso permite que você apresente um arquivo restrito ao ffmpeg, ou seja, você pode especificar onde o 'início' e 'fim' do arquivo deve ser, por exemplo,

ffmpeg -i "subfile,,start,183241728,end,366490624,,:file.mxf"

Isto diz ao ffmpeg para extrair o segmento começando no deslocamento de byte do arquivo 183241728 e terminando em offset 366490624 como a entrada.


parece que há uma bandeira "ignidx" mencionada em ffmpeg.org/ffmpeg-all.html ... eu não era capaz de tentar agora, mas parece promissor. De alguma forma, parece que isso não é realmente um sinalizador para libavformat, mas as classes de libavcodec precisam verificar se o sinalizador está definido ... muito confuso ...
— Harry

Desculpe, você escreve no seu anser, não são classes libavcodec que precisam suportar esse flag mas os demuxers no libavformat ....
— Harry
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.