2021年8月

ubuntu 14.04 因为没有 systemd 的原因,所以装不了新的 gitea,只能安装支持启动脚本的 gogs。

  1. 创建 git 用户,并在 git 用户下,去gogs 官网下载最新的版本 https://gogs.io/docs/installation/install_from_binary ,然后解压,运行 ./gogs web 即可。

  2. 配置的时候,注意修改 域名和 URL 两项为自己的 IP 或者域名都行。

  3. gogs/scripts/init/debian/ 目录下面的 gogs 复制到 /etc/init.d 下面,并修改为可执行权限。

  4. update-rc.d gogs defaults,把启动脚本加入启动列表,然后重启,或者 /etc/init.d/gogs 来启动 gogs。

如果需要删除启动,update-rc.d -f gogs remove

参考

https://blog.ilemonrain.com/linux/linux-startup-run.html

有时候需要 linux 目录下文件分别打包,再分别解包,就需要用到 shell 中的 for 语句进行循环了。 当目录中有空格的时候,也容易发生报错,容易把一个目录名分隔为两个目录名,这时候就需要设置 IFS 这个值了。

具体测试可用的打包脚本如下:

#!/bin/bash

IFS=$'\n'

function tar_dir() {
for file in `ls -a $1`
        do
                if [ "$file" != "." -a "$file" != ".." ]; then
                        echo $file
                        tar cvf ${file}.tar $1"/"$file
                        echo "$file" >> tar_done.txt
                fi
        done
}

tar_dir $1

参考

https://blog.csdn.net/qq_40806289/article/details/114919068
https://blog.csdn.net/qq_28686911/article/details/115410830
https://blog.csdn.net/mr_leehy/article/details/76383091
https://blog.csdn.net/zhan570556752/article/details/80399154
https://blog.csdn.net/iamlihongwei/article/details/59114828

转自: https://www.cnblogs.com/lcword/p/5917398.html

last

-a 把从何处登入系统的主机名称或ip地址,显示在最后一行。 -d 指定记录文件。指定记录文件。将IP地址转换成主机名称。 -f <记录文件>  指定记录文件。 -n <显示列数>或-<显示列数>  设置列出名单的显示列数。 -R 不显示登入系统的主机名称或IP地址。 -x 显示系统关机,重新开机,以及执行等级的改变等信息

以下看所有的重启、关机记录

last | grep reboot last | grep shutdown

history

列出所有的历史记录:

[zzs@Linux] # history 只列出最近10条记录:

[zzs@linux] # history 10 (注,history和10中间有空格) 使用命令记录号码执行命令,执行历史清单中的第99条命令

[zzs@linux] #!99 (!和99中间没有空格) 重复执行上一个命令

[zzs@linux] #!! 执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)

[zzs@linux] #!rpm 逐屏列出所有的历史记录:

[zzs@linux]# history | more 立即清空history当前所有历史命令的记录

[zzs@linux] #history -c

cat, tail 和 watch

系统所有的日志都在 /var/log 下面自己看(具体用途可以自己查,附录列出一些常用的日志)

cat /var/log/syslog 等 cat /var/log/*.log

tail -f

如果日志在更新,如何实时查看 tail -f /var/log/messages

还可以使用 watch -d -n 1 cat /var/log/messages

-d表示高亮不同的地方,-n表示多少秒刷新一次。

该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容, 这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。

除此之外还有more, less ,dmesg|more,这里就不作一一列举了,因为命令太多了,关键看个人喜好和业务需求.个人常用的就是以上那些

linux日志文件说明

/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

转自: https://www.cnblogs.com/keta/p/9627227.html

tail

tail -n 50 wx.log

示例:查看/var/log/boot.log,只显示最后一行。则执行

tail -n 1 /var/log/boot.log tail -n 1000:显示最后1000行 tail -n +1000:从1000行开始显示,显示1000行以后的 head -n 1000:显示前面1000行

因为供应商提供的编译环境是 ubuntu 14.04lts,比较老旧了,直接安装 openssh-server 安装不了,提示没有这个包,然后再网上找到相应的解决办法。

  1. backup

    sudo cp -i /etc/apt/sources.list /etc/apt/sources.list.backup
  2. add

    deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse 
    deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse 
    deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse 
    deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse 
    deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse 
  3. update

    sudo apt-get update
  4. install
    sudo apt-get install openssh-server

reference

https://www.shangmayuan.com/a/7ee036528f064f86b65dff3e.html

  1. 使用 ps 打开图片
  2. 使用裁剪,设置 (2.5cm, 3.5cm, 300)1寸,(3.5cm, 5.3cm, 300)2寸。然后再图像上画框。
  3. image -> canvas size,设置长,宽,都扩展 0.4 cm
  4. edit -> define pattern,保存为图案。
  5. new -> width = 102mm, height = 152mm, resolution = 300
  6. edit -> fill,选中刚才保存的图案即可。然后保存打印。

参考:

https://www.php.cn/ps-tutorial-428361.html
https://zhuanlan.zhihu.com/p/363922181

转自: https://blog.csdn.net/byhook/article/details/84037338

音视频实践学习

android全平台编译ffmpeg以及x264与fdk-aac实践
ubuntu下使用nginx和nginx-rtmp-module配置直播推流服务器
android全平台编译ffmpeg合并为单个库实践
android-studio使用cmake编译ffmpeg实践
android全平台编译ffmpeg视频解码器实践
android全平台编译ffmpeg支持命令行实践
android全平台编译ffmpeg视频推流实践
android平台下音频编码之编译LAME库转码PCM为MP3
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
ubuntu平台下编译vlc-android视频播放器实践

概述

YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。

我们在android平台下使用相机默认图像格式是NV21属于YUV420SP格式

- 阅读剩余部分 -

转自: https://www.cnblogs.com/tid-think/p/10616789.html#:~:text=%E6%8E%A5%E4%B8%8B%E6%9D%A5%E6%98%AFYUV420,%E6%AF%8F%E5%9B%9B%E4%B8%AAy%E5%88%86%E9%87%8F%E5%85%AC%E7%94%A8%E4%B8%80%E4%B8%AAUV%E5%88%86%E9%87%8F%EF%BC%8C%E6%89%80%E4%BB%A5%E6%AF%8F%E4%B8%AA%E5%83%8F%E7%B4%A0%E7%82%B9%E5%8D%A0%E7%94%A81.5%E4%B8%AA%E5%AD%97%E8%8A%82%E7%A9%BA%E9%97%B4%EF%BC%8C%E6%A0%B9%E6%8D%AE%E5%AD%98%E5%82%A8%E9%A1%BA%E5%BA%8F%E4%B8%8D%E4%B8%80%E6%A0%B7%E5%8F%88%E5%88%86%E4%B8%BA%E5%9B%9B%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%B1%BB%E5%9E%8B%E3%80%82

前段时间搞x264编码测试,传参的时候需要告诉编码器我的原始数据格式是什么,其中在x264.h头文件中定义了如下一堆类型。

/* Colorspace type */
#define X264_CSP_MASK           0x00ff  /* */
#define X264_CSP_NONE           0x0000  /* Invalid mode     */
#define X264_CSP_I400           0x0001  /* monochrome 4:0:0 */
#define X264_CSP_I420           0x0002  /* yuv 4:2:0 planar */
#define X264_CSP_YV12           0x0003  /* yvu 4:2:0 planar */
#define X264_CSP_NV12           0x0004  /* yuv 4:2:0, with one y plane and one packed u+v */
#define X264_CSP_NV21           0x0005  /* yuv 4:2:0, with one y plane and one packed v+u */
#define X264_CSP_I422           0x0006  /* yuv 4:2:2 planar */
#define X264_CSP_YV16           0x0007  /* yvu 4:2:2 planar */
#define X264_CSP_NV16           0x0008  /* yuv 4:2:2, with one y plane and one packed u+v */
#define X264_CSP_YUYV           0x0009  /* yuyv 4:2:2 packed */
#define X264_CSP_UYVY           0x000a  /* uyvy 4:2:2 packed */
#define X264_CSP_V210           0x000b  /* 10-bit yuv 4:2:2 packed in 32 */
#define X264_CSP_I444           0x000c  /* yuv 4:4:4 planar */
#define X264_CSP_YV24           0x000d  /* yvu 4:4:4 planar */
#define X264_CSP_BGR            0x000e  /* packed bgr 24bits */
#define X264_CSP_BGRA           0x000f  /* packed bgr 32bits */
#define X264_CSP_RGB            0x0010  /* packed rgb 24bits */
#define X264_CSP_MAX            0x0011  /* end of list */
#define X264_CSP_VFLIP          0x1000  /* the csp is vertically flipped */
#define X264_CSP_HIGH_DEPTH     0x2000  /* the csp has a depth of 16 bits per pixel component */

但是这个定义只是对于这个应用而言,对于其他的应用或者场景中,相同的数据格式却有着不同的名字,于是为了弄懂他们的差别关系,检索了一大堆信息,整理了一个图文出来如下。

- 阅读剩余部分 -

转自: https://blog.csdn.net/q1449660223/article/details/110310208

概述

RGB

RGB(Alpha,Red,Green,Blue)色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上呈现16777216(256 256 256)种颜色

- 阅读剩余部分 -

参考

https://www.jianshu.com/p/819c23563c90
https://www.cnblogs.com/linuxAndMcu/p/12127975.html
https://blog.csdn.net/xiaibiancheng/article/details/73065646
https://blog.csdn.net/byhook/article/details/84475525
https://blog.csdn.net/MACMACip/article/details/105450185
https://www.cnblogs.com/linuxAndMcu/p/12119915.html#:~:text=SwsContext%20%E7%BB%93%E6%9E%84%E4%BD%93%20SwsContext%20%E6%98%AF%E8%BD%AC%E6%8D%A2%E6%A0%BC%E5%BC%8F%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%E7%BB%93%E6%9E%84%E4%BD%93%EF%BC%8C%E4%B9%9F%E6%98%AF%E4%BD%BF%E7%94%A8,libswscale%20%E7%9A%84%E6%97%B6%E5%80%99%E4%B8%80%E4%B8%AA%E8%B4%AF%E7%A9%BF%E5%A7%8B%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%84%E4%BD%93%EF%BC%8C%E8%BF%99%E4%B8%AA%E7%BB%93%E6%9E%84%E4%BD%93%E7%9A%84%E5%AE%9A%E4%B9%89%E5%BE%88%E5%A4%8D%E6%9D%82%EF%BC%8C%E9%87%8C%E9%9D%A2%E5%8C%85%E5%90%AB%E4%BA%86%20libswscale%20%E6%89%80%E9%9C%80%E8%A6%81%E7%9A%84%E5%85%A8%E9%83%A8%E5%8F%98%E9%87%8F%E3%80%82
https://blog.csdn.net/leixiaohua1020/article/details/12029505
https://blog.csdn.net/tea1896/article/details/72453510
https://blog.csdn.net/leixiaohua1020/article/details/42134965
https://blog.csdn.net/leixiaohua1020/article/details/44305697
https://blog.csdn.net/leixiaohua1020/article/details/44305697
https://www.jianshu.com/p/a3dc034deca6
https://blog.csdn.net/u010029439/article/details/80788479
https://www.jianshu.com/p/6c4155988c7d
https://www.jianshu.com/p/944ede616261
https://www.shangmayuan.com/a/c099c271a2904c3c932d654f.html
https://www.codenong.com/js6c4155988c7d/
https://blog.csdn.net/xiaibiancheng/article/details/73065646
https://blog.csdn.net/alspd_zhangpan/article/details/108243789
https://www.jianshu.com/p/bd0feaf4c0f9
https://blog.csdn.net/fengbingchun/article/details/50323273
https://www.jianshu.com/p/e52a3a19c8fe
https://blog.csdn.net/fengchu3415/article/details/84871710
https://blog.csdn.net/xiaolong1126626497/article/details/105984222
https://github.com/lemenkov/libyuv/blob/master/docs/getting_started.md
https://www.thinbug.com/q/54037393
https://www.cnblogs.com/cyyljw/p/8676062.html
https://www.cnblogs.com/yongdaimi/p/9829290.html
https://rumenz.com/rumenbiji/ffmpeg-sws_getCachedContext.html
https://www.cnblogs.com/yongdaimi/p/10715830.html#:~:text=%E4%B8%8E%E5%85%B6%E7%B1%BB%E4%BC%BC%E7%9A%84%E5%87%BD%E6%95%B0%E8%BF%98%E6%9C%89%EF%BC%9A%20sws_getCachedContext%20%EF%BC%8C%E5%8C%BA%E5%88%AB%E5%9C%A8%E4%BA%8E%EF%BC%9A%20sws_getContext,%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%BA%8E%E5%A4%9A%E8%B7%AF%E7%A0%81%E6%B5%81%E8%BD%AC%E6%8D%A2%EF%BC%8C%E4%B8%BA%E6%AF%8F%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%A0%81%E6%B5%81%E9%83%BD%E6%8C%87%E5%AE%9A%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E8%BD%AC%E6%8D%A2%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%8C%E8%80%8C%20sws_getCachedContext%20%E5%8F%AA%E8%83%BD%E7%94%A8%E4%BA%8E%E4%B8%80%E8%B7%AF%E7%A0%81%E6%B5%81%E8%BD%AC%E6%8D%A2%E3%80%82%202.sws_freeContext
https://blog.csdn.net/u010029439/article/details/82859206
https://www.cnblogs.com/yfceshi/p/7092525.html