使用libVLC开发的一个简单的图形界面的视频播放器。

程序主要运行代码如下:

void CplayerGUIDlg::OnBnClickedStart()
{CStringW cstr_url;#ifdef _UNICODEm_url.GetWindowText(cstr_url);
#elseUSES_CONVERSION;CStringA cstr_urla;m_url.GetWindowText(cstr_urla);cstr_url.Format(L"%s",A2W(cstr_urla));
#endifstd::string str_url;UNICODE_to_UTF8(cstr_url, str_url);const char *char_url=str_url.c_str();if(strcmp(char_url,"")==0){AfxMessageBox(_T("Input URL is NULL!"));return;}HWND screen_hwnd=NULL;screen_hwnd = this->GetDlgItem(IDC_SCREEN)->m_hWnd; if(playerstate!=STATE_PREPARE){AfxMessageBox(_T("Media is playing now."));return;}/* Create a new item *///m = libvlc_media_new_location (libvlc_inst, "http://mycool.movie.com/test.mov");libvlc_m = libvlc_media_new_path (libvlc_inst, char_url);/* Create a media player playing environement */libvlc_media_add_option(libvlc_m, "--avcodec-threads=124");libvlc_media_add_option(libvlc_m, "--network-caching=500");libvlc_media_add_option(libvlc_m, "--rtsp-frame-buffer-size=1000000");libvlc_media_add_option(libvlc_m, "--rtsp-tcp");libvlc_media_add_option(libvlc_m, "--advanced");libvlc_mp = libvlc_media_player_new_from_media (libvlc_m);/* No need to keep the media now */libvlc_media_release (libvlc_m);//on windowslibvlc_media_player_set_hwnd (libvlc_mp,screen_hwnd);/* play the media_player */int x=libvlc_media_player_play (libvlc_mp);m_play_duration = libvlc_media_player_get_length(libvlc_mp);//s _sleep (3000); /* Let it play a bit *//* AVOutputFormat *ofmt = NULL;//Input AVFormatContext and Output AVFormatContextAVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;AVPacket pkt;const char *in_filename, *out_filename;int ret, i;int videoindex = -1;int frame_index = 0;int64_t start_time = 0;in_filename = char_url;if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) {printf("Could not open input file.");}for (i = 0; i<ifmt_ctx->nb_streams; i++)if (ifmt_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO){videoindex = i;break;}if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {printf("Failed to retrieve input stream information");}av_dump_format(ifmt_ctx, 0, in_filename, 0);AVStream *videoStream = ifmt_ctx->streams[videoindex];m_play_duration = (int64_t)(videoStream->duration / AV_TIME_BASE)*-1;//secs = duration / AV_TIME_BASE;// us = duration % AV_TIME_BASE;avformat_close_input(&ifmt_ctx);*/playerstate=STATE_PLAY;SetBtn(STATE_PLAY);SetTimer(1,1000,NULL);
}

运行界面如下:

下面简要列出vlc参数用法

下面列出的参数可以在命令行中执行,也可以在VLC界面中填写。当然,更重要的是能在 
程序中调用。 
程序中调用的时候要注意,什么是全局参数,什么是会话参数。例如: 
RTP over TCP的选项,必须用冒号。用双减号则没有效果。 
正确写法:libvlc_media_add_option(m_media, “:rtsp-tcp”); 
错误写法:libvlc_media_add_option(m_media, “–rtsp-tcp”);

Usage: vlc [options] [stream] … 
You can specify multiple streams on the commandline. They will be enqueued in the playlist. 
The first item specified will be played first. 
Options-styles: 
–option A global option that is set for the duration of the program. 
-option A single letter version of a global –option. 
:option An option that only applies to the stream directly before it 
and that overrides previous settings. 
Stream MRL syntax: 
[[access][/demux]://]URL[@[title][:chapter][-[title][:chapter]]] [:option=value …] 
Many of the global –options can also be used as MRL specific :options. 
Multiple :option=value pairs can be specified. 
URL syntax: 
[file://]filename Plain media file 
http://ip:port/file HTTP URL 
ftp://ip:port/file FTP URL 
mms://ip:port/file MMS URL 
screen:// Screen capture 
[dvd://][device][@raw_device] DVD device 
[vcd://][device] VCD device 
[cdda://][device] Audio CD device 
udp://[[]@[][:]] 
UDP stream sent by a streaming server 
vlc://pause: Special item to pause the playlist for a certain time 
vlc://quit Special item to quit VLC 
未找到匹配的模块。使用 –list 或 –list-verbose 来列出可用模块。 
VBI 和 Teletext 解码器 
–vbi-page=<整数> Teletext 页 
打开可能的 Teletext 页。默认的页是索引 100 
–vbi-opaque, –no-vbi-opaque 
文本总是不透明 (默认开启) 
设置 vbi 不透明为否使得边框话的文本透明。 
(默认开启) 
–vbi-position={0 (居中), 1 (左), 2 (右), 4 (上), 8 (下), 5 (左上), 6 (右上), 9 (左下), 10 (右下)} 
Teletext 排列 
您可以强制指定 teletext 在视频上的位置 (0=居中、1=左 
、2=右、4=上、8=下,您也可以混合使用这些值,例如 
6 = 右上)。 
–vbi-text, –no-vbi-text Teletext 文本字幕 (默认关闭) 
将 teletext 字幕作为文本输出代替 RGBA (默认关闭) 
YUV 视频输出 
–yuv-file=<字串> 设备,先进先出队列或文件名 
写入 YUV 帧的目的设备、FIFO 队列或文件名。 
–yuv-chroma=<字串> 使用了色度 
强制为输出使用指定的色度。默认是 I420。 
–yuv-yuv4mpeg2, –no-yuv-yuv4mpeg2 
YUV4MPEG2 头部 (默认关闭) (默认关闭) 
mplayer yuv 视频输出兼容 YUV4MPEG2 头,要求 fourcc 为 
YV12/I420。vlc 默认将帧的 fourcc 写入输出处。 
(默认关闭) 
H.264/MPEG4 AVC 编码器 (x264) 
–sout-x264-keyint=<整数> 
最大 GOP 大小 
设置 IDR 帧之间的最大间隔。较大的帧将节省大小,巍 
¶改进在给予为率下的搜索精确性质量。 
–sout-x264-min-keyint=<整数> 
最小 GOP 大小 
设置 IDR 帧之间的最小间隔。在 H.264 中 I 帧没有必要勊 »‘定一个封闭的 GOP,因为它允许在它之前预测更多的㋊ ¸§ (也可以查看参考帧选项)。因此 I 帧没有搜索的必褍 
。IDR 帧将从任意参考帧之前限制之后的 P 
帧。 
如果场景出现在此间隔内,它们还是将会被编码 
为 I 帧,但是不启动一个新的 GOP。 
–sout-x264-scenecut=<整数 [-1 .. 100]>

程序中设置参数的两种方法

1.

const char *vlc_args[] ={"--network-caching=500","--rtsp-frame-buffer-size=1000000","--rtsp-tcp","--avcodec-threads=124","--advanced",};//libvlc_media_add_option()libvlc_inst = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

初始化libvlc_instance_t *对象时传入相应的参数

2

  libvlc_m = libvlc_media_new_path (libvlc_inst, char_url);/* Create a media player playing environement */libvlc_media_add_option(libvlc_m, "--avcodec-threads=124");libvlc_media_add_option(libvlc_m, "--network-caching=500");libvlc_media_add_option(libvlc_m, "--rtsp-frame-buffer-size=1000000");libvlc_media_add_option(libvlc_m, "--rtsp-tcp");libvlc_media_add_option(libvlc_m, "--advanced");

程序调用时设置libvlc_media_t *对象 libvlc_m的参数值

工程CDSN下载地址:https://download.csdn.net/download/tigerxuchuanli/10332399

基于libVLC的参数设置可视化视频播放器相关推荐

  1. 基于uni-app开发的一款视频播放器插件

    yy-video-player 基于uni-app开发的一款视频播放器插件,开箱即用,具有视频下载,页面返回,弹幕,进度条等功能. 插件地址:https://ext.dcloud.net.cn/plu ...

  2. 基于QtAv及ffmpeg开发的视频播放器

    基于QtAv及ffmpeg开发的视频播放器 主要功能: 本地媒体文件播放,支持切换上一个下一个文件,暂停/恢复,快放/慢放,音量控制 全屏/取消全屏 播放列表,列表缩略图 播放进度,进度条展示缩略图 ...

  3. 基于Qt、FFMpeg的音视频播放器设计一

    前言:整个项目的源代码 https://download.csdn.net/download/hfuu1504011020/10672140 最近刚完成基于Qt.FFMpeg的音视频播放器相关C++程 ...

  4. Qt精美应用程序界面设计,多功能(包含基于sql数据库的音乐、视频播放器、相册,串口、网络调试助手、游戏、天气查询等功能)

    去年寒假疫情,我在家闲着没事,自制了一个由Qt Creator开发的精美多功能程序软件,功能包含音乐播放器.视频播放器.天气查询.串口调试助手.相册.网络调试助手.小游戏等,主界面如下图所示: 界面展 ...

  5. 粤嵌GEC6818,基于LVGL和mplayer的音视频播放器

    #include <myplay.h> pthread_mutex_t mutex_lv;//lvgl线程锁 static char local_music_path[]="/t ...

  6. [ROS]动态参数设置-可视化调试-创建cfg文件

    用途:调试时(尤其在导航和建图应用中)需要经常修改程序中的参数值,这时无论时修改命令行,还是编写固定修改参数的可执行文件,都无法满足要求.ROS为我们提供了动态参数设置机制. 一.创建cfg文件 创建 ...

  7. 基于Qt、FFMpeg的音视频播放器设计四(视频播放进度控制)

    上面介绍了如何使用opengl绘制视频和Qt的界面设计,也比较简单,现在我们看下如何控制视频播放及进度的控制,内容主要分为以下几个部分 1.创建解码线程控制播放速度 2.通过Qt打开外部视频 3.视频 ...

  8. 基于libvlc和wxWidgets的简单播放器代码阅读

    源代码来自 http://git.videolan.org/?p=vlc.git;a=blob_plain;f=doc/libvlc/wx_player.cpp // g++ wx_player.cp ...

  9. 【Windows Esp32】基于 libjpeg-9e 编解码库的视频播放器

    目录 一.音视频基础 1.1.图像编码 1.2.视频编码 1.3.AVI 文件结构 二.TF卡基础 三.Windows上播放音视频 3.1.在 Windows 下使用 vs2019 编译 libjpe ...

最新文章

  1. Thymeleaf 入门
  2. 延迟分析中的案例研究:锁定与同步
  3. 使用BIND安装智能DNS服务器(一)---基本的主从DNS服务器搭建
  4. docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像
  5. MySQL学习笔记_6_SQL语言的设计与编写(下)
  6. 顶点计划 班委问题讨论
  7. 耶鲁博弈论 第2节 学会换位思考
  8. 分享WEB快速开发工具
  9. Python运行报错most recent call last
  10. python之股票数据分析
  11. Python制作个性二维码
  12. 单因子方差分析Python实现(小鸡增肥)
  13. VUE项目SEO问题的解决
  14. 怎么点亮段码屏_段码LCD液晶屏驱动方法
  15. 您的Goole帐号已被暂时停用您的帐号违反了“规避系统”政策。
  16. 配置数据源的三种方法
  17. python基础九 函数(中)作用域、命名空间、递归函数
  18. [MICCAI2019]Multi-view Learning with Feature Level Fusion for Cervical Dysplasia Diagnosis
  19. OA系统,企业信息化建设的“理想”办公管理工具
  20. wemall app商城源码Android之支付宝接口RSA函数

热门文章

  1. CC3200 调试记录——XDCtools版本导致的编译不过
  2. 21、ZigBee 开发教程之基础篇—继电器模块
  3. 树莓派 mysql门禁_构建Raspberry Pi,MySQL,RFID和指纹传感器的门禁系统
  4. JAVA程序设计课程考试试卷专升本考研期末考试真题参考题目(二)
  5. qt读取数据库数据并验证_QT快速读取显示SQLite3数据库数据
  6. KTDictSeg 1.4 版本功能介绍 - 多元分词
  7. librosa 音频处理
  8. 分享一个磁力下载工具
  9. HttpWebRequest FileStream分块读取和写入文件WebClient
  10. python 视频抽帧_FFmpeg视频抽帧那些事