2016-07-25 11 views
0

我正嘗試使用FFmpeg將我的網絡攝像頭流式傳輸到基於HttpLiveStreaming(HLS)的Android設備上。爲了在Android上播放MPEG-TS,我使用了ExoPlayer。無法使用Android上的ExoPlayer或Mac上的Quicktime從網絡攝像頭播放MPEG-TS


FFmpeg的數據流命令:ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i "0" -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test

當我使用VLC播放MPEG-TS,一切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進行播放。


我這兩個案件之間發現的唯一的區別是,網絡攝像頭的拍攝格式是YUY2,而MP4視頻是YUV420,它們採用了不同的編碼器H264。我猜想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

相關問題