ffmpeg编程查看视频文件信息
生活随笔
收集整理的這篇文章主要介紹了
ffmpeg编程查看视频文件信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
效果如下
執行效果打印日志
zh@zh-lpc:~/project/ffmpeg$ ./frmi test.mp4 open test.mp4 success.Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41title : BigBuckBunny_115k.movencoder : Lavf58.76.100Duration: 00:05:52.96, bitrate: N/AStream #0:0(und): Video: h264 (avc1 / 0x31637661), none, 240x160, 87 kb/s, 23.88 fps, 24 tbr, 90k tbn (default)Metadata:handler_name : VideoHandlerStream #0:1(und): Audio: aac (mp4a / 0x6134706D), 12000 Hz, 2 channels, 32 kb/s (default)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.txt2、創建C語言編程文件
#include <stdio.h> #include <fcntl.h>#define BUFFSIZE 1024int main() {int ret = 0;FILE *file;char buf[BUFFSIZE];char *fileName = "./info.txt";//open filefile = fopen(fileName,"r");//read filefread(buf, BUFFSIZE+1, 1, file);printf("%s\n", buf);//close filefclose(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:
/*** use ffmpeg codeing read flow file info**/ #include <stdio.h> #include <libavutil/log.h> #include <libavformat/avformat.h>int main(int argc, char *argv[]) {int ret = 0;const char* fileName = "";AVFormatContext *ac = NULL;//set log levelav_log_set_level(AV_LOG_INFO);//diff params = 2 is params != 2if(argc != 2){av_log(NULL,AV_LOG_WARNING,"params not enough. \n\n");return -1;}//file name fileName = argv[1];//open video fileret = avformat_open_input(&ac,fileName,NULL,NULL);//diff open success or errorif(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);//close file flowavformat_close_input(&ac);return 0; }編譯:
gcc -g -o frmi ffmpeg_read_media_info.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavutil執行
zh@zh-lpc:~/project/ffmpeg$ ls -l test.mp4 -rwx------ 1 zh zh 5431627 9月 10 23:05 test.mp4 zh@zh-lpc:~/project/ffmpeg$ zh@zh-lpc:~/project/ffmpeg$ ls -l frmi -rwxrwxr-x 1 zh zh 65152 9月 16 22:00 frmi zh@zh-lpc:~/project/ffmpeg$ zh@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@zh-lpc:~/project/ffmpeg$ zh@zh-lpc:~/project/ffmpeg$ zh@zh-lpc:~/project/ffmpeg$ ./frmi test.mp4 open test.mp4 success.Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41title : BigBuckBunny_115k.movencoder : Lavf58.76.100Duration: 00:05:52.96, bitrate: N/AStream #0:0(und): Video: h264 (avc1 / 0x31637661), none, 240x160, 87 kb/s, 23.88 fps, 24 tbr, 90k tbn (default)Metadata:handler_name : VideoHandlerStream #0:1(und): Audio: aac (mp4a / 0x6134706D), 12000 Hz, 2 channels, 32 kb/s (default)Metadata:handler_name : SoundHandler zh@zh-lpc:~/project/ffmpeg$總結
以上是生活随笔為你收集整理的ffmpeg编程查看视频文件信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软漏洞导致SQL注入威胁
- 下一篇: atomic的实现原理