欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > ffmpeg-avio实战:打开本地文件或者网络直播流dome

ffmpeg-avio实战:打开本地文件或者网络直播流dome

2025/2/24 3:35:05 来源:https://blog.csdn.net/weixin_49529507/article/details/144990209  浏览:    关键词:ffmpeg-avio实战:打开本地文件或者网络直播流dome

        使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客

        

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>  
#include <libavformat/avio.h>
#include <libavutil/file.h>
#include <libavutil/dict.h>
#include <stdio.h>
#include <libavutil/error.h>int main()
{const char* url = "/home/yth/ffmpeg_text/videos/elon.mp4";int err = -1;//1.av_register_all();avformat_network_init(); //初始化网络相关的功能,用于处理网络的流媒体printf("hello ffmpeg\n");AVFormatContext* pFormatCtx = NULL; //用于存储媒体文件或流的信息AVInputFormat* piFmt = NULL; //指向输入格式的指针,用于指定打开文件时的格式    printf("helloc, avformat_alloc_context\n");if((pFormatCtx = avformat_alloc_context()) == NULL) //为pFormatCtx分配内存{printf("fail avformat_alloc_context()\n");goto avformat_alloc_context_err;}pFormatCtx->probesize = 5000000;pFormatCtx->max_analyze_duration  = 5000000;//2.printf("打开媒体流\n");//打开本地文件或网络流直播流//替换为实际的rtsp地址 或在文件路径//rtsp地址: rtsp://127.0.0.1:8554/rtsp1//本地文件: ./ymx.mp4err = avformat_open_input(&pFormatCtx, url,  NULL, NULL);if(err < 0){char errbuf[AV_ERROR_MAX_STRING_SIZE];av_strerror(err, errbuf, sizeof(errbuf));fprintf(stderr,"fail avformat_open_input:%s\n",errbuf );goto avformat_open_input_err;}else{printf("open stream success\n"); //成功打开}//3.err = avformat_find_stream_info(pFormatCtx, NULL); //获取流的信息,填充pFormatCtxif(err < 0 ){printf("fail avformat_find_stream_info\n");goto avformat_find_stream_info_err;}else{printf("open stream success\n"); //获取流信息成功printf("有n路流 = %d\n", pFormatCtx->nb_streams);}avformat_find_stream_info_err:avformat_close_input(&pFormatCtx); //关闭输入文件或流
avformat_open_input_err:avformat_network_deinit(); //取消网络流库的初始化
avformat_alloc_context_err:return err;}

        如果是本地文件没有使用 av_register_all(); 打开媒体文件失败,打印失败原因。比如,如果上面没有调用函数av_register_all,则会打印“XXX failed!:Invaliddata found when processing input”.   

        这是代码的实现,我们来执行一下,配合其他工具看看打开的视频流消息是不是对的。

        两路流是正确的。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词