作者:I_amkaiman | 来源:互联网 | 2023-06-30 14:01
效果如下执行效果打印日志zhzh-lpc:~projectffmpeg$.frmitest.mp4opentest.mp4success.Input#0,mov,mp4,m4a
效果如下
![在这里插入图片描述](https://img8.php1.cn/3cdc5/1307a/882/5713ef22f0cd0aa7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5omL5pKV5Luj56CB5YWr55m-6YeM,size_20,color_FFFFFF,t_70,g_se,x_16)
执行效果打印日志
zh@zh-lpc:~/project/ffmpeg$ ./frmi test.mp4
open test.mp4 success.Input Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41title : BigBuckBunny_115k.movencoder : Lavf58.76.100Duration: 00:05:52.96, bitrate: N/AStream Metadata:handler_name : VideoHandlerStream Metadata:handler_name : SoundHandler
zh@zh-lpc:~/project/ffmpeg$
简单分析
在真正实操之前,我们先来分析一下,我们正常使用C语言读取一个文件都需要哪些步骤:
- 1、打开文件;
- 2、读取文件信息;
- 3、关闭文件。
一般就是:open --> read --> close三步走。那么在ffmpeg中至少也需要这三步。
Linux中原始读取文件的小实验
1、创建一个文件
zh@zh-lpc:~/project/unixapi$ echo "aaaaa三生三世十里桃花123456" > info.txt
2、创建C语言编程文件
#include
#include #define BUFFSIZE 1024int main()
{int ret = 0;FILE *file;char buf[BUFFSIZE];char *fileName = "./info.txt";file = fopen(fileName,"r");fread(buf, BUFFSIZE+1, 1, file);printf("%s\n", buf);fclose(file);return 0;
}
3、编译
zh@zh-lpc:~/project/unixapi$ make unix_file
cc unix_file.c -o unix_file
zh@zh-lpc:~/project/unixapi$
4、执行
zh@zh-lpc:~/project/unixapi$ ./unix_file
aaaaa三生三世十里桃花123456zh@zh-lpc:~/project/unixapi$
ffmpeg读取视频文件信息—代码
ffmpeg_read_media_info.c:
#include
#include
#include int main(int argc, char *argv[])
{int ret &#61; 0;const char* fileName &#61; "";AVFormatContext *ac &#61; NULL;av_log_set_level(AV_LOG_INFO);if(argc !&#61; 2){av_log(NULL,AV_LOG_WARNING,"params not enough. \n\n");return -1;}fileName &#61; argv[1];ret &#61; avformat_open_input(&ac,fileName,NULL,NULL);if(ret < 0){av_log(NULL,AV_LOG_ERROR,"open %s error. \n\n",fileName);return -1;}else{av_log(NULL,AV_LOG_INFO,"open %s success. \n\n",fileName);}av_dump_format(ac,0,fileName,0);avformat_close_input(&ac);return 0;
}
编译&#xff1a;
gcc -g -o frmi ffmpeg_read_media_info.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavutil
执行
zh&#64;zh-lpc:~/project/ffmpeg$ ls -l test.mp4
-rwx------ 1 zh zh 5431627 9月 10 23:05 test.mp4
zh&#64;zh-lpc:~/project/ffmpeg$
zh&#64;zh-lpc:~/project/ffmpeg$ ls -l frmi
-rwxrwxr-x 1 zh zh 65152 9月 16 22:00 frmi
zh&#64;zh-lpc:~/project/ffmpeg$
zh&#64;zh-lpc:~/project/ffmpeg$ ls -l ffmpeg_read_media_info.c
-rwx------ 1 zh zh 955 9月 16 22:02 ffmpeg_read_media_info.c
zh&#64;zh-lpc:~/project/ffmpeg$
zh&#64;zh-lpc:~/project/ffmpeg$
zh&#64;zh-lpc:~/project/ffmpeg$ ./frmi test.mp4
open test.mp4 success.Input Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41title : BigBuckBunny_115k.movencoder : Lavf58.76.100Duration: 00:05:52.96, bitrate: N/AStream Metadata:handler_name : VideoHandlerStream Metadata:handler_name : SoundHandler
zh&#64;zh-lpc:~/project/ffmpeg$