Saída de pipetagem de ffmpeg / avconv sobre ssh para um arquivo

1

Eu gosto de canalizar a saída do ffmpeg / avconv sobre o ssh para um arquivo. Eu gostaria de fazer algo assim.

ssh USER_NAME@SERVER_IP "avconv -i "http://svtplay20k-f.akamaihd.net/i/se/open/20141013/1368164-001A/EPISOD-1368164-001A-c49ff75135a27611_,144,252,360,468,892,1584,2700,.mp4.csmil/index_6_av.m3u8?null=" -acodec copy -vcodec copy -bsf aac_adtstoasc -f mp4 pipe:1" | cat > pipeOutput.mp4

Eu tentei acima, mas recebo Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

Eu tentei mudar para -f avi e pipeOutput.avi . Isso me deu um arquivo muito grande, mas não funciona.

Alguma sugestão do que estou fazendo de errado?

    
por g3blv 14.11.2014 / 07:41

1 resposta

1

Para o ffmpeg gravar em um arquivo MP4, ele precisa que a saída seja procurada (para criar os átomos MP4 necessários). O MP4 não é um contêiner passível de transbordo. Isso significa que você não pode enviar dados MP4 "brutos" através de uma conexão SSH, ou apenas um pipe comum Unix.

Você pode usar o Matroska como formato:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -f matroska pipe:1" | cat > out.mkv

Ou use fluxos de transporte MPEG-2, mas eles exigem filtragem do fluxo de bits MP4 para um fluxo de bytes H.264 Anexo B que pode ser empacotado:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -bsf:v h264_mp4toannexb -f mpegts pipe:1" | cat > out.ts

Observação: usei ffmpeg aqui, pois não posso testar avconv .

    
por 14.11.2014 / 08:59