GStreamer 安卓安装辅导三:各位看官请看,变(画面跳动),再变(画面转圈)???观众:神经病。

本文是GStreamer安卓安装辅导的第三部分,主要介绍如何使用GStreamerSurfaceView进行图像处理和动画特效测试,包括逆时针旋转、旧电视效果等。同时,文章探讨了字幕的实现问题,指出现有方法不适用于多语言需求。
摘要由CSDN通过智能技术生成

🗞️ 0. 简介

🤗:乌拉,无去扎, 无去扎,于无去扎!老妈子整天口头吊的学习学习再学习,我耳朵都生茧子,她就会这一句,你们也来吭两句口号,吊俄罗斯辣妹也可以噢。现在来到第三期,让我们一起学习——大哇里期,于无去扎,咩兮加。
😵:这位同学,现在是电脑课。涅如私基(不是俄语课)。
😁:是的,是的,GStreamer 辅导三,应该上影像了。


👶 1. 筑基

🧑:开启辅导三,首先是要能跑。如果你的 app 现在跑不动,对不起,你继续回去筑基,把一二看一遍。欲练神功,必先 X X。(🤨:这小子又再 Y Y 什么。)

emu

瞧,连模拟器都能跑。👧:这画面花花的,好丑噢…


👽 2. 翻译成 Kotlin

ctrl+alt+shift+k,跟着 Yes。
还有在 static 方程加 @JvmStatic。
这次,我加点私货,就是自己的 log 啦。
log
从其它项目爬过来,放在 common 里面。
接着,帮 Java 放水,练练手。
参考:

class Tutorial3 : Activity(), SurfaceHolder.Callback {
   
    // JNI
    private external fun nativeInit() // Initialize native code, build pipeline, etc
    private external fun nativeFinalize() // Destroy pipeline and shutdown native code
    private external fun nativePlay() // Set pipeline to PLAYING
    private external fun nativePause() // Set pipeline to PAUSED
    private external fun nativeSurfaceInit(surface: Any)
    private external fun nativeSurfaceFinalize()
    private val native_custom_data // Native code will use this to keep private data
            : Long = 0
    private var is_playing_desired // Whether the user asked to go to PLAYING
            = false

    // UI
    val play:ImageButton by lazy {
    findViewById(R.id.button_play) }
    val pause:ImageButton by lazy {
    findViewById(R.id.button_stop) }
    val sv:SurfaceView by lazy {
    findViewById(R.id.surface_video) }
    val tvmsg:TextView by lazy {
    findViewById(R.id.textview_message) }

    // Called when the activity is first created.
    public override fun onCreate(savedInstanceState: Bundle?) {
   
        super.onCreate(savedInstanceState)

        // Initialize GStreamer and warn if it fails
        try {
   
            GStreamer.init(this)
        } catch (e: Exception) {
   
            Toast.makeText(this, e.message, Toast.LENGTH_LONG).show()
            finish()
            return
        }

        // layout
        setContentView(R.layout.main)

        // buttons
        play.setOnClickListener {
   
            is_playing_desired = true
            nativePlay()
        }

        pause.setOnClickListener 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值