首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android LibVLC,拍摄没有TextureView的RTSP流的快照。

Android LibVLC,拍摄没有TextureView的RTSP流的快照。
EN

Stack Overflow用户
提问于 2020-01-03 17:19:15
回答 1查看 1.8K关注 0票数 1

考虑使用libVLC用于安卓,基于官方的推荐方式

我毫无问题地通过了编译过程 (但花了一些时间)。

我想拥有快照功能,但我发现了一些非常古老(2-3年前)的线程,其中声明这个特性是仍然没有 (2016) --至少这条线 (2014)是“非开箱即用”。

快照功能可在其他平台上使用。

还有一些解决方案,它们从SurfaceView切换到TextureView。

但是,我更喜欢坚持使用SurfaceView,因为TextureView会带来一些性能缺陷(根据主题)。

官方android页面上也有这样的声明:

在API 24及更高版本中,建议实现SurfaceView而不是TextureView.

在2014年,基于我前面提到的线程的快照函数只有两个依赖项:

  • 启用sout模块
  • 启用png作为编码器

当查看VideoLAN的“VLC”存储库时,有一个文件负责构建libVLC。

在第396行中,默认情况下似乎启用了sout模块。

在编译之前,我已经在vlc/cont肋骨/src/ffmpeg/rues.mak中启用了png作为编码器,正如论坛中所指出的那样。

但是,无论是在org.videolan.libvlc.MediaPlayer中还是在org.videolan.libvlc.VLCVideoLayout中,仍然没有与快照相关的函数。

问题是如何使用libVLC在Android上创建快照(文件或缓冲区),而不使用TextureView?

Update1:

Fact1:找到了安卓系统不可用的原因。在VLC的核心源代码树中,在第145行的lib/VLC.c文件中,有一个带有大量FIXME警告的快照函数:

代码语言:javascript
运行
复制
/* FIXME: This is not atomic. All parameters should be passed at once
 * (obviously _not_ with var_*()). Also, the libvlc object should not be
 * used for the callbacks: that breaks badly if there are concurrent
 * media players in the instance. */
var_Create( p_vout, "snapshot-width", VLC_VAR_INTEGER );
var_SetInteger( p_vout, "snapshot-width", i_width);
var_Create( p_vout, "snapshot-height", VLC_VAR_INTEGER );
var_SetInteger( p_vout, "snapshot-height", i_height );
var_Create( p_vout, "snapshot-path", VLC_VAR_STRING );
var_SetString( p_vout, "snapshot-path", psz_filepath );
var_Create( p_vout, "snapshot-format", VLC_VAR_STRING );
var_SetString( p_vout, "snapshot-format", "png" );
var_TriggerCallback( p_vout, "video-snapshot" );
vlc_object_release( p_vout );  

Fact2:,我想用这个去另一个方向。如果快照函数不可用(使用它也不明智),我想出了一些紧急解决方案:

  1. VLC中有一个名为景物的视频过滤器.这产生的静止图像的视频到一个特定的路径。我试过用这个,但是视频过滤器是无法在运行时更改。所以这次尝试失败了。
  2. 我也试图通过MediaPlayer (通过Media.addOption)来做这件事,但是视频过滤器也不可能在安卓系统的MediaPlayer级别上改变。
  3. 然后,我尝试将筛选器配置作为参数传递给libVLC初始化,最后它成功了,但是这不会有效地在每次我需要屏幕截图时创建一个新的libVLC实例。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 03:01:48

做这件事的几种方法..。

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59582719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档