Toybrick

3399PRO除了mpph264enc编码,还有其他的软编码么?

勇Z的心

注册会员

积分
94
发表于 2019-8-2 13:42:22    查看: 29293|回复: 10 | [复制链接]    打印 | 显示全部楼层
如题,请知道的回复下,哎,发帖老是石沉大海!!!
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-2 15:22:51 | 显示全部楼层
hisping 发表于 2019-8-2 14:37
硬解码:
支持4K VP9 and 4K 10bits H265/H264 视频解码,高达60fps
1080P 多格式视频解码 (WMV, MPEG-1/2/ ...

mpph264enc总是报错
gst_mpp_video_enc_stop: assertion failedg_atomic_int_get_FALSE)
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-2 15:25:04 | 显示全部楼层
mpph264enc总是报错
gst_mpp_video_enc_stop: assertion failedg_atomic_int_get_FALSE)
请问怎么解决,麻烦回复下 @hisping你们有技术支持电话?买了你们的板子,怎么都没有技术支持的呀!
回复

使用道具 举报

jefferyzhang

版主

积分
13606
发表于 2019-8-4 23:00:43 | 显示全部楼层
你可以直接调用mpp库来解决,不是一定要通过gstreamer来绕的。
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-5 10:35:21 | 显示全部楼层
jefferyzhang 发表于 2019-8-4 23:00
你可以直接调用mpp库来解决,不是一定要通过gstreamer来绕的。

我们需要使用你们的gstreamer-rockchip来进行编码推流,望gstreamer-rockchip研发人员能尽快看下解决该问题,项目紧急,急望回复!!!!谢谢!!!
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-6 10:25:21 | 显示全部楼层
本帖最后由 勇Z的心 于 2019-8-6 11:04 编辑

import cv2
import gi

gi.require_version('Gst', '1.0')
gi.require_version('GstRtspServer', '1.0')
from gi.repository import Gst, GstRtspServer, GObject


class SensorFactory(GstRtspServer.RTSPMediaFactory):
    def __init__(self, **properties):
        super(SensorFactory, self).__init__(**properties)
        self.cap = cv2.VideoCapture(0)
        self.number_frames = 0
        self.fps = 30
        self.duration = 1 / self.fps * Gst.SECOND  # duration of a frame in nanoseconds
        self.launch_string = 'appsrc name=source is-live=true block=true format=GST_FORMAT_TIME '\
           'caps=video/x-raw,format=BGR,width=640,height=480,framerate={}/1 '\
           '! videoconvert ! video/x-raw,format=I420 '\
           '! mpph264enc '\
           '! rtph264pay config-interval=1 name=pay0 pt=96'.format(self.fps)
        print('init end')

    def on_need_data(self, src, lenght):
        print('on_need_data start')
        if self.cap.isOpened():
            ret, frame = self.cap.read()
            if ret:
                data = frame.tostring()
                buf = Gst.Buffer.new_allocate(None, len(data), None)
                buf.fill(0, data)
                buf.duration = self.duration
                timestamp = self.number_frames * self.duration
                buf.pts = buf.dts = int(timestamp)
                buf.offset = timestamp
                self.number_frames += 1
                retval = src.emit('push-buffer', buf)
                print('pushed buffer, frame {}, duration {} ns, durations {} s'.format(self.number_frames, self.duration, self.duration / Gst.SECOND))
                if retval != Gst.FlowReturn.OK:
                    print(retval)
        print('on_need_data end')

    def do_create_element(self, url):
        print('do_create_element')
        return Gst.parse_launch(self.launch_string)

    def do_configure(self, rtsp_media):
        print('do_configure start')
        self.number_frames = 0
        appsrc = rtsp_media.get_element().get_child_by_name('source')
        appsrc.connect('need-data', self.on_need_data)
        print('do_configure end')


class GstServer(GstRtspServer.RTSPServer):
    def __init__(self, **properties):
        print('GstServer __init__ start')
        super(GstServer, self).__init__(**properties)
        self.factory = SensorFactory()
        self.factory.set_shared(True)
        self.get_mount_points().add_factory("/test", self.factory)
        self.attach(None)
        print('GstServer __init__ end')


GObject.threads_init()
Gst.init(None)

server = GstServer()

loop = GObject.MainLoop()
loop.run()

回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-6 10:29:04 | 显示全部楼层
本帖最后由 勇Z的心 于 2019-8-6 10:34 编辑

看了gstreamer-rockchip源码,为什么只有把active赋值为TRUE的语句,而没有赋值为FALSE的语句?
C:\Users\Yongzdexin\Desktop\微信图片_20190731145439

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-6 10:29:45 | 显示全部楼层
本帖最后由 勇Z的心 于 2019-8-6 10:33 编辑

错误信息如图。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-6 11:07:37 | 显示全部楼层
toybrick 发表于 2019-8-5 15:21
请提供完整出错的log,并告诉我们你做了什么操作,方便我们这边的工程师复现这个问题 ...

已经贴出了python脚本代码,访问地址是rtsp://192.168.1.100:8554/test,其中IP地址是3399pro的IP。使用VLC可以在电脑上看到视频流,但关闭VLC停止读取视频流时,会异常,每次必现,很容易复现!
回复

使用道具 举报

勇Z的心

注册会员

积分
94
 楼主| 发表于 2019-8-9 16:13:19 | 显示全部楼层
技术支持有收到么,麻烦回复一下可以么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表