您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ffmpeg 存流为hls文件

qianbo_insist 发布时间:2021-08-05 06:18:47 ,浏览量:0

hls文件

hls文件的好处是: 1、可以按照时间来分割文件,在上传和下载时拿到小文件 2、小文件可以缓存内存 第二点相对于大文件来说,一个1G的文件不可能缓存到内存里,1个2M的文件很容易缓存到内存

存mp4

mp4文件是可以存的,没有问题,也可以存储fmp4,这个也有很大的好处,存mp4和fmp4这个在另外一篇文章里可以详解。可以把远处的流加上本地的话筒声音等合流存文件。

存hls

存hls是最好的了,缺点是文件因为被拆分而大了

ffmpeg - re - i source.mp4 - codec:v libx264 - codec : a libfaac - map 0 - f hls 
- hls_list_size 6 - hls_wrap 10 - hls_time 10 playlist.m3u8

使用api如下:

int Mp4WrapperLocal::Create(const char *fileName, TFileFormat *param)
{
	Close();
	//video_st.dlen = 0;
	//audio_st.dlen = 0;
	_pts = 0;
	_firstRecordPts = 0;
	_sample_count = 1024; //1024 是默认值,注意后面会自动修改//param->sample_count;
	//audio_st.samples_count = 0;
	videofps = param->fps;

	if (param->m3u8 == 1) {
		avformat_alloc_output_context2(&oc, NULL, "hls", fileName);

		av_opt_set(oc->priv_data, "hls_time", "5", AV_OPT_SEARCH_CHILDREN);
		//av_opt_set(oc->priv_data, "hls_list_size" ,"0" , AV_OPT_SEARCH_CHILDREN);
		av_opt_set(oc->priv_data, "hls_wrap", "5", AV_OPT_SEARCH_CHILDREN);

	}
	else {
		avformat_alloc_output_context2(&oc, NULL, NULL, fileName);
	}


	if (!oc)
		return 1;
...以下省略
关注
打赏
1663161521
查看更多评论
立即登录/注册

微信扫码登录

0.1061s