基于libVLC的参数设置可视化视频播放器
使用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的参数设置可视化视频播放器相关推荐
- 基于uni-app开发的一款视频播放器插件
yy-video-player 基于uni-app开发的一款视频播放器插件,开箱即用,具有视频下载,页面返回,弹幕,进度条等功能. 插件地址:https://ext.dcloud.net.cn/plu ...
- 基于QtAv及ffmpeg开发的视频播放器
基于QtAv及ffmpeg开发的视频播放器 主要功能: 本地媒体文件播放,支持切换上一个下一个文件,暂停/恢复,快放/慢放,音量控制 全屏/取消全屏 播放列表,列表缩略图 播放进度,进度条展示缩略图 ...
- 基于Qt、FFMpeg的音视频播放器设计一
前言:整个项目的源代码 https://download.csdn.net/download/hfuu1504011020/10672140 最近刚完成基于Qt.FFMpeg的音视频播放器相关C++程 ...
- Qt精美应用程序界面设计,多功能(包含基于sql数据库的音乐、视频播放器、相册,串口、网络调试助手、游戏、天气查询等功能)
去年寒假疫情,我在家闲着没事,自制了一个由Qt Creator开发的精美多功能程序软件,功能包含音乐播放器.视频播放器.天气查询.串口调试助手.相册.网络调试助手.小游戏等,主界面如下图所示: 界面展 ...
- 粤嵌GEC6818,基于LVGL和mplayer的音视频播放器
#include <myplay.h> pthread_mutex_t mutex_lv;//lvgl线程锁 static char local_music_path[]="/t ...
- [ROS]动态参数设置-可视化调试-创建cfg文件
用途:调试时(尤其在导航和建图应用中)需要经常修改程序中的参数值,这时无论时修改命令行,还是编写固定修改参数的可执行文件,都无法满足要求.ROS为我们提供了动态参数设置机制. 一.创建cfg文件 创建 ...
- 基于Qt、FFMpeg的音视频播放器设计四(视频播放进度控制)
上面介绍了如何使用opengl绘制视频和Qt的界面设计,也比较简单,现在我们看下如何控制视频播放及进度的控制,内容主要分为以下几个部分 1.创建解码线程控制播放速度 2.通过Qt打开外部视频 3.视频 ...
- 基于libvlc和wxWidgets的简单播放器代码阅读
源代码来自 http://git.videolan.org/?p=vlc.git;a=blob_plain;f=doc/libvlc/wx_player.cpp // g++ wx_player.cp ...
- 【Windows Esp32】基于 libjpeg-9e 编解码库的视频播放器
目录 一.音视频基础 1.1.图像编码 1.2.视频编码 1.3.AVI 文件结构 二.TF卡基础 三.Windows上播放音视频 3.1.在 Windows 下使用 vs2019 编译 libjpe ...
最新文章
- Thymeleaf 入门
- 延迟分析中的案例研究:锁定与同步
- 使用BIND安装智能DNS服务器(一)---基本的主从DNS服务器搭建
- docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像
- MySQL学习笔记_6_SQL语言的设计与编写(下)
- 顶点计划 班委问题讨论
- 耶鲁博弈论 第2节 学会换位思考
- 分享WEB快速开发工具
- Python运行报错most recent call last
- python之股票数据分析
- Python制作个性二维码
- 单因子方差分析Python实现(小鸡增肥)
- VUE项目SEO问题的解决
- 怎么点亮段码屏_段码LCD液晶屏驱动方法
- 您的Goole帐号已被暂时停用您的帐号违反了“规避系统”政策。
- 配置数据源的三种方法
- python基础九 函数(中)作用域、命名空间、递归函数
- [MICCAI2019]Multi-view Learning with Feature Level Fusion for Cervical Dysplasia Diagnosis
- OA系统,企业信息化建设的“理想”办公管理工具
- wemall app商城源码Android之支付宝接口RSA函数
热门文章
- CC3200 调试记录——XDCtools版本导致的编译不过
- 21、ZigBee 开发教程之基础篇—继电器模块
- 树莓派 mysql门禁_构建Raspberry Pi,MySQL,RFID和指纹传感器的门禁系统
- JAVA程序设计课程考试试卷专升本考研期末考试真题参考题目(二)
- qt读取数据库数据并验证_QT快速读取显示SQLite3数据库数据
- KTDictSeg 1.4 版本功能介绍 - 多元分词
- librosa 音频处理
- 分享一个磁力下载工具
- HttpWebRequest FileStream分块读取和写入文件WebClient
- python 视频抽帧_FFmpeg视频抽帧那些事