基于FFmpeg的视频播放器之十六:完结

Posted 草上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于FFmpeg的视频播放器之十六:完结相关的知识,希望对你有一定的参考价值。

学习FFmpeg个人认为是不需要买书的,只需利用好下面四种资源
1.优秀的博客,比如雷神的博客:https://blog.csdn.net/leixiaohua1020
2.FFmppeg的exanmples:FFmpeg: Examples
3.优秀的开源播放器,比如VLC、MPlayer、MVP、QtAV等
4.FFmpeg的源码
当然最重要的是自己要尝试用FFmpeg去做一个基本功能完整的播放器,以做带学。如果身边有老鸟、大神相助就再好不过了。
博主本人喜欢听歌,播放器做好后,就试了试mp3和wav,都可以正常播放,然后再找来个ape,却不能正常播放,这时候只能去查找ape播放失败的原因,原来是因为ape格式音频几个frame仅有一个有效时间戳,所以需要给无时间戳的frame计算时间戳。这就是一个以做带学的真实案例。
如果想使音频播放界面更加酷炫,可以添加音频频谱,详见:
Qt之调用FFTW3实现音频频谱(原理)
Qt之调用FFTW3实现音频频谱(实现)
FFmpeg4都发布四年多了,现在学当然是从FFmpeg4开始,网上大多数资料都是几年前的,用到了很多FFmpeg4中已经废弃的函数,按照网上的教程来写代码会遇到各种问题,所以本专栏应运而生,用比较新的API来实现一些常用的功能。
播放器做好了之后,需要找一些音视频文件来测试其解码能力,https://samples.mplayerhq.hu是一个不错的选择,samples.mplayerhq.hu站点上的文件就是大名鼎鼎MPlayer提供的用来测试MPlayer解码能力的测试样本,里面各种格式的文件都有,并且每个文件都不太大,用来测试我们的程序最合适不过了。
FFmpeg自带的ffprobe可以非常有用的流媒体分析工具,使用ffprobe可以查看流媒体中包含的容器,以及容器中包含的流媒体的格式和类型,可用于辅助代码调试。当然通过下述代码也可以打印流媒体信息,与使用ffprobe得到的结果是一样的。

int main()

    const char *fileName = "C:\\\\Users\\\\zhang\\\\Videos\\\\west.mp4";
    AVFormatContext *formatCtx = avformat_alloc_context();
    avformat_open_input(&formatCtx, fileName, nullptr, nullptr);
    avformat_find_stream_info(formatCtx, nullptr);
    av_dump_format(formatCtx, 0, fileName, 0);
    avformat_close_input(&formatCtx);
    avformat_free_context(formatCtx);

原文链接:https://blog.csdn.net/caoshangpa/article/details/124989139

以上是关于基于FFmpeg的视频播放器之十六:完结的主要内容,如果未能解决你的问题,请参考以下文章

基于FFmpeg的视频播放器之十四:remuxing

基于FFmpeg的视频播放器之十五:录像

基于FFmpeg的视频播放器之十二:seek

基于FFmpeg的视频播放器之十三:抓图

基于FFmpeg的视频播放器之十一:倍速播放

基于libVLC的视频播放器之十五:添加播放列表