首页 > 编程语言 >程序员开发利器:Your Commands网站上线

程序员开发利器:Your Commands网站上线

时间:2024-10-14 19:26:24浏览次数:1  
标签:容器 Commands ffmpeg flv 程序员 1935 镜像 docker Your

程序员开发利器:Your Commands网站上线

 

目录

 

正文

程序员开发利器:Your Commands网站上线

先上链接: https://www.ycmds.cc

回到顶部

背景

各种命令行工具是我们IT行业日常工作离不开的,但是对于命令行工具的使用有一个痛点:文档上每一个命令行参数写的清清楚楚,但是怎么组合起来用却搞不清楚。所以为了解决这个问题每个人都应该有一个记事本,记录下来自己常用的完整命令行,每次用的时候翻出来直接用就可以。但存放到本地的记事本是非常不方便的,各种云记事本也非常不好用。所以有了一个想法,为什么不把这些命令行放到网络上,方便自己的同时也能便捷他人。

作者先收集了自己日常工作中常用的完整命令行,包括FFmpeg/Docker/Git/Tcpdump等等。此网站是开源的,非常欢迎其他大牛们把自己常用的命令行分享出来,赠人玫瑰,手留余香。

下面列举一部分:

回到顶部

FFmpeg

1、转推RTMP协议流

纯转推,没有编解码。

1.1、转推flv文件

ffmpeg -re -stream_loop -1 -i test.flv -c copy -f flv rtmp://localhost:1935/live/destination
参数解释
  • -re
    参数用于模拟实时读取输入流,输入数据的处理速度将与实际播放速度保持一致。

  • -stream_loop 是用来指定输入流的循环次数的选项。
    -1 作为 -stream_loop 的参数值,表示无限循环,即输入流将不断重复播放,直到手动停止或程序结束。

  • -c 是 -codec 的简写,用于指定编码器或解码器。copy 表示直接复制源流的音视频数据,不重新编解码。 也可以写成 -c:v copy -c:a copy

1.2、转推RTMP直播流

ffmpeg -i rtmp://localhost:1935/live/source -c copy -f flv rtmp://localhost:1935/live/destination

:::note
如果输入流本身就是实时流,可以不加-re参数,当输入流有GOP缓存,它将会被快递处理并转推出去,配置合适的播放策略比加-re参数能降低延迟。

:::

2、录制RTMP协议流

可以把直播流录制成flv文件:

ffmpeg -i  'rtmp://localhost:1935/live/test'  -c:v copy -c:a copy -f flv test.flv

3、转推RTSP协议流

3.1、基于TCP传输

ffmpeg -re -stream_loop -1  -i test.mp4 -c:v copy -c:a copy  -rtsp_transport tcp -f rtsp "rtsp://127.0.0.1:5544/live/test?token=123"
参数解释
  • -rtsp_transport tcp 表示基于TCP传输音视频数据,也就是Interleaved模式

3.2、基于UDP传输

 ffmpeg -re -stream_loop -1  -i test.mp4 -c:v copy  -c:a copy -f rtsp "rtsp://127.0.0.1:5544/live/test?token=123"

4、图片相关

4.1、PNG转YUV

 ffmpeg -i temp.jpg -s 1024x680 -pix_fmt yuvj420p 9.yuv
参数解释
  • -s 1024x680: 这个选项指定输出视频的尺寸为 1024x680 像素。-s 后面跟着想要的宽度和高度。

  • -pix_fmt yuvj420p: 这个选项指定输出的像素格式为 yuvj420p。

4.2、打开YUV

ffplay -f rawvideo -pixel_format yuv420p -video_size 1024x680 9.yuv

4.3、YUV转PNG

ffmpeg -y -s 1024x680 -i 9.yuv output.jpg

5、转码相关

ffmpeg转码主要涉及到:

变换编码方式:

  • H264转到H265:降码率,清晰度不变的情况下降低网络使用带宽。
  • H265转到H264:解决低端设备解不了H265的问题。

变换分辨率:

  • 降分辨率:降码率。
  • 升分辨率:官方的ffmpeg增加分辨率和码率没有很好的超分效果,需要使用第三方的SDK集成到ffmpeg中,比如英伟达的MAXINE。

降码率:

  • 恒定码率变动态码率:根据画面复杂度动态调整码率,节省网络带宽,提升用户体验。

5.1、RTMP直播流转码成720P H264

 ffmpeg -rw_timeout 5000000 -i 'rtmp://localhost:1935/live/source' -acodec libfdk_aac -b:a 64k -ac 2 -ar 44100 -profile:a aac_he  -vcodec libx264 -b:v 2000k -level 3.1 -vprofile high -vsync 2 -strict -2 -preset medium -bf 3 -force_key_frames source  -f flv -loglevel level+info -vf "scale='720:-2'"     'rtmp://localhost:1935/live/dest'
参数解释
  • -rw_timeout 5000000 设置读写超时时间,单位是微秒,5000000为5秒。如果在这个时间内没有完成读写操作,FFmpeg 将会停止操作并报告超时错误。

  • -acodec 执行音频编码器fdk_aac,这个编码库是开源的,支持LC、HE-AAC、HE-AAC-V2三种profile级别。

  • -b:a 指定音频码率

  • -ac 指定音频通道数2

  • -ar 指定音频采样率44100

  • -profile:a 指定音频profile级别为aac_he

  • -vcodec 执行视频编码器为x264

  • -b:v 指定视频码率为1700Kbits/s

  • -level 用于约束码率、帧率和分辨率

H264 Level

  • -vprofile 是用来定义一组编码工具和特性的集合,以满足不同使用场景和性能需求。

H264 Profile

  • -vsync 2 帧会连同其时间戳一起通过或丢弃,以防止 2 个帧具有相同的时间戳。

  • -preset medium 指定编码速速和压缩比,编码速度越快,压缩比越低。FFmpeg doc

  • -bf 3 指定B帧数目为3个,通常是两个P帧之间编码3个B帧。

  • -force_key_frames source 关键帧编码跟随源流,如果当前帧在源流中为关键帧,则编码输出关键帧,如果源流中的当前帧必须被丢弃,则下一帧输出关键帧。

  • -flv 指定封装格式为flv

  • -loglevel level+info 添加日志级别前缀、指定日志级别为info。

  • -vf "scale='720:-2'" 视频过滤器参数,scale 是用于缩放视频的过滤器,'720:-2' 指定了输出视频的宽度和高度:720 表示输出视频的宽度将被设置为 720 像素,-2 表示高度将自动计算,以保持原始视频的宽高比。

5.2、RTMP直播流转码成720P H265

 ffmpeg -rw_timeout 5000000 -i "rtmp://localhost:1935/live/source" -vcodec libx265 -b:v 2000k -acodec libfdk_aac -b:a 64k -ac 2 -ar 44100 -profile:a aac_he -preset veryfast -bf 3 -force_key_frames source -f flv -loglevel level+info -vf scale='720:-2' “rtmp://localhost:1935/live/dest”
回到顶部

Docker

1、基本命令

1.1、拉取docker镜像

docker pull docker.io/library/centos:7.9.2009

1.2、运行docker

docker run -it  docker.io/library/centos:7.9.2009 /bin/bash 
参数解释
  • -it 分配伪终端并保持标准输入打开,适合交互式操作。
  • /bin/bash 容器启动后运行的命令,这里是打开一个 Bash 终端。

1.3、查看所有docker实例

docker ps -a
参数解释
  • -a 列出所有容器,包括停止的,如果不加-a,则只显示正在运行的

1.4、进入docker内部

docker  exec -it <container ID or name> /bin/bash

1.5、查看所有镜像

docker images

1.6、清理docker镜像

1.6.1、删除未使用的镜像
docker image prune
1.6.2、强制删除未使用的镜像
docker image prune -a

这将删除所有未被容器使用的镜像,包括悬挂的镜像。

1.6.3、删除特定镜像
docker rmi <image_id_or_name>
1.6.4、导出容器到文件
docker export <container_id>  -o  image.tar
1.6.5、导出镜像到文件
docker save -o image.tar <repository_name>:<tag> or <image_id>
1.6.5、从文件加载成docker镜像
cat image.tar | docker import - <repository_name>:<tag>

其中,<repository_name>是你要上传到的镜像仓库名称,<tag>是镜像的标签。

2、高阶命令

2.1、拉取并运行镜像

docker run --cap-add=SYS_PTRACE -d -it --net=bridge --name centos7 --privileged=true -w /youcmds/workspace -e "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/" -e "LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/lib:/lib64:/lib" -p 1935-2935:1935-2935 -v /Users/yourcmds/workspace:/youcmds/workspace docker.io/library/centos:7.9.2009 /bin/bash 
参数解释
  • --cap-add 参数可以用于向 Docker 容器添加不同的权限,包括:

    NET_ADMIN: 允许容器拥有网络管理的能力。这意味着容器可以进行网络配置,比如更改接口的配置、添加或删除路由等。它赋予了容器更大的网络控制权限,适用于需要管理网络设置的应用场景。

    SYS_ADMIN:添加系统管理员权限,允许容器内的进程执行系统级别的管理操作,如挂载文件系统、设置时间、修改主机名等。

    SYS_PTRACE:添加系统追踪权限,允许容器内的进程使用 ptrace 系统调用,用于调试和监视其他进程。

    SYS_CHROOT:添加切换根目录权限,允许容器内的进程使用 chroot 系统调用,在指定的目录下创建一个新的根文件系统环境。

    SYS_MODULE:添加模块加载/卸载权限,允许容器内的进程加载和卸载内核模块。

    SYS_RAWIO:添加原始 I/O 权限,允许容器内的进程进行对设备的原始读写操作,绕过操作系统提供的文件系统抽象。

    SYS_TIME:添加时间管理权限,允许容器内的进程修改系统时间。

  • --net 设置docker的网络模式,常用的网络模式包括:

    bridge(桥接模式):默认模式,Docker 会创建一个虚拟网桥,容器通过这个桥接连接到主机的网络。适用于大多数常见场景。

    host(主机模式):容器直接使用主机的网络堆栈,适合对网络性能要求较高的应用,但会失去容器间的网络隔离。

    none(无网络模式):不连接任何网络,适合需要完全隔离的场景。

    container(容器模式):使新容器与另一个已存在的容器共享网络栈。这意味着它们共享同一个 IP 地址和端口。

    overlay(覆盖网络模式):用于跨多个 Docker 主机的集群环境(如 Docker Swarm 或 Kubernetes),允许容器在不同主机间通信。

  • -d:以后台模式运行容器。

  • --name centos7:为容器指定一个名称(centos7)。

  • -w /youcmds/workspace:设置容器的工作目录。

  • -e 设置环境变量。

  • -p 1935-2935:1935-2935:将主机的 1935-2935 端口映射到容器的同一端口范围。

  • -v /Users/yourcmds/workspace:/youcmds/workspace:将主机目录挂载到容器内的指定路径,实现文件共享。

  • docker.io/library/centos:7.9.2009:拉取镜像地址。

回到顶部

GIT

1、基本命令

1.1、查询远程仓库

用于显示当前仓库的所有远程仓库及其对应的 URL:

git remote -v

1.2、更新提交账户信息

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

如果只想更新当前项目

git config user.name "你的名字"
git config user.email "你的邮箱@example.com"

1.3、修改远程仓库地址

git remote set-url origin <new-url>
SHELL 复制 全屏


作者: HarlanC

博客地址: http://www.cnblogs.com/harlanc/
个人博客: http://www.harlancn.me/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  标签: Docker , FFMpeg , Git

标签:容器,Commands,ffmpeg,flv,程序员,1935,镜像,docker,Your
From: https://www.cnblogs.com/sexintercourse/p/18464812

相关文章

  • 01《程序员修炼之道》读后感
    《程序员修炼之道》是一本经典的编程书籍,作者是安德斯·哈特尔和大卫·哈特尔。这本书通过丰富的案例和深入的分析,详细探讨了程序员在职业生涯中的成长与修炼,强调了技术能力与职业素养的双重提升。以下是我对这本书的一些读后感。首先,书中首先提出了“修炼”这个概念,不论是文章还......
  • 程序员必看!用 Eagle 读懂 GitHub 项目代码
    程序员一定要学会这一招,悄悄充电,偷是技术大牛,惊艳所有人!作为程序员,GitHub是一定要看的,学习并理解优秀的项目代码,让你事半功倍。一起来看看技术大牛是怎么在GitHub上充电的吧!GitHub上有一个叫Trending的榜单,它会帮你列出最近一天、一周、一个月最火的项目。这些项目一般都有......
  • 程序员攻占小猿口算,炸哭小学生!
    小学生万万没想到,做个加减乘除的口算练习题,都能被大学生、博士生、甚至是程序员大佬们暴打!最近这款拥有PK功能的《小猿口算》App火了,谁能想到,本来一个很简单的小学生答题PK,竟然演变为了第四次忍界大战!刚开始还是小学生友好PK,后面突然涌入一波大学生来踢馆,被网友称为“大......
  • 程序员开发利器:Your Commands网站上线
    程序员开发利器:YourCommands网站上线先上链接:https://www.ycmds.cc背景各种命令行工具是我们IT行业日常工作离不开的,但是对于命令行工具的使用有一个痛点:文档上每一个命令行参数写的清清楚楚,但是怎么组合起来用却搞不清楚。所以为了解决这个问题每个人都应该有一个记事本,记录......
  • 人工智能时代,程序员如何保持核心竞争力?
    面对AIGC大语言模型和AI辅助编程工具的兴起,程序员的工作方式确实正在经历深刻的变革。这种变革带来了对职业未来的多种思考和担忧,但同时也为程序员提供了新的机遇和发展方向。以下是对程序员应如何应对这一趋势的几点建议:保持学习与适应能力:持续学习新技术:随着技术的快速......
  • 程序员在AI时代扮演着多重角色:不仅是AI技术的创造者,也是使用者,更是AIGC的贡献者
    程序员在AI时代扮演着多重角色:不仅是AI技术的创造者,也是使用者,更是AIGC的贡献者引言大家好,我是猫头虎,在当下的AI时代,程序员不仅是AI技术的推动者,更在这个生态中扮演着多重角色:我们不仅是AI技术的创造者,也是使用者,更重要的是,我们通过持续的写作与分享,成为了AIGC的贡献者。......
  • POLIR-Society-Organization-Psychology-Relationship关系-Dating Stages阶段: Questi
    https://www.verywellmind.com/questions-to-ask-your-partner-dating-stages-5270161Relationships>StrengtheningRelationships>RelationshipQuestionstoAskYourPartnertoTakeYourConnectionNextLevelRelationshipQuestionstoAskYourPartner......
  • FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
    ​喊了多年的互联网寒冬,今年的寒风格外凛冽,还在坚守安卓开发的朋友着实不容易。因为能转行的早就转了,能转岗的也早就转了,那么安卓程序员比较迷茫的就是,我该学什么安卓技术才好呢?还是直接扔了安卓再去搞别的技术吗?下面探讨下安卓程序员还能在哪些方面进阶修炼,主要有以下三个方向......
  • 代码与财富:程序员如何利用技术优势投资金融?
    最近A股很火热啊,根据最新统计,超过70%的程序员表示对金融投资感兴趣,但只有不到20%的人真正了解如何利用他们的技术优势。今天,我们将打破这一局面。在数字时代,程序员不仅是代码的创造者,更是财富的探索者。想象一下,当你的代码不仅仅是运行在服务器上,而是在金融市场上驰骋,那将是......
  • 用四个场景案例,分析使用大模型对程序员工作的帮助提升
    引言随着人工智能技术的不断发展,大模型在软件开发中的应用越来越广泛。这些大模型,如GPT、文心一言、讯飞星火、盘古大模型等,可以帮助程序员提高工作效率,加快开发速度,并提供更好的用户体验。本文将介绍我在实际工作中经常使用大模型的三个场景,展示如何在程序员的工作中使......