文档章节

C#用VLC “全屏” 播放视频

天体图
 天体图
发布于 2017/08/02 16:46
字数 522
阅读 55
收藏 0
点赞 0
评论 0

工作还没完成,大概记录一下吧!

用VLC播放视频时,它总是保持着原有比例,并不铺满控件。

网上照了一些方法,有的人说libvlc_set_fullscreen,其实这是真的全屏幕,我也没研究过,用法比较复杂,不是简简单单的调一个函数就能实现的,具体看官方说明。

有的人说libvlc_video_set_aspect_ratio,但是我看别人说只有第一次可以按照自定义长宽比,第二次设置没用,那么在控件大小变动后,就无法实现铺满整个控件了。但是在控件大小不变或者比例不变的情况下,应该是可以用的。

设置这个长宽比我也没有试过,因为当时我已经抄了第三种方式的大量代码,不想就这么放弃。

第三种方式也是参考网上的,主要流程是设置libvlc_video_set_format和libvlc_video_set_callbacks,利用video回调函数,处理每一帧图像,把它输出到控件上。

LIBVLC_API void libvlc_video_set_callbacks ( libvlc_media_player_t *  mp,
    libvlc_video_lock_cb  lock,
    libvlc_video_unlock_cb  unlock,
    libvlc_video_display_cb  display,
    void *  opaque 
  )

参考资料:http://www.cnblogs.com/smartsensor/p/4343769.html

大致是如这位大神所说,但是我实际使用中发现,它调用回调函数的顺序并不是按照libvlc_video_lock_cb 、libvlc_video_display_cb 、libvlc_video_unlock_cb 这样的顺序执行的,而是先unlock后display,这应该算是一个坑吧,我按照大神的代码总是走不进display回调,调试之后才发现的。

然后,我就把他的代码拷贝拷贝,将回调函数中获得的图像指定为控件的背景(控件背景的显示模式为拉伸),就实现了视频以拉伸的形式展示在控件上了。

最后检查一下有没有内存泄露什么的,就打开任务管理器,放一段视频,看看内存使用率会不会升高什么的。

© 著作权归作者所有

共有 人打赏支持
天体图
粉丝 16
博文 4
码字总数 4217
作品 0
南京
iOS中的视频播放

iOS中的视频播放 iOS提供了MPMoviePlayerController 和 MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体网络音频。这两个类都定义在MediaPlayer框架中。 YouTobe就是用...

傲风凌寒 ⋅ 2014/05/26 ⋅ 1

iOS开发之视频播放

1、如何播放视频 iOS提供了MPMoviePlayerController、MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体网络音频。 提示:网络音频同样使用此控制器播放。YouTobe就是用...

feng_blog ⋅ 2015/08/31 ⋅ 1

VLC 0.9.9发布,1.0版蓄势待发

最好的开源视频播放器VLC至今下载数量已接近5000万次,4月2日 它正式发布了0.9.9版。主要特性包括:修正Windows上多屏幕全屏显示问题,改进了基于英特尔处理器的苹果电脑视频性能,解码器更新...

红薯 ⋅ 2009/04/05 ⋅ 0

Mac 版 VLC 3.0 预览版发布:支持 360 度视频

VideoLAN 今天发布了 VLC 3.0 第一个预览版,并加入了 360 度视频播放支持,这意味着 macOS 用户可以使用 VLC 3.0 观看沉浸式环绕视频。Mac 电脑缺少运动追踪功能,所以用户需要使用鼠标和键...

两味真火 ⋅ 2016/11/27 ⋅ 8

用VLC做流媒体服务器

VLC确切来说只是个播放器,是videolan的开源产品,videolan原来还有一个VLM,是服务器端,专门用来做流媒体服务器的,但是现在VLM的功能已经都集成进VLC了,所以也就可以用VLC来做流媒体服务...

yizhichao ⋅ 2016/09/18 ⋅ 0

C语言基于GTK+Libvlc实现的简易视频播放器

小编心语:现下,各种视频播放软件层出不穷,竞争也越演越烈,不知道大家有木有这个想法,小编有时在想能不能做一款属于自己的视频播放器呢~小编特意去实验楼,整理出了这篇关于如何实现简易...

实验楼 ⋅ 2014/12/22 ⋅ 8

开源播放器 VLC for Windows 8 已通过微软认证

VLC是一款知名的开源播放器,现有的VLC版本完全兼容Windows 8桌面模式,适用于所有Intel架构的PC,但是却没有Modern/Metro版。2012年年底,VideoLAN顺利筹集到资金,并在今年初开始了Modern版...

oschina ⋅ 2013/10/08 ⋅ 31

手把手教你做视频播放器(七)-横屏的播放界面与开放视频播放功能(完)

第8节 横屏的播放界面 在设备旋转成横屏的时候,视频将自动进行全屏播放。 8.1 播放器横屏布局 我们要为全屏播放界面设置一个新的布局,这个布局里面只用来播放视频,不需要显示任何视频信息...

anddlecn ⋅ 2016/05/28 ⋅ 0

vlc发送组播数据

vlc既是一个播放器,又可以成为一个流媒体服务器。最近需要做udp组播播放相关的东西,需要先在本地搭建一个udp组播服务器,因为机器上本来就装有vlc,所以就用它了。 第一步,设置一个视频源...

hnan ⋅ 2016/12/02 ⋅ 0

VLC 关键模块结构分析

VLC 采用的是全模块化结构,在系统内部,动态载入所需的模块,放入一个modulebank的结构体进行统一管理,连VLC的Main模块也是通过插件的方 式动态载入的(通过moduleInitBank函数在初始化建立...

木木情深 ⋅ 2016/03/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构—创建“服务注册中心”

创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-par......

itcloud ⋅ 14分钟前 ⋅ 0

拖动

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>event</title> <style> #box { width: 100px; height: 100px; background-color: aquamarine; position: absolute; } </style......

fyliujj ⋅ 16分钟前 ⋅ 0

es6 polyfill array

polyfill之javascript函数的兼容写法——Array篇 1. Array.isArray(obj) if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[objec......

球球 ⋅ 18分钟前 ⋅ 0

kibana启动异常

检查一下:kibana.yml 每一对key:value中,冒号之后应有空格。

增删改查1 ⋅ 20分钟前 ⋅ 0

js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过...

HaierBrother ⋅ 20分钟前 ⋅ 0

Mysql

1.Jdbc Url 设置allowMultiQueries为true和false mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上* &allowMultiQueries=true *即可。 参数名称 参数说明 缺省...

瑟青豆 ⋅ 24分钟前 ⋅ 0

mysql导出导入表结构与数据

当我们需要进行数据迁移时,mysql自带的mysqldump会是最好的方式。 1.导出某张表的结构和数据 首先,我们应当使用服务器,打开终端,连接到所需要导出的表所在的服务器上。执行命令: mysqld...

hengbao5 ⋅ 24分钟前 ⋅ 0

世界杯也走向“比拼”大数据的时代

《日本经济新闻》6月19日报道称,俄罗斯足球世界杯已于6月14日揭开战幕。作为第21次举办的足球世界杯,如何活用大数据有可能成为决定各支球队胜负的重要因素。从对阵球队的分析到战术建议,还...

加米谷大数据 ⋅ 24分钟前 ⋅ 0

金额转为千分制,金额转中文大写

金额转关为大写 /** 数字金额大写转换(可以处理整数,小数,负数) */ function digitUppercase(n){ if(!n) reutrn "" let fraction = ['角', '分']; let digit = [...

YXMBetter ⋅ 27分钟前 ⋅ 0

开发利器JRebel部署SpringBoot项目

不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你。 idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitter登录 勾选 Build project automati...

郑龙飞 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部