【问题标题】:video stream from vlc to android, video missing从 vlc 到 android 的视频流,视频丢失
【发布时间】:2011-07-12 14:24:13
【问题描述】:

我正在尝试将视频从 VLC 流式传输到 HTC G1。在几次“这应该工作”之后,我找到了一个允许我通过 VLC 观看流的 sout-chain。我也能听到安卓上的音频。

我目前使用的外链:

vlc some_file.mp4 -I http --sout "#transcode{soverlay,ab=128,samplerate=44100,channels=2,acodec=mp4a,vcodec=h264,width=480,height=270,vfilter="canvas{width=480,height=270,aspect=16:9}",fps=25,vb=800,venc=x264{level=12,no-cabac,subme=20,threads=4,bframes=0,min-keyint=1,keyint=50}}:gather:rtp{mp4a-latm,sdp=rtsp://0.0.0.0:5554/stream.sdp}"

这就是我在机器人上做的事情:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    vv = (VideoView) findViewById(R.id.video_view);
    vv.setVideoURI(Uri.parse("rtsp://<local_ip>:5554/stream.sdp"));
    vv.start();
}

我尽量将其保持在最低限度(这实际上是我在此处的另一个线程中找到的示例)。 我也尝试使用 MediaPlayer:

MediaPlayer mp = MediaPlayer.create(this, Uri.parse("rtsp://<local_ip>:5554/stream.sdp"));
mp.setDisplay(vv.getHolder());
mp.start();

我使用 setDisplay(SurfaceHolder) 是因为有人提到 MediaPlayer,否则不知道要使用什么显示器。

知道我遗漏了什么或做错了什么吗?

编辑:我用 MP4Box 提示了文件

【问题讨论】:

  • 切换到 Darwin Streaming Server,工作正常。在 LG Optimus Speed 上进行了测试,发现这款手机可以按预期播放视频和音频。所以我认为我的问题已经解决了。
  • 我也未能成功让 VLC 流式传输到 android 设备。内置媒体播放器应支持 rtsp url,因此您应该能够直接从 Web 浏览器的 URL 栏中打开流。如果有人知道神奇的 sout 参数集以使 VLC 流向 Android 工作,请在此处回复!

标签: android rtsp vlc


【解决方案1】:

首先,我认为您的音频编码器有问题,它显示“MPEG-1/2 Video”不是音频编码器,您可以试试“mpga”吗?

还有一个问题是你想把框架调整成指定的尺寸,width=480,height=270,你能把这部分删掉吗?

我的命令有效:

vlc /Users/chenyu/Sites/BBC.mp4 -I http --sout "#transcode{soverlay,ab=128,samplerate=44100,channels=2,acodec=mpga,vcodec=h264,fps=25, vb=800,venc=x264{level=1,no-cabac,subme=20,threads=4,bframes=0,min-keyint=1,keyint=50}}:gather:rtp{mp4a-latm,sdp= rtsp://10.0.1.2:5554/stream.sdp}"

你也可以在android端试试下面的代码吗?

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final VideoView vidView = (VideoView)findViewById(R.id.myVideo);

        MediaController vidControl = new MediaController(this);
        vidControl.setAnchorView(vidView);
        vidView.setMediaController(vidControl);

        vidView.setVideoPath("rtsp://10.0.1.2:5554/stream.sdp");

        vidView.start();
        }

【讨论】:

    猜你喜欢
    • 2014-07-15
    • 2012-04-26
    • 2013-11-17
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多