代码实现
#include <thread>
#include <iostream>
#include <fstream>
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
int mp4toannexb(AVBSFContext* bsf_ctx, AVPacket *pkt, std::ofstream& out)
{
int ret;
ret = av_bsf_send_packet(bsf_ctx, pkt);
if (ret < 0) {
std::cout << "bsf send packet failed, errno:" << ret << std::endl;
return -1;
}
for(;;) {
ret = av_bsf_receive_packet(bsf_ctx, pkt);
if (AVERROR_EOF == ret || AVERROR(EAGAIN) == ret) {
return 0;
}
if (ret < 0) {
std::cout << "Could not receive packet, errno:" << ret << std::endl;
return -1;
}
out.write((const char*)pkt->data, pkt->size);
}
return 0;
}
int find_sample_index(int samplerate)
{
const int adts_sample_rates[16] = {
96000,
88200,
6