media_player_new()会引发分段错误.
import vlc
ins=vlc.Instance()
player=ins.media_player_new()
Run Code Online (Sandbox Code Playgroud)
这是它崩溃的地方:
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libvlc.dylib 0x000000010059aa78 libvlc_media_player_new + 24
Run Code Online (Sandbox Code Playgroud)
libvlc.dylib位于脚本所在的位置:/Applications/VLC.app/Contents/MacOS/lib
vlc.py可以在这里找到:git://git.videolan.org/vlc/bindings/python.git
任何想法为什么或如何调试?
有人可以分享一个 python 代码片段,展示如何在 libvlc 中使用 video_set_callbacks 吗?
我的中间目标是每次准备好显示时检索一个框架。一个解决方案通常不仅对我来说很有趣。
谢谢!
现在我的方法是:
libvlc_video_set_callbacks //set the lock,unlock,display callback functions
libvlc_media_player_set_position //goto the snap time
libvlc_media_player_play //start playing
Run Code Online (Sandbox Code Playgroud)
然后在解锁回调函数中调用'libvlc_media_player_stop'停止播放,并通过显示回调函数保存提供者的数据。
这种方法已经成功了几次,但更多时候会使我的整个程序崩溃。我知道它看起来有点愚蠢,但我在libvlc包含文件中找不到任何逐帧控制功能。
我正在尝试使用 libvlc 创建一个音频波可视化器。已彻底搜索网络,但无法找到任何帮助。如果有人能在这里帮助我,那就太好了。
提前致谢 :)
我在Android应用程序中使用libVLC进行RTSP流式传输.由于视频是通过libView中的SurfaceView加载的,因此我们无法直接拍摄快照.
那么如何使用LibVLC for Android支持快照功能呢?
一种解决方案是通过TextureView加载视频.我们可以使用getBitmap函数使用函数getBitmap()获取当前播放视频的快照.如何在libVLC中添加对textureView的支持?
我已经浏览了源代码VLC.我找到了这个文件snapshot.c.是否可以使用它在Android中启用快照功能?
我正在尝试使用最后一个 LibVLC 为 Android 应用程序创建视频播放器。
问题是我不知道这个库是如何工作的,我找不到可以帮助我的示例(正如这里所说的https://bitbucket.org/edwardcw/libvlc-android-sample)
所以我尝试自己创建视频播放器:
public class VideoPlayerActivity extends AppCompatActivity implements IVideoPlayer, GestureDetector.OnDoubleTapListener, IDelayController {
private static LibVLC LibVLC() {
return VLCInstance.get();
}
private static MediaPlayer MediaPlayer() {
return VLCInstance.getMainMediaPlayer();
}
@Override
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(getApplicationContext(), "Ca start VideoPlayerActivity !!", Toast.LENGTH_SHORT).show();
if (!VLCInstance.testCompatibleCPU(this)) {
// exit(RESULT_CANCELED);
return;
}
extras = getIntent().getExtras();
mUri = extras.getParcelable(PLAY_EXTRA_ITEM_LOCATION);
Toast.makeText(getApplicationContext(), "Oui ça start le VideoPlayer", Toast.LENGTH_SHORT).show();
setContentView(R.layout.player_test);
}
@Override
public void onResume() {
super.onResume();
mSurfaceView = (SurfaceView) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gstreamer作为服务器实现实时流式传输,而不是纯RTP(无RTSP),使用sdp文件,服务器到客户端的延迟时间<500ms.测试服务器已经过测试
gst-launch-1.0 -v v4l2src ! video/x-raw,width=640,height=480,framerate=30/1 ! x264enc tune=zerolatency threads=0 bitrate=500 speed-preset=ultrafast ! rtph264pay pt=96 config-interval=1 ! udpsink host=X.X.X.X port=X
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用gst-launch从gstreamer客户端接收它我没有延迟(在网络上使用两个不同的设备),我也能够使用vlc作为客户端,读取sdp文件和使用文件缓存实现相同的功能> = 1500ms.
我的问题是我需要一个Android客户端.我正在尝试使用LibVLC for Android但是使用相同的选项我无法实现延迟<2s.
适用于Android的LibVLC代码,其中MediaPlayer和Media是org.videolan.libvlc的一部分:
ArrayList<String> options = new ArrayList<String>();
options.add("--file-caching=2000");
mLibVLC = new LibVLC(options);
mLibVLC.setOnHardwareAccelerationError(this);
mHolder.setKeepScreenOn(true);
// Create media player
mMediaPlayer = new MediaPlayer(mLibVLC);
mMediaPlayer.setEventListener(mPlayerListener);
mSurface = (SurfaceView) findViewById(R.id.surfaceView);
mHolder = mSurface.getHolder();
// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.setWindowSize(640, 480);
vout.addCallback(this);
vout.attachViews();
Media m = new Media(mLibVLC, media);
mMediaPlayer.setMedia(m);
mMediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)
我还尝试了其他选项--clock-synchro -clock-jitter等...在启动时,似乎需要大约2秒来缓冲,这些秒延迟了整个流.有一种方法可以减少标准客户端中的延迟,或者是否存在另一个Android客户端? …
我目前在尝试使用适用于 Android 的 VLC 播放网络流时遇到问题。
我基本上遵循了这个指南,https://wiki.videolan.org/AndroidCompile/,克隆了 repo 并构建了:一切正常,我可以运行我的应用程序并播放视频(本地或来自网络)。
然后我libvlc AAR从头开始创建了一个新的 Android 项目:我可以播放本地视频,但是当我传入一个 URL 时,流没有打开。
相关代码:
// Create LibVLC
ArrayList<String> options = new ArrayList<String>();
options.add("--aout=opensles");
options.add("--audio-time-stretch"); // time stretching
options.add("-vvv"); // verbosity
libvlc = new LibVLC(options);
holder.setKeepScreenOn(true);
// Create media player
mMediaPlayer = new MediaPlayer(libvlc);
mMediaPlayer.setEventListener(mPlayerListener);
// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.addCallback(this);
vout.attachViews();
Media m = new Media(libvlc, Uri.parse(media));
mMediaPlayer.setMedia(m);
mMediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)
URL 中的mediaa在哪里String。
我的配置(即模块)中是否缺少某些东西?
这是我得到的日志:
D/LibVLCAndroidSample: Playing …Run Code Online (Sandbox Code Playgroud) 我正在使用libvlc在我的GUI应用程序上使用QT 4播放视频.当我向前搜索视频时它工作正常,但是当我寻找视频时,它会卡住我的意思是帧不会改变而我的回调函数就是视频输出没有接到任何电话.
void videoPrerender(void *p_video_data,
uint8_t **pp_pixel_buffer,
int size)
{
// Locking
//printf("cbVideoPrerender %i\n",size);
//printf("vtest: %lld\n",(long long int)p_video_data);
VLCPlayer* player = reinterpret_cast<VLCPlayer*>(p_video_data);
player->m_mutex.lock();
if ((size > player->m_videoBufferSize) || !player->m_videoBuffer)
{
printf("Reallocate raw video buffer\n");
if(player->m_videoBuffer) free(player->m_videoBuffer);
player->m_videoBuffer = (uint8_t *)malloc(size);
player->m_videoBufferSize = size;
}
*pp_pixel_buffer = player->m_videoBuffer;
}
void videoPostrender(void *p_video_data,
uint8_t *p_pixel_buffer,
int width,
int height,
int pixel_pitch,
int size,
int64_t pts)
{
Q_UNUSED(p_pixel_buffer)
Q_UNUSED(size)
//printf("cbVideoPostrender %i\n",size);
// Unlocking
VLCPlayer* player = reinterpret_cast<VLCPlayer*>(p_video_data);
player->m_mutex.unlock();
player->m_frameWidth = width;
player->m_frameHeight = …Run Code Online (Sandbox Code Playgroud) 正如您可能在c#Windows窗体中所说的那样,我需要添加一个自定义的搜索栏/跟踪栏。但是问题在于,vlc点网表单库几乎没有文档。我需要知道如何在Windows窗体应用程序中添加自定义搜寻栏。
记住,我没有使用vlc activeX插件*。**相反,我正在使用vlc的点网库的nuget包,并且一切正常。我添加了切换播放和暂停按钮,停止按钮,能够获取当前时间,能够获取总时间以及其他所有内容。但是我不知道如何添加搜索栏,以便当我搜索时,视频移动到该位置。请帮助我完整的代码。