ffplay - como reproduzir arquivos separados de vídeo e áudio

8

Assim, eu posso transcodificar arquivos de áudio e vídeo separados em um arquivo de filme, assim:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

E veja e ouça o filme resultante da seguinte forma:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

No entanto, para evitar transcodificar o filme e o som juntos em um arquivo antes de poder vê-lo, gostaria de simplesmente reproduzir os dois arquivos separados. Tanto quanto sei, o ffplay não permite combinar dois arquivos diferentes (certo?).

Lendo esses fóruns, parece que você pode enviar um ffmpeg saída para ffplay . O seguinte é o mais perto que eu cheguei. Não é tão perto. :( A informação em vídeo está claramente sendo carregada, mas é verde "neve" no tamanho certo do quadro, com dicas das imagens que dançam dentro da horrível neve verde. Desta forma, eu sei que algo dos dados da imagem está sendo transferido. , apenas não processando corretamente.

E não há reproduções de áudio. O som não está carregando (eu não acho). Agora ... estou preso. O seguinte sugere o que estou tentando fazer, mas não está funcionando:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -
    
por Bill Rudolph Yaber Russell 02.03.2013 / 11:56

3 respostas

2
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Para os meus propósitos, isso permite uma rápida revisão do conteúdo de um DCP < / a> (Digital Cinema Package) que você pode construir com ferramentas de código aberto . O DCP usa o espaço de cor xyz, então você precisa ter um filtro de vídeo xyz instalado , caso contrário você não pode usá-lo na linha acima. (Tudo bem, vai parecer muito laranja, você não vai conseguir ver as cores verdadeiras.)

Eu adicionei o mpeg2video codec b / c, embora reduza a qualidade, seja de baixa taxa e armazene um pouco, para que ele tenha um desempenho mais suave na minha máquina. (Além disso, por algum motivo, sem transcodificação primeiro eu recebo apenas um quadro congelado da seqüência jpeg2000 mjpeg alimentando a uma potência de 125mb / s do MXF, a menos que eu inicie "- ss 0", isto é, no início do arquivo.) Com uma máquina MUITO RÁPIDA, especificando nenhum codec (remover "-c: v mpeg2video"), tamanho completo ("-lores 0"), e iniciando em 0 (-ss 0), você pode, teoricamente, revisar o cinema 2K qualidade DCP exatamente como é. Bem, exceto por quaisquer instruções especiais incluídas no XML - legendas ou outra programação. Mas geralmente. (BTW "-ac: 2" downmixes 5.1 a 2.0 - embora você possa ter hardware que suporte a audição 5.1, caso em que use "-c: uma cópia".)

Obrigado a Matthias em Belle-Nuit e slhck acima para FOR PATIENTLY me andando por isso. Obrigado!!!! Isso é bastante útil. E, de fato, me salvou de uma exibição de filme potencialmente embaraçosa no teatro Aero na noite de domingo. Minha numeração de sequência de imagens estava fora de seqüência - encontrei com isso e consertei!

Uau, tudo isso por apenas uma linha de comando, quem sabia;)

Cheereo - b worldpoop.com

    
por 20.03.2017 / 11:17
3

Isso não transcodifica os streams:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1 = segundo arquivo, fluxo 1 (geralmente áudio). -c copy = -c:v copy -c:a copy . Por padrão, o arquivo muxed é tão longo quanto o arquivo mais longo, mas -shortest o tornaria tão longo quanto o arquivo mais curto.

    
por 02.03.2013 / 14:28
3

Video information is clearly being carried over, but it is green "snow" in the right frame size, with hints of the actual imagery dancing inside the horrible green snow.

Este deve ser o formato de pixel. Você está aplicando o filtro xyz2rgb que converte o espaço de cores do DCP em RGB e, em seguida, você está direcionando o vídeo bruto para ffplay . Aqui, você está aplicando o xyz2rgb filter novamente , o que provavelmente causa as distorções, já que o FFmpeg não tem idéia de como o vídeo bruto é codificado. Ele fará o que você quiser com o vídeo, mesmo convertendo o espaço de cores duas vezes.

Tive bons resultados ao colocar o formato Matroska em ffplay em vez de rawvideo , que também oferece a capacidade de decodificar áudio (veja abaixo). O formato Matroska pode conter qualquer tipo de codec.

Note que a ordem das opções é importante no FFmpeg, e você provavelmente deve usar uma versão mais recente, pois é mais rigoroso sobre onde você coloca as opções:

  • Opções globais como -y vêm em primeiro lugar.
  • Em seguida, especifique opções para ler arquivos de entrada - o -r 24 força a taxa de quadros para o arquivo picture.mxf .
  • Em seguida, especifique todos os arquivos de entrada.
  • Em seguida, vêm as opções do codec, como filtros de vídeo, a taxa de bits do vídeo etc.

Na sua situação, faz sentido apenas copiar o fluxo de áudio, pois não precisamos transcodificá-lo. O vídeo precisa ser transcodificado para poder aplicar o filtro.

Algo como isso deve acontecer. Observe como definimos explicitamente o formato de saída como matroska e deixamos que ffplay descubra o resto:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

Eu usei a sintaxe (IMO menos ambígua) para opções como -filter:v em vez de -vf , -b:v em vez de -vb e -c:a em vez de -acodec .

Se esse formato não funcionar para você, tente o AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Este funcionou para mim sem problemas , e nem sequer exigia que eu usasse o filtro que você precisava. O áudio também estava funcionando.

    
por 02.03.2013 / 15:38