2016-07-25 1 views
0

FFmpeg를 사용하여 HttpLiveStreaming (HLS)을 기반으로 Android 기기로 웹캠을 스트리밍하려고합니다. Android에서 MPEG-TS를 재생하려면 ExoPlayer를 사용합니다.Android 또는 Mac의 Quicktime에서 ExoPlayer를 사용하여 웹캠에서 MPEG-TS를 재생할 수 없음


는 FFmpeg 스트리밍 명령 : I는 MPEG-TS를 재생 VLC를 사용하는 경우 ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

, 모든 확인했다. 그러나 안드로이드에서는 ExoPlayer를, Mac OS에서는 Quicktime (Safari)을 사용하여 재생하지 못했습니다. 그런 다음 그 이유를 찾으려고 노력했습니다.


같은 방식으로 FFmpeg를 사용하여 mp4 비디오를 스트리밍하려고했습니다. 예 : ffmpeg -re -i test.mp4 -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

ExoPlayer와 Quicktime을 모두 사용하여 재생할 수 있습니다.


나는이 이가지 경우 사이에서 발견 유일한 차이점은 MP4 비디오는 YUV420하고 서로 다른 H264 인코더을 사용하는 동안 웹캠의 캡처 형식 YUY2는 것입니다. YUY2와 YUV420 용 H264 디코더는 같지 않습니다.

내 추론이 정확했는지,이 문제를 해결할 수있는 유일한 방법은 스트리밍 전에 YUY2를 YUV420으로 변환하는 것입니다.

Mac을 사용하는 누군가가 나와 같은 방식으로 Facetime 카메라를 스트리밍하여 Safari에서 재생할 수 있는지 알아볼 수 있기를 바랍니다.

답변

0

마지막으로 해결책을 찾았습니다. 추측 한 것처럼 H264 인코딩 및 스트리밍을하기 전에 YUY2를 YUV420으로 변환해야합니다. 명령은 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

덕분입니다. this에게 감사드립니다.

관련 문제