O uso de pipes no ffmpeg tem um comportamento diferente do que usar arquivos

2

Estou usando pipes para fornecer entrada e enviar saída do FFmpeg

O comando que eu uso é essencialmente

ffmpeg -i pipe: 0 -f canal flv: 1

Estou usando um programa Java que basicamente fornece um fluxo de entrada como entrada padrão (canal: 0), o FFmpeg converte o vídeo no formato necessário e envia para a saída padrão (canal: 1) de onde eu faço o streaming para o meu localização remota.

Meu programa java gira em torno desse trecho de código, fornecendo entrada e enviando saída como um fluxo de saída.

Essencialmente meu programa faz o que é suposto, no entanto, vejo que o arquivo de vídeo de saída final não é da duração completa. Tem a duração de 10 segundos e o meu vídeo de amostra é de 21 minutos !

Quando eu substituo o pipe por um arquivo de entrada e um arquivo de saída, a saída é gerada corretamente sem nenhum problema, quando eu uso pipes, o tamanho do arquivo ainda é maior em comparação ao original. Apenas no caso, se isso ajuda a diagnosticar.

Eu preciso converter uma ampla gama de codecs, no entanto, atualmente estou testando com um vídeo h264 mp4 para o formato flv. Na verdade, mesmo se eu fornecer -vcodec copy -acodec copy, ele ainda não exibe o vídeo inteiro

Eu vi muitos posts com respostas que são basicamente porque canos não são procurados e, às vezes, informações de vídeo são mantidas no final do arquivo. No entanto, mesmo se eu tentar fazer conversões em um formato de arquivo de entrada como flv, eu ainda recebo o mesmo problema. Mesmo quando a saída também for especificada como FLV e fornecer -vcodec copy -acodec copy

Preciso fornecer mais informações ao FFmpeg? Alguém fez com sucesso a conversão de vídeo baseado em tubo? mesmo para arquivos onde a informação da mídia está no começo do arquivo?

Versão do FFmpeg SVN-r23418, Copyright (c) 2000-2010, os desenvolvedores do FFmpeg
construído em Jun 2 2010 04:12:01 com gcc 4.4.2
configuração: --target-os = mingw32 --enable-runtime-cpudetect --enable-avisynth --enable-gpl --enable-versão3 --enable-bzlib --enable-libgsm --enable-libfaad - -enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid --enable-libschroedinger --enable-libx264 --extra-libs = '-lx264 -lpthread' --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-librtmp --extra-libs = '- lrtmp -lssl -lcrypto -lws2_32 -lgdi32 -lwinmm -lcrypt32 -lz' --arch = x86 --cross-prefix = i686-mingw32- --cc = 'ccache i686-mingw32-gcc' - ativar-memalign-hack
libavutil 50.16. 0 / 50,16. 0
libavcodec 52.72. 1 / 52.72. 1
libavformat 52.67. 0 / 52,67. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.20. 0 / 1,20. 0
libswscale 0.11. 0 / 0,11. 0
Entrada # 0, mov, mp4, m4a, 3gp, 3g2, mj2, de 'pipe: 0': Metadados:
major_brand: isom
minor_version: 1
compatible_brands: isom
título: Artista de arte:
data: Álbum de fotos: comentário de comentário: Comentários:
gênero:
Duração: 00: 21: 46,63, começo: 0,000000, taxa de bits: N / A
Stream # 0.0 (und): Vídeo: h264, yuv420p, 512x288 [PAR 1: 1 DAR 16: 9], 403 kb / s, 25 fps, 25 tbr, 25 tbn, 50 a
Stream # 0.1 (und): Áudio: aac, 44100 Hz, mono, s16, 47 kb / s
Output # 0, flv, para 'pipe: 1': Metadados:
codificador: Lavf52.67.0
Stream # 0.0 (und): Vídeo: flv, yuv420p, 512x288 [PAR 1: 1 DAR 16: 9], q = 2-31, 200 kb / s, 1k tbn, 25 a confirmar
Stream # 0.1 (und): Áudio: libmp3lame, 44100 Hz, mono, s16, 64 kb / s
mapeamento de fluxo: Fluxo de vídeo # 0,0 - > # 0.0 Fluxo de vídeo # 0.1 - > # 0.1

    
por Ranjit Aneesh 21.04.2014 / 14:24

0 respostas