以下は、ビデオ オン デマンド機能開発ソース コードの完全なセットです。わずか数行のコードで、元の ffmpeg の非常に複雑なビデオ オン デマンド トランスコーディング呼び出しプロセスを完了でき、独自のアプリケーションに統合して呼び出すこともできます。 java、PHP、cgo、c++、nodejs などの ffmpeg プロセスを別個に呼び出す必要がありません。方法は非常に簡単です。元の exec を使用してトランスコード用の ffmpeg プロセスを呼び出すのに比べて、効率と制御性が向上します。 10 倍以上改善されており、コードは優れています。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#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;
}
上記の完全なプログラム エンジニアリングは、EasyDarwin 公式 Web サイトからダウンロードできます: www.easydarwin.org