VLC在播放媒体文件时设置字幕字符串左右晃动是什么原因?

everything_at_once 2016-05-25 05:01:12
具体情况是:
我在播放媒体文件的时候,调用了设置字幕函数,每隔10ms执行一次,显示在视频左上角。
问题是:
在播放时设置的字幕字符串是显示出来了,但是会左右晃动(字符串的长度没有变),尤其是在倍速播放的时候更明显。
大家遇到过这个问题么?是什么原因造成的?

下面是设置字幕的代码,这个调用有什么问题么?
libvlc_video_set_marquee_string(m_vlc_media_player, libvlc_marquee_Text, utf8_str);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Position, 5);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Opacity,300);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Refresh,1);
libvlc_video_set_marquee_int(m_vlc_media_player,libvlc_marquee_X,10);
libvlc_video_set_marquee_int(m_vlc_media_player,libvlc_marquee_Y,10);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Timeout,1000);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Size, 32);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Enable, 1);
...全文
337 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
milinxiao 2018-06-21
  • 打赏
  • 举报
回复
楼主,你好,我用下面的代码,没有显示出字幕,是什么原因,麻烦请给答复一下,谢谢
libvlc_video_set_marquee_string(m_vlc_media_player, libvlc_marquee_Text, utf8_str);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Position, 5);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Opacity,300);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Refresh,1);
libvlc_video_set_marquee_int(m_vlc_media_player,libvlc_marquee_X,10);
libvlc_video_set_marquee_int(m_vlc_media_player,libvlc_marquee_Y,10);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Timeout,1000);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Size, 32);
libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Enable, 1);
赵4老师 2016-05-26
  • 打赏
  • 举报
回复
帮结帖+蹭分 也许只是因为你正播放的视频在拍摄时摄像头有些左右晃动,然后你在看这段视频的时候,以左右晃动的视频内容为静止参照系,观察实际像素坐标相对屏幕不动的字幕文字,在你大脑中最后的映像是字幕左右晃动。
everything_at_once 2016-05-26
  • 打赏
  • 举报
回复
大家踊跃回复吧,我把分平均一下,就结帖了。
everything_at_once 2016-05-26
  • 打赏
  • 举报
回复
由于比较紧急,暂时的解决方法是: 修改刷新时间和超时时间(单位ms)都为很短 libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Refresh,2); libvlc_video_set_marquee_int(m_vlc_media_player, libvlc_marquee_Timeout,2); 经过测试,8倍速播放也不会出现字幕左右晃动(变窄变宽)的情况,但是会有字幕闪烁得情况,倍速越高越明显,但较之前已经有了明显的改善。 要根本解决问题,还是要研究下源码。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧