我正在尝试使用FFmpeg将我的摄像头流到基于HttpLiveStreaming的安卓设备上。为了在安卓上播放MPEG-TS,我使用了ExoPlayer.
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时,一切都很好.然而,我未能使用安卓上的ExoPlayer或Mac上的Quicktime(Safari)播放。然后我试着找出原因。
我试图以同样的方式使用mp4来播放FFmpeg视频。例如:ffmpeg -re -i test.mp4 -vcodec libx264 -preset veryfast -f flv rtmp://localhost:1935/hls/test
我可以使用ExoPlayer和Quicktime来播放它。
,我发现这两种情况之间唯一的区别是,网络摄像头的捕获格式是YUY2,而mp4视频是YUV420,他们使用的是不同的H264编码器。我想,H264解码器YUY2和YUV420是不一样的。
我不确定我的推断是否正确,这个问题的唯一解决方案是在流之前将YUY2转换为YUV420。
我希望使用Mac的人可以尝试用和我一样的方式播放Facetime摄像头,看看它是否可以在Safari中播放。
发布于 2016-07-25 07:39:17
最后,我找到了解决办法。正如我推断的那样,我需要在YUY2编码和流之前将H264转换为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。
https://stackoverflow.com/questions/38560840
复制相似问题