muxtttt@126.com

muxtttt@126.com

0个粉丝

7

问答

0

专栏

1

资料

muxtttt@126.com  发布于  2016-02-17 22:33:35
采纳率 0%
7个问答
17083

请问论坛中有无使用FFMPEG做海思H264/5 TS流封装的?还请指点下。谢谢

 

我现在正在使用HI3516A的开发板做TS流封装,然后是UDP发送。

我是参考FFMPEG给出的例子:
https://ffmpeg.org/doxygen/2.1/doc_2examples_2muxing_8c-example.html#a74

在海思给出的例子中,SaveVideoStream 把编码数据发到一个FIFO中,然后使用另外一个线程,调用av_interleaved_write_frame 发送到"udp://233.255.1.8:6666";


现在遇到如下几个问题(1)AVstream的参数设置;(2)PTS/DTS的设置;(3) SPS/PPS

(1)AVstream的参数设置

在FFMPEG给出的例子中,add_stream中有AVstream的设置,请问这个c->time_base.den的值应该是多少呢? 是H265编码的帧率(30,60等)还是MPEGTS的90000?
AVStream *add_stream(AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id)
                case AVMEDIA_TYPE_VIDEO:
                        st->id = 0;
                        avcodec_get_context_defaults3(c, *codec);
                        c->codec_id = codec_id;

                        c->bit_rate = ENCODER_BIT_RATE;
                        /* Resolution must be a multiple of two. */
                        c->width    = 1920;
                        c->height   = 1080;
                        //c->time_base.den = ENCODER_FRAME_RATE;
                        c->time_base.den = 90000;
                        c->time_base.num = 1;
                        c->gop_size      = 12; /* emit one intra frame every twelve frames at most */
                        c->pix_fmt       = AV_PIX_FMT_YUV420P;
                        c->max_b_frames = 0;
                        c->profile = FF_PROFILE_HEVC_MAIN_10;
                break;

(2) PTS/DTS问题
海思3516a编码后给出的PTS是微妙的,如何转换成TS流的PTS/DTS? 或者我不使用芯片的PTS,直接基于发出编码帧的数量给出一个PTS值?

(3)SPS/PPS
这个SPS/PPS需要从编码数据中提取出来吗?

谢谢
我来回答
回答13个
时间排序
认可量排序

fox-cool

0个粉丝

9

问答

0

专栏

0

资料

fox-cool 2016-02-18 10:55:46
认可0
1,time_base.den 是用来计算发送帧间隔的吧,猜想 参考live555。
2,没搞过
3,SPS/PPS是需要从encode数据中提取

cym016

0个粉丝

0

问答

0

专栏

0

资料

cym016 2016-02-18 11:03:20
认可0
(1)AVstream的参数设置 用avformat_new_stream() 返回一个 AVStream 然后针对你的参数设置就是了
(2)PTS/DTS的设置 这个你直接拿海思的提供的就好的,PTS DTS 可以填一样,注意转换时间戳  90K
(3) SPS/PPS 海思出来的数据自带了,不用自己添加了

海思忍受者

0个粉丝

5

问答

0

专栏

1

资料

海思忍受者 2016-02-18 11:05:21
认可0
把微妙先转换成毫秒,然后再乘90就是TS的时间戳

muxtttt@126.com

0个粉丝

7

问答

0

专栏

1

资料

muxtttt@126.com 2016-02-19 06:05:18
认可0
多谢各位回复。

今天重新测试,30帧编码和播放视频没有问题,设置如下
(1)AVstream的参数设置, c->time_base.den 应该是帧率30或者60,设置成90000, VLC 就播放不了视频(只播放一帧);
(2)可以使用海思的PTS,按照转毫秒再乘以90;
(3) SPS/PPS,海思编码器会给出这些数据,我的是MPEGTS发送,就把这些和I帧一起作为一帧数据发送了,海思给出SPS/PPS时,PTS都是一样的。
(4)改成60帧编码时悲剧了,大量丢帧,VLC的Warning信息如下: 难道是PTS的转换方式“转毫秒再乘以90”不对? 哪位大侠帮帮忙?

谢谢
core warning: picture is too late to be displayed (missing 36 ms)
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame
core warning: picture is too late to be displayed (missing 33 ms)
core warning: picture is too late to be displayed (missing 37 ms)
core warning: picture is too late to be displayed (missing 24 ms)
core warning: picture is too late to be displayed (missing 44 ms)
avcodec warning: More than 4 late frames, dropping frame
avcodec warning: More than 4 late frames, dropping frame

muxtttt@126.com

0个粉丝

7

问答

0

专栏

1

资料

muxtttt@126.com 2016-02-19 06:19:06
认可0
60帧问题:
打印了一下PTS的增量,1500左右,好像也没错啊。

cym016

0个粉丝

0

问答

0

专栏

0

资料

cym016 2016-02-19 09:59:24
认可0
PTS的转换方式“转毫秒再乘以90” 这个没问题的
你用的是哪个库呢?我以前用的比较老的ffmpeg,VLC播放不了,换了比较新的就没问题了

muxtttt@126.com

0个粉丝

7

问答

0

专栏

1

资料

muxtttt@126.com 2016-02-19 10:08:18
认可0
我是用最新的FFMPEG,VLC可以播放,但从其中的MESSAGE看,有很多帧丢了,现在想想,可能是在没有设置packet.duration,或者这个值错了。

muxtttt@126.com

0个粉丝

7

问答

0

专栏

1

资料

muxtttt@126.com 2016-02-20 00:35:23
认可0
重新做测试,发现VLC给出了一个警告,也许是我的PC太慢了?
avcodec error: more than 5 seconds of late video -> dropping frame (computer too slow ?)
avcodec error: more than 5 seconds of late video -> dropping frame (computer too slow ?)

PC配置如下:PENTIUM(R) Dual-Core CPU [email]E6500@2.93GHz[/email], 4G memory, 64 bit operating system.

请问哪位高手提示下?
谢谢

xghhyx

0个粉丝

0

问答

0

专栏

0

资料

xghhyx 2016-12-27 09:28:24
认可0
楼主好,我也遇到和你一样的问题,请问您最后是如何解决的?

laocheng

1个粉丝

14

问答

0

专栏

0

资料

laocheng 2017-02-21 18:58:36
认可0
场景非常类似,我需要打包flv,rtmp推流。

yaoyaohu

0个粉丝

0

问答

0

专栏

0

资料

yaoyaohu 2017-10-10 22:08:01
认可0
学习中,参考下,成功了么

qn1532917771

0个粉丝

7

问答

0

专栏

0

资料

qn1532917771 2018-12-18 15:49:02
认可0
楼主你成功了吗?我现在也在做这个。希望能得到帮助

qn1547782507

0个粉丝

1

问答

0

专栏

0

资料

qn1547782507 2019-01-21 15:34:44
认可0
pts转为毫秒乘以90,结果播放视频快进了,很快就显示完了
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区