南翔镇网站建设公司,内容营销包括哪些内容,多个wordpress站点互相,做pc端的网站首页尺寸是多少雷神博客地址#xff1a;https://blog.csdn.net/leixiaohua1020/article/details/39767055 本程序可以将封装格式中的视频码流数据和音频码流数据分离出来。 在该例子中#xff0c; 将FLV的文件分离得到H.264视频码流文件和MP3 音频码流文件。 注意#xff1a; 这个是简化版… 雷神博客地址https://blog.csdn.net/leixiaohua1020/article/details/39767055 本程序可以将封装格式中的视频码流数据和音频码流数据分离出来。 在该例子中 将FLV的文件分离得到H.264视频码流文件和MP3 音频码流文件。 注意 这个是简化版的视音频分离器。与原版的不同在于没有初始化输出视频流和音频流的AVFormatContext。而是直接将解码后的得到的AVPacket中的的数据通过fwrite()写入文件。这样做的好处是流程比 较简单。坏处是对一些格式的视音频码流是不适用的比如说FLV/MP4/MKV等格式中的AAC码流上述封装格式中的AAC的AVPacket中的数据缺失了7字节的ADTS文件头。
视频源码
/*** 最简单的基于FFmpeg的视音频分离器简化版* Simplest FFmpeg Demuxer Simple** 雷霄骅 Lei Xiaohua* leixiaohua1020126.com* 中国传媒大学/数字电视技术* Communication University of China / Digital TV Technology* http://blog.csdn.net/leixiaohua1020** 本程序可以将封装格式中的视频码流数据和音频码流数据分离出来。* 在该例子中 将FLV的文件分离得到H.264视频码流文件和MP3* 音频码流文件。** 注意* 这个是简化版的视音频分离器。与原版的不同在于没有初始化输出* 视频流和音频流的AVFormatContext。而是直接将解码后的得到的* AVPacket中的的数据通过fwrite()写入文件。这样做的好处是流程比* 较简单。坏处是对一些格式的视音频码流是不适用的比如说* FLV/MP4/MKV等格式中的AAC码流上述封装格式中的AAC的AVPacket中* 的数据缺失了7字节的ADTS文件头。* ** This software split a media file (in Container such as * MKV, FLV, AVI...) to video and audio bitstream.* In this example, it demux a FLV file to H.264 bitstream* and MP3 bitstream.* Note:* This is a simple version of Simplest FFmpeg Demuxer. It is * more simple because it doesnt init Output Video/Audio streams* AVFormatContext. It write AVPackets data to files directly.* The advantages of this method is simple. The disadvantages of* this method is its not suitable for some kind of bitstreams. For* example, AAC bitstream in FLV/MP4/MKV Container Format(data in* AVPacket lack of 7 bytes of ADTS header).**/#include stdio.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//1: Use H.264 Bitstream Filter
#define USE_H264BSF 1int main(int argc, char* argv[])
{AVFormatContext *ifmt_ctx NULL;AVPacket pkt;int ret, i;int videoindex-1,audioindex-1;const char *in_filename cuc_ieschool.flv;//Input file URLconst char *out_filename_v cuc_ieschool.h264;//Output file URLconst char *out_filename_a cuc_ieschool.mp3;av_register_all();//Inputif ((ret avformat_open_input(ifmt_ctx, in_filename, 0, 0)) 0) {printf( Could not open input file.);return -1;}if ((ret avformat_find_stream_info(ifmt_ctx, 0)) 0) {printf( Failed to retrieve input stream information);return -1;}videoindex-1;for(i0; iifmt_ctx-nb_streams; i) {if(ifmt_ctx-streams[i]-codec-codec_typeAVMEDIA_TYPE_VIDEO){videoindexi;}else if(ifmt_ctx-streams[i]-codec-codec_typeAVMEDIA_TYPE_AUDIO){audioindexi;}}//Dump Format------------------printf(\nInput Video\n);av_dump_format(ifmt_ctx, 0, in_filename, 0);printf(\n\n);FILE *fp_audiofopen(out_filename_a,wb); FILE *fp_videofopen(out_filename_v,wb); /*FIX: H.264 in some container format (FLV, MP4, MKV etc.) need h264_mp4toannexb bitstream filter (BSF)*Add SPS,PPS in front of IDR frame*Add start code (0,0,0,1) in front of NALUH.264 in some container (MPEG2TS) dont need this BSF.*/
#if USE_H264BSFAVBitStreamFilterContext* h264bsfc av_bitstream_filter_init(h264_mp4toannexb);
#endifwhile(av_read_frame(ifmt_ctx, pkt)0){if(pkt.stream_indexvideoindex){
#if USE_H264BSFav_bitstream_filter_filter(h264bsfc, ifmt_ctx-streams[videoindex]-codec, NULL, pkt.data, pkt.size, pkt.data, pkt.size, 0);
#endifprintf(Write Video Packet. size:%d\tpts:%lld\n,pkt.size,pkt.pts);fwrite(pkt.data,1,pkt.size,fp_video);}else if(pkt.stream_indexaudioindex){/*AAC in some container format (FLV, MP4, MKV etc.) need to add 7 BytesADTS Header in front of AVPacket data manually.Other Audio Codec (MP3...) works well.*/printf(Write Audio Packet. size:%d\tpts:%lld\n,pkt.size,pkt.pts);fwrite(pkt.data,1,pkt.size,fp_audio);}av_free_packet(pkt);}#if USE_H264BSFav_bitstream_filter_close(h264bsfc);
#endiffclose(fp_video);fclose(fp_audio);avformat_close_input(ifmt_ctx);if (ret 0 ret ! AVERROR_EOF) {printf( Error occurred.\n);return -1;}return 0;
}
SourceForgehttps://sourceforge.net/projects/simplestffmpegformat/ 上面链接下载后解压缩在visual Studio直接打开.sln文件直接可以运行
向雷神学习