我正嘗試使用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中播放。