te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>VLC library for android app - black screen - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

VLC library for android app - black screen - Stack Overflow

programmeradmin4浏览0评论

I tried several implementations but completely unable to get this to work, it's always just a black screen. It seems the library is pretty old and don't see it used a lot on forums, especially recently... does it just not work anymore or something?

Here is my activity:

import android.os.Bundle;
import android.util.Log;

import com.creativelabs.iptvplayer.R;

import .videolan.libvlc.LibVLC;
import .videolan.libvlc.Media;
import .videolan.libvlc.MediaPlayer;
import .videolan.libvlc.util.VLCVideoLayout;

import java.util.ArrayList;

public class TestActivity extends FragmentActivity {
    private static final boolean USE_TEXTURE_VIEW = false;
    private static final boolean ENABLE_SUBTITLES = true;
    
    private static final String IPTV_URL = ".mp4";
    private VLCVideoLayout mVideoLayout = null;

    private LibVLC mLibVLC = null;
    private MediaPlayer mMediaPlayer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.test_act);

        final ArrayList<String> options = new ArrayList<>();
        options.add("--no-drop-late-frames");
        options.add("--no-skip-frames");
        options.add("--avcodec-hw=any");  // Enable hardware acceleration
        options.add("--network-caching=1000"); // Improve streaming performance
        options.add("-vvv"); // Enable verbose logging
        mLibVLC = new LibVLC(this, options);
        mMediaPlayer = new MediaPlayer(mLibVLC);

        mVideoLayout = findViewById(R.id.video_layout);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaPlayer.release();
        mLibVLC.release();
    }

    @Override
    protected void onStart() {
        super.onStart();

        mMediaPlayer.attachViews(mVideoLayout, null, ENABLE_SUBTITLES, USE_TEXTURE_VIEW);
        final Media media = new Media(mLibVLC, IPTV_URL);
        media.setHWDecoderEnabled(true, false);  // Enable hardware decoding (optional)
        media.addOption(":network-caching=3000");
        mMediaPlayer.setMedia(media);
        media.release();
        mMediaPlayer.play();
    }

    @Override
    protected void onStop() {
        super.onStop();

        mMediaPlayer.stop();
        mMediaPlayer.detachViews();
    }
}

What am I missing please?

I tried several implementations but completely unable to get this to work, it's always just a black screen. It seems the library is pretty old and don't see it used a lot on forums, especially recently... does it just not work anymore or something?

Here is my activity:

import android.os.Bundle;
import android.util.Log;

import com.creativelabs.iptvplayer.R;

import .videolan.libvlc.LibVLC;
import .videolan.libvlc.Media;
import .videolan.libvlc.MediaPlayer;
import .videolan.libvlc.util.VLCVideoLayout;

import java.util.ArrayList;

public class TestActivity extends FragmentActivity {
    private static final boolean USE_TEXTURE_VIEW = false;
    private static final boolean ENABLE_SUBTITLES = true;
    
    private static final String IPTV_URL = "https://www.learningcontainer/wp-content/uploads/2020/05/sample-mp4-file.mp4";
    private VLCVideoLayout mVideoLayout = null;

    private LibVLC mLibVLC = null;
    private MediaPlayer mMediaPlayer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.test_act);

        final ArrayList<String> options = new ArrayList<>();
        options.add("--no-drop-late-frames");
        options.add("--no-skip-frames");
        options.add("--avcodec-hw=any");  // Enable hardware acceleration
        options.add("--network-caching=1000"); // Improve streaming performance
        options.add("-vvv"); // Enable verbose logging
        mLibVLC = new LibVLC(this, options);
        mMediaPlayer = new MediaPlayer(mLibVLC);

        mVideoLayout = findViewById(R.id.video_layout);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaPlayer.release();
        mLibVLC.release();
    }

    @Override
    protected void onStart() {
        super.onStart();

        mMediaPlayer.attachViews(mVideoLayout, null, ENABLE_SUBTITLES, USE_TEXTURE_VIEW);
        final Media media = new Media(mLibVLC, IPTV_URL);
        media.setHWDecoderEnabled(true, false);  // Enable hardware decoding (optional)
        media.addOption(":network-caching=3000");
        mMediaPlayer.setMedia(media);
        media.release();
        mMediaPlayer.play();
    }

    @Override
    protected void onStop() {
        super.onStop();

        mMediaPlayer.stop();
        mMediaPlayer.detachViews();
    }
}

What am I missing please?

Share Improve this question asked Feb 17 at 21:34 zuokuokzuokuok 4501 gold badge7 silver badges17 bronze badges 1
  • First thing you should do is check the logs, and share them – mfkl Commented Feb 18 at 4:44
Add a comment  | 

2 Answers 2

Reset to default 0

Here's your code with some suggestions and insights:

import android.os.Bundle;
import android.util.Log;
import androidx.fragment.app.FragmentActivity;

import com.creativelabs.iptvplayer.R;

import .videolan.libvlc.LibVLC;
import .videolan.libvlc.Media;
import .videolan.libvlc.MediaPlayer;
import .videolan.libvlc.util.VLCVideoLayout;

import java.util.ArrayList;

public class TestActivity extends FragmentActivity {
    private static final boolean USE_TEXTURE_VIEW = false;
    private static final boolean ENABLE_SUBTITLES = true;

private static final String IPTV_URL = "https://www.learningcontainer/wp-content/uploads/2020/05/sample-mp4-file.mp4";
private VLCVideoLayout mVideoLayout = null;

private LibVLC mLibVLC = null;
private MediaPlayer mMediaPlayer = null;

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

    final ArrayList<String> options = new ArrayList<>();
    options.add("--no-drop-late-frames");
    options.add("--no-skip-frames");
    options.add("--avcodec-hw=any");  // Enable hardware acceleration
    options.add("--network-caching=1000"); // Improve streaming performance
    options.add("-vvv"); // Enable verbose logging
    mLibVLC = new LibVLC(this, options);
    mMediaPlayer = new MediaPlayer(mLibVLC);

    mVideoLayout = findViewById(R.id.video_layout);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mMediaPlayer.release();
    mLibVLC.release();
}

@Override
protected void onStart() {
    super.onStart();
    mMediaPlayer.attachViews(mVideoLayout, null, ENABLE_SUBTITLES, USE_TEXTURE_VIEW);
    final Media media = new Media(mLibVLC, IPTV_URL);
    media.setHWDecoderEnabled(true, false);  // Enable hardware decoding (optional)
    media.addOption(":network-caching=3000");
    mMediaPlayer.setMedia(media);
    media.release();
    mMediaPlayer.play();
}

@Override
protected void onStop() {
    super.onStop();
    mMediaPlayer.stop();
    mMediaPlayer.detachViews();
}

} I made some edits to your code which you have the correct VLC dependencies in your build.gradle file.

I found that VLC was treating my URL as a file, I just had to do this instead:

final Media media = new Media(mLibVLC, Uri.parse(IPTV_URL));
发布评论

评论列表(0)

  1. 暂无评论