видео поток с VLC на Android, видео отсутствует - PullRequest
2 голосов
/ 12 июля 2011

Я пытаюсь транслировать видео с VLC на HTC G1.После нескольких «это должно сработать» я обнаружил цепочку, которая позволила мне наблюдать за потоком через VLC.Я также могу слышать звук на андроиде.

Я использую цепочку соутов:

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

1 Ответ

0 голосов
/ 04 января 2015

Во-первых, я думаю, что есть проблема с вашим аудиокодером, он показывает, что «MPEG-1/2 Video» не является аудиокодером, не могли бы вы попробовать «mpga»?

и еще одна проблема - вы пытаетесь подогнать кадры к указанному размеру, ширина = 480, высота = 270, не могли бы вы удалить эту часть?

Моя команда работает:

vlc /Users/chenyu/Sites/BBC.mp4 -I http --sout "#transcode {soverlay, ab = 128, samplerate = 44100, channel = 2, acodec = mpga, vcodec = h264, fps = 25, VB = 800, venc = x264 {уровень = 1, нет-CABAC, subme = 20, резьба = 4, bframes = 0, мин-keyint = 1, keyint = 50}}: собрать: 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();
        }
...