我需要将我的桌面流传输到AWS MediaLive服务,作为要求,我必须在流中包括挂钟时间码。AWS支持好心地通知我,对于hido264编码的流,我需要以“pic_timing SEI messages”的形式提供时间码。
我在Windows 10上通过RTMP协议使用FFmpeg进行流传输,所以我尝试在命令中添加use_wallclock_as_timestamps
和copyts
标志。
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -show_region 1 -use_wallclock_as_timestamps 1 -i desktop -vf scale=320:240 -c:v libx264 -c:a aac -profile:v main -level 3.1 -pix_fmt yuv420p -copyts -f flv rtmp://<ip>:1935/<app>/<stream>
字符串
但是,AWS MediaLive不会提取时间码。
我的问题是:
use_wallclock_as_timestamps
标志是否确实根据需要将时间码创建为“pic_timing SEI消息”?- 如果没有,我该如何添加挂钟时间码作为“pic_timing SEI messages”?不一定是每一帧,每2或3秒就足够了。
我被难住了,我在FFmpeg文档中找不到答案。
谢谢你的帮忙。
2条答案
按热度按时间i7uq4tfw1#
对于“pic_timing SEI messages”支持,以下用于H.264/AVC的编码器 Package 器在
ffmpeg
中实现了这一点:h264_qsv
个h264_vaapi
个h264_nvenc
个您可以通过以下方式确认支持:
(a).对于
h264_vaapi
编码器 Package 器(仅在Linux上可用):字符串
对于VAAPI,必须将专用编解码器选项
-sei:v +timing
传递给h264_vaapi
。(b).对于
h264_qsv
编码器 Package 器:型
QSV编码器 Package 器需要设置专用编解码器选项
-pic_timing_sei:v 1
,这是默认值。通过将0
传递给上述参数,可以覆盖此选项以禁用相同的选项。(c).对于
h264_nvenc
,此选项为enabled by default。更新:
在HEVC方面,ffmpeg的
hevc_nvenc
Package 器通过私有编解码器选项-s12m_tc
选项来支持它,该选项必须设置为1
才能启用。这是因为正在进行的对实现HEVC的FFmpeg中增强RTMP的支持。llew8vvj2#
要查看传入流是否有数据:
使用ffprobe -show_packets而不是-show_frames
字符串
要查看数据ffprobe需要一个小mod:
ffprobe.c:2364
型
}