日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg编程查看视频文件信息

發(fā)布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg编程查看视频文件信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

效果如下

執(zhí)行效果打印日志

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、關(guān)閉文件。

一般就是:open --> read --> close三步走。那么在ffmpeg中至少也需要這三步。

Linux中原始讀取文件的小實驗

1、創(chuàng)建一個文件

zh@zh-lpc:~/project/unixapi$ echo "aaaaa三生三世十里桃花123456" > info.txt

2、創(chuàng)建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@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@zh-lpc:~/project/ffmpeg$ ls -l test.mp4 -rwx------ 1 zh zh 5431627 910 23:05 test.mp4 zh@zh-lpc:~/project/ffmpeg$ zh@zh-lpc:~/project/ffmpeg$ ls -l frmi -rwxrwxr-x 1 zh zh 65152 916 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 916 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$

總結(jié)

以上是生活随笔為你收集整理的ffmpeg编程查看视频文件信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。