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.