博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用vlc SDK创建一个播放视频文件和RTSP流视频的Demo
阅读量:6331 次
发布时间:2019-06-22

本文共 3431 字,大约阅读时间需要 11 分钟。

1 #include 
2 #include
3 #include
4 #include
5 6 #include
7 #pragma comment(lib, "libvlc.lib") 8 #pragma comment(lib, "libvlccore.lib") 9 10 int main(int argc, char* argv[])11 {12 libvlc_instance_t * vlc_ins = NULL;13 libvlc_media_player_t * vlc_player = NULL;14 libvlc_media_t * vlc_media = NULL;15 16 //创建一个vlc实例17 vlc_ins = libvlc_new(0,NULL);18 19 if (vlc_ins != NULL)20 {21 //从实例上创建一个VLC播放器供视频播放22 vlc_player = libvlc_media_player_new(vlc_ins);23 24 if (vlc_player != NULL)25 {26 //打开一个RTSP流地址,通过地址创建一个媒体实例27 vlc_media = libvlc_media_new_location(vlc_ins, "rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp");28 29 30 //打开一个视频文件,通过文件创建一个媒体实例31 //vlc_media = libvlc_media_new_path(vlc_ins, "D:\\Youku Files\\transcode\\test.avi");32 33 if (vlc_media != NULL)34 {35 // 解析媒体实例36 libvlc_media_parse(vlc_media);37 // 获取媒体文件的播放长度, 返回 ms38 libvlc_time_t duration = libvlc_media_get_duration(vlc_media);39 40 // 此处是获取媒体包含多个的视频和音频轨以及其他类型的轨道信息41 libvlc_media_track_info_t *media_tracks = NULL;42 int trackCount = libvlc_media_get_tracks_info(vlc_media, &media_tracks);43 // 这里是释放内存,但我测试的时候会有问题,还没仔细研究是为何44 // free(media_tracks); // crash?45 46 // 把打开的媒体文件设置给播放器47 libvlc_media_player_set_media(vlc_player, vlc_media);48 49 // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口,这里就直接使用桌面窗口,这里仅是测试50 libvlc_media_player_set_hwnd(vlc_player, ::GetDesktopWindow());51 // 开始播放视频52 libvlc_media_player_play(vlc_player);53 54 // 这里仅是为了打印一些信息出来,100000秒后退出55 time_t last_time = time(NULL);56 while ((time(NULL) < (last_time + 100000)))57 {58 Sleep(10);59 // 获取当前播放位置60 libvlc_time_t play_time = libvlc_media_player_get_time(vlc_player);61 printf("playing time : %lld ms\r", (__int64)(play_time));62 63 // 获取媒体的状态64 // libvlc_state_t media_state = libvlc_media_get_state(vlc_media);65 // printf("\nmedia state : %d\n", (int)(media_state));66 }67 // 停止68 libvlc_media_player_stop(vlc_player);69 // 释放70 libvlc_media_release(vlc_media);71 }72 73 libvlc_media_player_release(vlc_player);74 75 }76 77 libvlc_release(vlc_ins);78 }79 return 0;80 }

 

 因为是建立了控制台的程序,播放RTSP流的时候控制台上打印出来了core input  error: ES_OUT_RESET_PCR called。

播放本地AVI的时候,控制台上打印出来了core vout display error: Failed to set on top  

 

google了一下,没什么问题,第一个错误消息,可能是网络上的流有什么冲突之类的。第二个错误也不是什么问题。

 

 

references:

http://www.bubuko.com/infodetail-782716.html

http://blog.csdn.net/sno_guo/article/details/22388233

 http://stackoverflow.com/questions/31636150/vlclib-error-es-out-reset-pcr

http://blog.csdn.net/friendan/article/details/45773629

 http://blog.chinaunix.net/uid-26611383-id-3789962.html

https://github.com/kevin-shanghai/Strong_RTSP_Player

你可能感兴趣的文章
创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
查看>>
Adobe驳斥Flash过度耗电论 称HTML5更耗电
查看>>
No!No!No! It's not fashion!
查看>>
艰困之道中学到的经验教训
查看>>
互联网生态建设落地五大挑战——保险科技生态建设 ...
查看>>
进行短视频app开发工作时,可以加入它来保护青少年 ...
查看>>
25G DAC无源高速线缆和25G光模块之间的区别
查看>>
乐乐茶完成近2亿元Pre-A轮融资,祥峰投资领投
查看>>
clickhouse修改时区
查看>>
CSS_定位
查看>>
第二十四章:页面导航(六)
查看>>
百度、长沙加码自动驾驶,湖南阿波罗智行科技公司成立 ...
查看>>
Java面试笔试题大汇总一(最全+详细答案)
查看>>
10 个 Linux 中方便的 Bash 别名
查看>>
[Server] 服务器配置SSH登录邮件通知
查看>>
全新 DOCKER PALS 计划上线,带给您不一样的参会体验! ...
查看>>
Android开发之自定义View(二)
查看>>
python爬虫之微打赏(scrapy版)
查看>>
自制操作系统Antz day08——实现内核 (中) 扩展内核
查看>>
poj-1056-IMMEDIATE DECODABILITY(字典)
查看>>