标题:Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道
作者:liudianwu
日期:2023-12-03 11:52
内容:
## 一、前言
对各种音视频文件格式的支持,是一个播放器的基础功能。一般的音视频文件只有1路流,比如音频文件只有1路音频流,视频文件只有1路音频1路视频流,实践过程中发现,还有一种ts格式的文件,可能有多路流,这种格式一般是将多路节目流封装到一个文件中,用户可以根据自己的需要切换不同的节目,比如CCTV1、CCTV2都在一个ts流文件中,用户可以选择切换到CCTV1、也可以选择切换到CCTV2,而且音频流和视频流都是分开的索引,也要切换到对应的流这样看起来是音视频一致的,当然也可以选择切换到不同的音频,有些文件是3路视频流外加6路音频流,同时提供了中英双语的音频流,所以在程序的接口中不能写死设置音视频轨道到一个接口,而是应该分别不同的设置都支持,也方便用户切换多语言的音频轨道。
在ffmpeg解码过程中,通过formatCtx->nb_streams可以获取到具体有多少路流,每一路流是音频还是视频,而且都有对应的索引,当用户需要看哪一路的时候,在解码的代码中AVStream *videoStream = formatCtx->stream;传入对应的索引即可,一般来说都是每次播放的只是一路视频,也可以改成同时解码播放多路视频,相当于同时看多个节目。
## 二、效果图
## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_demo。
## 四、功能特点
### 4.1. 基础功能
1. 支持各种音频视频文件格式,比如mp3、wav、mp4、asf、rm、rmvb、mkv等。
2. 支持本地摄像头设备和本地桌面采集,支持多设备和多屏幕。
3. 支持各种视频流格式,比如rtp、rtsp、rtmp、http、udp等。
4. 本地音视频文件和网络音视频文件,自动识别文件长度、播放进度、音量大小、静音状态等。
5. 文件可以指定播放位置、调节音量大小、设置静音状态等。
6. 支持倍速播放文件,可选0.5倍、1.0倍、2.5倍、5.0倍等速度,相当于慢放和快放。
7. 支持开始播放、停止播 ..
#1 [shokokawaii 12-11 22:36]