安卓视频流示例

22

我希望在我的项目中实现视频流,是否有适用的教程?视频存储在服务器端,因此需要使用URL获取视频并在Android上播放。我尝试了一些示例,但是出现错误:"抱歉,无法播放此视频"。我正在尝试使用MP4格式。

3个回答

20

我曾经遇到相同的问题,但最终找到了解决方法。

以下是具体步骤:

1- 在您的计算机(服务器)上安装VLC,然后前往“媒体”->“流式传输”(Ctrl+S)

2- 选择要流式传输的文件,或者如果您想流式传输您的网络摄像头等内容,请单击“捕获设备”选项卡并进行配置,最后单击“流式传输”按钮。

3- 在这里,您应该进行流式传输服务器的配置,只需转到“选项”选项卡并粘贴以下命令即可:

:sout=#transcode{vcodec=mp4v,vb=400,fps=10,width=176,height=144,acodec=mp4a,ab=32,channels=1,samplerate=22050}:rtp{sdp=rtsp://YOURCOMPUTER_SERVER_IP_ADDR:5544/}

注意:将YOURCOMPUTER_SERVER_IP_ADDR替换为您的计算机IP地址或运行VLC的任何服务器...

注意:可以看到,视频编解码器是MP4V,Android支持该编解码器。

4- 转到Eclipse并创建一个新项目以进行媒体播放。 创建一个VideoView对象,在OnCreate()函数中编写如下代码:

mVideoView = (VideoView) findViewById(R.id.surface_view);

mVideoView.setVideoPath("rtsp://YOURCOMPUTER_SERVER_IP_ADDR:5544/");
mVideoView.setMediaController(new MediaController(this));

5- 在设备上运行apk(不是模拟器,我没有检查过),等待播放开始。请考虑缓冲过程需要大约10秒钟...

问题:有人知道如何减少缓冲时间并实现几乎实时播放视频吗?


太棒了,这个完美地运行了!假设VLC流是使用ffmpeg创建的,现在我只需要找到一种使用该库自己完成此操作的方法。 - Johncl
好问题.. 有人能回答这个问题吗? 问题:有人知道如何减少缓冲时间并实现几乎实时播放视频吗? - sonu thomas
1
@sonuthomas 如果您有新的问题,请通过单击提问按钮来提出。 - Adam Lear
1
我的问题已经在 https://dev59.com/y1vUa4cB1Zd3GeqPxuLm 和 https://dev59.com/WFHTa4cB1Zd3GeqPPCZS#8687339 中提出过,希望您能帮助我。 - sonu thomas
1
在Android的媒体播放器中,缓冲似乎是不可避免的。您可以使用Doubango库并实现一个简单的SIP客户端来通过IP播放实时视频... - Amir Dashti

10

我曾经遇到同样的问题,但找到了一个解决办法让代码正常运行。

给定在 android-Sdk/samples/android-?/ApiDemos 的代码可用。将每个文件夹复制粘贴到Android项目中,然后在MediaPlayerDemo_Video.java中将要流式传输的视频路径放入path变量中。 代码中留空。

以下视频流对我有效: http://www.pocketjourney.com/downloads/pj/video/famous.3gp

我知道RTSP协议应该用于流媒体传输,但是代码中提到,MediaPlayer类支持http进行流媒体传输。

我在Google上搜索了视频的格式,并发现使用Quicktime Pro将视频转换为mp4或3gp格式可以正常进行流媒体传输。

我在安卓2.1上测试了最终apk。这个应用程序不适合在模拟器上使用。请在设备上尝试。

希望这会有所帮助..


6

1
当我运行示例时,会生成一个对话框,显示“抱歉,无法播放此视频”。 - user609239

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接