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.