我正在写一个纯C的媒体播放器,我正在使用libvlc.目前我正在开发媒体库,我正在编写目录漫游器和媒体文件解析器.它可以很好地处理各种元数据,如艺术家或专辑等,但是libvlc_media_get_duration总是返回0.我尝试了所有内容并在各处搜索,但我无法使其工作.有谁能够帮我?
这是代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <vlc/vlc.h>
#include <stdarg.h>
#include <stdbool.h>
#include <dirent.h>
#include <sys/stat.h>
void strcopy(char **dst, const char *src) {
unsigned int size = strlen(src);
*dst = (char *) realloc(*dst, sizeof(char) * (size + 1));
strncpy(*dst, src, size);
*(*dst+size) = 0;
}
void strconcat(char **dst, int n, ...) {
va_list args;
unsigned int count = 0;
// Count
va_start(args, n);
for (unsigned short i = 0; i < n; i++)
count += strlen(va_arg(args, char*));
va_end(args); …
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用LibVLC播放视频并提出一些问题:
libvlc_video_set_marquee_int
.经过一些跟踪和错误后,我发现,在设置一个字幕文本之前,我在启动视频大约70ms后暂停主线程时它会起作用.为什么?我怎么能做得更好?--no-video-title-show
选项来禁用视频标题libvlc_new()
.然而,这有两个问题:首先,文档说不应该传递选项.好吧,好吧......但其次使用这个选项对字幕文本有一个奇怪的效果:你可以设置一个文本,但它只是闪烁一次并立即消失,无论libvlc_marquee_Timeout
设置为什么.我在C#代码中使用VLClib播放RTSP流。和C ++中的OpenCV,用于此流的帧上的某些进程。在“输出”窗口中,我收到以下消息:
core input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 300 ms)
core input error: ES_OUT_RESET_PCR called
Run Code Online (Sandbox Code Playgroud)
之后,每次遇到诸如Attempted to read or write protected memory
OpenCV代码调用之类的问题时,都会遇到问题。我不知道它们是否与此消息相关。
但是无论如何,这些消息的含义和原因是什么?我进行了搜索,但是大多数结果是关于VLC播放器及其DVD的问题。
这是我的整个日志:
Warning: option --plugin-path no longer exists.
Warning: option --plugin-path no longer exists.
[1074ff1c] core vout display error: Failed to set on top
[1074ff1c] core vout display error: Failed to change source AR
[19ac8a0c] core vout display error: Failed to change zoom
[19ac8a0c] core vout display error: Failed to set …
Run Code Online (Sandbox Code Playgroud) 我刚刚通过pip安装了python-vlc,当我尝试时
import vlc
Run Code Online (Sandbox Code Playgroud)
显示以下错误消息:
... ...
File "c:\Program Files\Python34\Lib\site-packages\vlc.py", line 173, in <module>
dll, plugin_path = find_lib()
File "c:\Program Files\Python34\Lib\site-packages\vlc.py", line 150, in find_lib
dll = ctypes.CDLL('libvlc.dll')
File "c:\Program Files\Python34\Lib\ctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
builtins.OSError: [WinError 126] The specified module could not be found
Run Code Online (Sandbox Code Playgroud)
我对ctypes模块不熟悉。是什么原因引起的?
我的 apk 文件大小是 5MB
添加"de.mrmaffen:vlc-android-sdk:2.0.6"
到 gradle 后,apk 大小增加到 62MB。
我该如何解决?
注意:我把它改成了这个,但是没有用。
compile ("de.mrmaffen:vlc-android-sdk:2.0.6"){
exclude group: 'io.card'
}
Run Code Online (Sandbox Code Playgroud) 我正在使用一个MediaListPlayer
实例来执行播放列表。在标准MediaPlayer
实例上,您可以使用MediaPlayer.audio_set_volume(newVolume)
,但是当我尝试在实例audio_set_volume(newVolume)
上使用相同的 method( )时MediaListPLayer
,出现错误:
AtributeError: 'MediaListPLayer' object has no attribute 'audio_set_volume'
。该方法的替代是什么MediaListPlayer
?
这是代码:
from vlc import Instance
playlist = ['/home/user/Music/01 Signs.mp3','/home/user/Music/2U.mp3']
player = Instance()
mediaListPlayer = player.media_list_player_new()
mediaList = player.media_list_new()
for element in playlist:
mediaList.add_media(player.media_new(element))
mediaListPlayer.set_media_list(mediaList)
mediaListPlayer.play()
mediaListPlayer.audio_set_volume(80)
Run Code Online (Sandbox Code Playgroud) 好的,我正在使用 LibVLC for Android(与 Android Studio)来接收 IP 摄像机的实时 RTSP 流,因为 VideoView 不太支持实时流。我正在使用 VideoLAN 人员提供的示例代码,可以在此处找到:
https://code.videolan.org/videolan/libvlc-android-samples
我对代码进行了大量研究,以从我的相机输出的 4:3 宽高比中实现 19:6 宽高比。我尝试打破宽高比的原因是因为该 IP 摄像机记录 1280x720 像素,但通过其第二个流输出 640x480。问题是宽度没有被裁剪,而是从侧面拉伸,所以看起来有点压缩。
我尝试在 SurfaceView 上将 4 个alignParent 选项设置为 true,但没有结果。还尝试将我在 JavaActivity 类代码中找到的一些宽度变量乘以 1.33333,理论上应该拉伸宽度,但什么也没发生,甚至没有错误或异常。我还尝试创建一个扩展 SurfaceView 的新类并使用 onMeasure 方法进行调整,但没有成功。这是示例中的 JavaActivity 代码(当然,我已经调整了我的代码以与我的项目配合使用,但做了一些细微的更改)
package org.videolan.javasample;
import android.annotation.TargetApi;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.FrameLayout;
import org.videolan.libvlc.IVLCVout;
import org.videolan.libvlc.LibVLC;
import org.videolan.libvlc.Media;
import …
Run Code Online (Sandbox Code Playgroud) 我正在从事视频广播的小型家庭项目。我找到了一些示例Example,但它不起作用,因为需要旧版本的库 0.8.6。所以我找到了它,但是当我尝试从 API 获取组件时,我对非托管代码有例外。所以也许有人与 VLC 合作进行视频广播,如果您有任何示例建议,我想。
在我们的应用程序中,我试图通过TPasLibVlcPlayer组件(http://prog.olsztyn.pl/paslibvlc/)播放流.我成功地做到了这一点,但只有安装了VLC.
目标是使用我们的应用程序部署所需的dll,以便我们可以在没有安装VLC的(Windows)PC上使用我们的应用程序.
问题是:我需要做些什么来完成这项工作?到目前为止,我试图把
在一个单独的文件夹中卸载VLC,然后设置这些dll的路径
PasLibVlcPlayer1.VLC.Path := 'C:\Tools';
Run Code Online (Sandbox Code Playgroud)
然而,当试图播放流时,没有任何反应.我调试并看到加载了libvlc.dll(返回一个句柄)并且可以执行所需的过程(GetProcAddress为所有支持的过程返回指定的addres),但是当调用libvlc_new时(在TPasLibVlc.GetHandle内),这将返回零.
该目录中是否应该有其他dll,或者我需要做些什么才能使其工作?
我正在使用 mrmaffen 的 VLC-ANDROID-SDK 来开发 RTSP 流应用程序。 https://github.com/mrmafen/vlc-android-sdk
我已经取得了很大的成功,让它工作并运行得很好,但我遇到的问题似乎无法动摇,让它在 SurfaceView 上全屏显示视频源,甚至只是在 SurfaceView 上显示视频源。 SurfaceView 的中心。
这就是我得到的:
黑色窗口是屏幕的总大小,我希望该视频填充屏幕并希望始终从中心填充,但我不知道该怎么做。
任何人都有类似的经验并知道如何解决它吗?
libvlc ×10
vlc ×5
android ×3
c# ×2
python ×2
.net ×1
c ×1
c++ ×1
delphi ×1
dll ×1
fullscreen ×1
opencv ×1
python-3.x ×1
rtsp ×1
surfaceview ×1