FFMPEG h264 ACC 合成 mkv ts;h264 mp3 合成 MP4 avi flv
#include <stdio.h>
#include <cstdio>
#include <conio.h>
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32 //Windows
extern "C" {
#include "libavformat/avformat.h"
};
#else //Linux...
#ifdef __cplusplus
extern "C" {
#endif
#include <libavformat/avformat.h>
#ifdef __cplusplus
};
#endif
#endif
/*
#define errReport(info, val) do{ \
fprintf(stderr, "ERR:: %s %s(line=%d) code=%d\n", __FUNCTION__, info, __LINE__, val); \
getchar(); exit(0); \
}while (0);
*/
typedef struct {
AVFormatContext *ifmt_ctx;
int stream_index = 0;
AVStream *in_stream, *out_stream;
}data_t;
AVOutputFormat *ofmt = NULL;
AVFormatContext *ifmt_ctx_v = NULL, *ifmt_ctx_a = NULL, *ofmt_ctx = NULL;
AVPacket pkt;
int videoindex_v = -1, videoindex_out = -1;
int audioindex_a = -1, audioindex_out = -1;
int frame_index = 0;
int64_t cur_pts_v = 0, cur_pts_a = 0;
#if 0
const char *in_filename_v = "input.h264";
const char *in_filename_a = "input.aac";
#if 1
const char *out_filename = "output.mkv";
#else
const char *out_filename = "output.ts";
#endif
#else
const char *in_filename_v = "input.h264";
const char *in_filename_a = "input.mp3";
#if 0
const char *out_filename = "output.mp4";
#elif 1
const char *out_filename = "output.flv";
#else
const char *out_filename