• EasyAVFilter代码示例之将视频点播文件转码成HLS(m3u8+ts)视频点播格式


    以下是一套完整的视频点播功能开发源码,就简简单单几行代码,就可以完成原来ffmpeg很复杂的视频点播转码调用流程,而且还可以集成在自己的应用程序中调用,例如java、php、cgo、c++、nodejs,不需要再单独一个ffmpeg的进程来调用,方法很简单,这个对比原来用exec调用ffmpeg进程转码,从效率到可控性上都提升了不止10倍,而且代码优秀:

    #include 
    #include 
    #include 
    #include "EasyAVFilterAPI.h"
    
    #ifdef _WIN32
    #pragma comment(lib,"EasyAVFilter.lib")
    #endif
    
    Easy_Handle fRTSPHandle = 0;			
    int Easy_APICALL __AVFilterCallBack(void* userPtr, EASY_AV_FILTER_STATE_T status, int progress, int errCode, const char *errMsg)
    {
    	//各种状态的回调,例如拉流状态/推流状态/转码状态/媒体信息
    	return 0;
    }
    
    int main(int argc, char** argv)
    {
    	// 创建EasyAVFilter实例,相当于创建一个ffmpeg.exe进程
    	Easy_Handle avFilterHandle = NULL;
    	EasyAVFilter_Create(&avFilterHandle);
    
    	// 信息回调
    	EasyAVFilter_SetCallback(avFilterHandle,__AVFilterCallBack,0);
    
    	// 将本地视频文件转成格式化的MP4或者HLS提供点播,参考命令:./ffmpeg.exe -fflags +genpts -hide_banner -i C://temp/La_Isla_Bonita.avi -vcodec copy -acodec aac -ac 2 -strict -2 -f hls -hls_time 16 -hls_list_size 0 C://temp/La_Isla_Bonita.m3u8
    	EasyAVFilter_AddInput(avFilterHandle, "C://temp/La_Isla_Bonita.avi", 1);
    	EasyAVFilter_AddFilter(avFilterHandle, "-fflags +genpts -hide_banner -vcodec copy -acodec aac -ac 2 -strict -2");//设置音视频转码参数
    	EasyAVFilter_AddFilter(avFilterHandle, "-f hls -hls_time 16 -hls_list_size 0");//设置HLS切片参数
    	EasyAVFilter_SetOutput(avFilterHandle, "C://temp/La_Isla_Bonita.m3u8", 0);
    
    	//验证命令
    	char filterCommand[256] = { 0 };
    	EasyAVFilter_GetFilters(avFilterHandle, filterCommand);
    	printf("command: %s\n", filterCommand);
    
    	getchar();
    	EasyAVFilter_Start(avFilterHandle, 0, 8, 10);//注意,文件转码不需要循环读取,第二个参数从1改成0
    
    	getchar();
    	EasyAVFilter_Stop(avFilterHandle);
    	EasyAVFilter_Release(&avFilterHandle);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    以上完整程序工程可在EasyDarwin官网下载到:www.easydarwin.org
    easyavfilter

  • 相关阅读:
    Apache Atlas血缘依赖管理
    【Java面试】请简单说一下你对受检异常和非受检异常的理解
    【2023年11月第四版教材】第16章《采购管理》(第一部分)
    解决postSticky多次收到通知问题
    Android截屏分享之View生成图片进行保存分享、全屏,半屏、指定VIew、弹窗.......
    蓝桥杯-成绩统计[Java]
    如何获取跑腿App源码并定制化你的业务
    泛型的使用案例,以及年月日的定制排序,传入Comparator对象
    Java多线程
    pgsql执行脚本并传参
  • 原文地址:https://blog.csdn.net/xiejiashu/article/details/132757956