2016-07-25 11 views
0

FFmpegを使用してHttpLiveStreaming(HLS)に基づいてAndroidデバイスにウェブカメラをストリーミングしようとしています。 AndroidでMPEG-TSを再生するには、ExoPlayerを使用します。AndroidのExoPlayerまたはMacのQuicktimeを使用してWebカメラからMPEG-TSを再生できない


FFmpegのストリーミングコマンドは:私は、MPEG-TSを再生するためにVLCを使用する場合ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

、すべてがOKでした。しかし、Androidの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の両方を使用して再生できます。


私はこれらの2例との間に見られる唯一の違いは、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のおかげです。

関連する問題