Não é possível reproduzir MPEG-TS da webcam usando o ExoPlayer no Android ou o Quicktime no Mac

0

Estou tentando usar o FFmpeg para transmitir minha webcam para um dispositivo Android com base no HttpLiveStreaming (HLS). Para reproduzir o MPEG-TS no Android, eu uso o ExoPlayer.

Comando de transmissão do FFmpeg: ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

Quando usei o VLC para reproduzir o MPEG-TS, tudo estava OK. No entanto, não consegui reproduzi-lo usando o ExoPlayer no Android ou o Quicktime (Safari) no Mac OS. Então eu tentei descobrir o motivo.

Eu tentei transmitir um vídeo mp4 usando o FFmpeg da mesma maneira. Por exemplo: ffmpeg -re -i test.mp4 -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

Eu posso tocá-lo usando o ExoPlayer e o Quicktime.

A única diferença que encontrei entre esses dois casos é que o formato de captura da Webcam é YUY2, enquanto o vídeo mp4 é YUV420 e eles usaram diferentes codificadores H264 . Eu acho que os decodificadores H264 para YUY2 e YUV420 não são os mesmos.

Não tenho certeza se minha inferência foi correta e a única solução para esse problema é converter YUY2 para YUV420 antes do streaming.

Espero que alguém usando o Mac possa tentar transmitir a câmera Facetime da mesma forma que eu e ver se ela pode ser reproduzida no Safari.

    
por Galaxy 25.07.2016 / 07:41

1 resposta

0

Finalmente, encontrei a solução. Assim como eu deduzi, eu preciso converter YUY2 para YUV420 antes da codificação H264 e streaming. Então o comando deve ser ffmpeg -f avfoundation -pix_fmt uyvy422 -video_size 1280x720 -framerate 30 -i "0" -pix_fmt yuv420p -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

Graças a this .

    
por 25.07.2016 / 09:45