文档章节

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

天体图
 天体图
发布于 2017/08/02 16:46
字数 522
阅读 64
收藏 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开发之视频播放

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

feng_blog
2015/08/31
278
1
VLC 0.9.9发布,1.0版蓄势待发

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

红薯
2009/04/05
917
0
Mac 版 VLC 3.0 预览版发布:支持 360 度视频

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

两味真火
2016/11/27
3.2K
8
用VLC做流媒体服务器

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

yizhichao
2016/09/18
47
0
C语言基于GTK+Libvlc实现的简易视频播放器

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

实验楼
2014/12/22
0
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
15
4
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部