我想在Android设备上显示H.264编码的rtsp视频.该流来自Raspberry Pi,使用vlc编码/dev/video1
,这是一个"Pi NoIR相机板".
vlc-wrapper -vvv v4l2:///dev/video1 --v4l2-width $WIDTH --v4l2-height $HEIGHT --v4l2-fps ${FPS}.0 --v4l2-chroma h264 --no-audio --no-osd --sout "#rtp{sdp=rtsp://:8000/pi.sdp}" :demux=h264 > /tmp/vlc-wrapper.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我现在正在使用非常少的Android代码:
final MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(holder);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
Run Code Online (Sandbox Code Playgroud)
并获得"准备失败:状态= 0x1" IOException
.当我查看日志时,我会看到类似的行
06-02 16:28:05.566 W/APacketSource( 316): Format:video 0 RTP/AVP 96 / MIME-Type:H264/90000
06-02 16:28:05.566 W/MyHandler( 316): Unsupported format. Ignoring track #1.
06-02 16:28:05.566 I/MyHandler( 316): SETUP(1) completed with result -1010 (Unknown error 1010)
Run Code Online (Sandbox Code Playgroud)
来自系统过程.Grepping这些消息指向 libstagefright/rtsp
源,似乎意味着构造函数中的ASessionDescription::getDimensions
调用APacketSource::APacketSource
失败.这似乎不应该发生,因为VLC肯定知道要输出的维度: …