C#用VLC “全屏” 播放视频
C#用VLC “全屏” 播放视频
天体图 发表于5个月前
C#用VLC “全屏” 播放视频
  • 发表于 5个月前
  • 阅读 34
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 本文记录我再工作中遇到需要不按视频原比例播放视频文件时,所遇到的问题和解决的办法

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

用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回调,调试之后才发现的。

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

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

标签: VLC 比例 缩放 全屏
共有 人打赏支持
粉丝 17
博文 4
码字总数 4217
×
天体图
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: