FFmpeg学习笔记-YUV转TS过程(初学者)

思路说明:1、经过两天在网上在搜索学习,让我一个FFmpeg小白完成了YUV转TS的过程。2、主要思路是:yuv->.h264->mp4->ts3、至于为什么需要经过那么多转换才能得到TS。我目前也无法解释的清楚,我只知道yuv无法直接转到ts必须通过中间的编译(.H264)才行,具体的请看雷神教学。本人也照着学习而已。4、至于为什么不能从(.H264直接转TS)应该我尝试了很多...
摘要由CSDN通过智能技术生成

思路说明:

1、经过两天在网上在搜索学习,让我一个FFmpeg小白完成了YUV转TS的过程。

2、主要思路是:yuv->.h264->mp4->ts

3、至于为什么需要经过那么多转换才能得到TS。我目前也无法解释的清楚,我只知道yuv无法直接转到ts必须通过中间的编译(.H264)才行,具体的请看雷神教学。本人也照着学习而已。

4、至于为什么不能从(.H264直接转TS)应该我尝试了很多次都失败就换个蠢的办法,如有大神有成功案例请不要吝啬贡献出来。

步骤:

准备工作:

1、给自己的IDE配置FFmpeg环境,我用的是VS2017.网上教程很多,自己百度。

2、准备好需要转换的YUV文件(src01_hrc00_576x324_cut_30_2M.yuv)

3、yuv转.H264代码

#include "stdafx.h"
#include <stdio.h>


#define __STDC_CONSTANT_MACROS


#ifdef _WIN32
//Windows
extern "C"
{
#include "libavutil/opt.h"
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
};
#else
//Linux...
#ifdef __cplusplus
extern "C"
{
#endif
#include <libavutil/opt.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#ifdef __cplusplus
};
#endif
#endif




int flush_encoder(AVFormatContext *fmt_ctx, unsigned int stream_index) {
int ret;
int got_frame;
AVPacket enc_pkt;
if (!(fmt_ctx->streams[stream_index]->codec->codec->capabilities &
AV_CODEC_CAP_DELAY))
return 0;
while (1) {
enc_pkt.data = NULL;
enc_pkt.size = 0;
av_init_packet(&enc_pkt);
ret = avcodec_encode_video2(fmt_ctx->streams[stream_index]->codec, &enc_pkt,
NULL, &got_frame);
av_frame_free(NULL);
if (ret < 0)<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值