流媒体 - 02 常用命令(gst+ffmpeg+v4l2)
常用命令
- gstreamer
- 数据采集
- 数据输出
- 数据处理
- ffmpeg
- 查看信息
- 分离视频音频流
- 视频格式转换
- 图像处理
- ffplay
- ffprobe
- mplayer
- V4L2
- 查看信息
- UVC
- 查看信息
- YUV 测试文件下载
gstreamer
数据采集
- 采集USB摄像头
gst-launch-1.0 -v v4l2src device=/dev/video0 ! autovideoconvert ! video/x-raw, format=I420, width=1280, height=720 ! glimagesink- 采集 rtsp 流
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.217/main-live ! rtph264depay ! h264parse ! video/x-h264 ! avdec_h264 ! xvimagesink- 采集视频文件
gst-launch-1.0 uridecodebin uri=file:///home/cup.mp4 ! videoconvert ! autovideosink- tcp 接收数据
gst-launch-1.0 tcpserversrc host=192.168.1.228 port=12345 ! gdpdepay ! glimagesink- udp 接收数据 (未压缩数据udp包 > 65507,会失败 )
gst-launch-1.0 udpsrc port=5200 ! application/x-rtp, encoding-name=H264, payload=96 ! rtph264depay ! h264parse ! avdec_h264 ! glimagesink- 采集测试数据
gst-launch-1.0 videotestsrc pattern=“snow” ! video/x-raw, format=NV12, width=1280, height=720 ! glimagesink- 采集音频
gst-launch-1.0 alsasrc device=hw:0,1 ! audio/x-raw, rate=16000, channels=2, layout=interleaved, format=S16LE ! audioconvert ! alawenc ! fakesink sync=false enable-last-sample=false
数据输出
- tcp 发送USB摄像头数据
gst-launch-1.0 -v v4l2src device=/dev/video0 ! autovideoconvert ! video/x-raw, format=I420, width=1280, height=720 ! gdppay ! tcpclientsink host=192.168.1.228 port=12345- tcp 发送rtsp数据
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.217/main-live ! rtph264depay ! h264parse ! video/x-h264 ! avdec_h264 ! gdppay ! tcpclientsink host=192.168.1.228 port=12345- tcp 发送测试数据
gst-launch-1.0 videotestsrc ! video/x-raw, format=I420, width=1280, height=720 ! gdppay ! tcpclientsink host=192.168.1.228 port=12345
注:❤️ 不加gdppay和gdpdepay会失败,Payloads GStreamer Data Protocol buffers- udp 发送rtsp数据
gst-launch-1.0 rtspsrc location=rtsp://192.168.1.217/main-live ! udpsink port=5200- udp 发送测试数据
gst-launch-1.0 videotestsrc ! x264enc ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink port=5200
数据处理
- 多路拼接
gst-launch-1.0 videotestsrc ! video/x-raw,format=AYUV,framerate=(fraction)10/1,width=200,height=200 ! videobox border-alpha=0 top=-0 bottom=-200 right=-200 ! videomixer name=mix sink_0::alpha=0.9 sink_1::alpha=0.9 sink_2::alpha=0.9 sink_3::alpha=0.9 ! queue leaky=downstream ! videoconvert n-threads=2 ! xvimagesink videotestsrc ! video/x-raw,format=AYUV,framerate=(fraction)10/1,width=200,height=200 ! videobox border-alpha=0 top=-200 bottom=-0 right=-200 ! mix.
- 画中画指定位置
gst-launch-1.0 -v videotestsrc name=src1 videotestsrc name=src2 videomixer name=mix sink_0::xpos=0 sink_0::ypos=0 sink_1::xpos=640 sink_1::ypos=360 ! autovideosink src1. ! queue ! videoscale ! video/x-raw,width=1280,height=720 ! videoconvert ! mix.sink_0 src2. ! queue ! videoscale ! video/x-raw,width=640,height=360 ! videoconvert n-threads= 4 ! mix.sink_1- 画中画默认位置
gst-launch-1.0 -e videotestsrc ! video/x-raw,format=NV12,framerate=10/1, width=200, height=150 ! videomixer name=mix ! autovideoconvert ! xvimagesink videotestsrc ! video/x-raw, format=NV12, framerate=10/1, width=640, height=360 ! mix.
- 文字叠加
gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! textoverlay text=“好的” ! autovideosink
- 格式过滤
gst-launch-1.0 -e videotestsrc pattern=“snow” ! capsfilter caps=“video/x-raw,width=1024,height=768,format=RGB” ! glimagesink
- 图像 resize
gst-launch-1.0 -e videotestsrc pattern=“snow” ! capsfilter caps=“video/x-raw,width=1024,height=768,format=RGB” ! videoscale ! video/x-raw,width=640,height=360 ! glimagesink
- 分离视频文件的音视频播放
gst-launch-1.0 -v uridecodebin uri=file:///视频/cup.mp4 name=decoder ! videoconvert ! autovideosink decoder. ! audioconvert ! autoaudiosink
- tcp 接收音视频保存文件
(1)保存avi:gst-launch-1.0 tcpserversrc host=10.18.9.254 port=12345 ! gdpdepay ! videoconvert ! jpegenc ! avimux name=mux ! filesink location=“test.avi” tcpserversrc host=10.18.9.254 port=12346 ! gdpdepay ! audioconvert ! avenc_aac ! aacparse ! mux.
(2)保存mkv:gst-launch-1.0 matroskamux name=smux ! filesink location=“video.mkv” tcpserversrc host=10.18.9.254 port=12345 ! gdpdepay ! videoconvert ! jpegenc ! smux.video_0 tcpserversrc host=10.18.9.254 port=12346 ! gdpdepay ! audioconvert ! avenc_aac ! aacparse ! smux.audio_0
(3)发送:gst-launch-1.0 uridecodebin uri=file:///视频/Megamind.avi name=decoder ! videoconvert ! gdppay ! tcpclientsink host=10.18.9.254 port=12345 decoder. ! audioconvert ! gdppay ! tcpclientsink host=10.18.9.254 port=12346
ffmpeg
查看信息
- 查看本地的视频信息
ffmpeg -i file.avi
分离视频音频流
- 分离视频流
ffmpeg -i input_file -vcodec copy -an output_file_video- 分离音频流
ffmpeg -i input_file -acodec copy -vn output_file_audio
视频格式转换
- ts 转 mp4
ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 output.mp4- h264 转 ts
ffmpeg -i test.h264 -vcodec copy -f mpegts output.ts- h264 转 mp4
ffmpeg -i test.h264 -vcodec copy -f mp4 output.mp4- mp4 转 flv
ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv output.flv- flv 转 mp4
ffmpeg -i test.flv -b:v 640k output.mp4- mkv 转 avi
ffmpeg -i test.mkv -vcodec copy -acodec copy output.avi- mkv 转 mp4
ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4
图像处理
- 截取指定时间的缩略图
(1) ffmpeg –i test.mp4 -y -f image2 -ss 8 -t 0.001 -s 350x240 testImage.jpg
(2) ffmpeg -s 640x480 -pix_fmt nv21 -i nv21_118.yuv -f image2 -pix_fmt bgr24 1.jpg- 添加图片水印
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay test1.mp4- 添加GIF
ffmpeg -y -i test2.mp4 -ignore_loop 0 -i test.gif -filter_complex overlay=0:H-h test_out2.mp4- 添加文字水印
ffmpeg -i input.flv -vf “drawtext=fontfile=simhei.ttf: text=‘test’:x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2” drawtext.mp4- 旋转90°
ffmpeg -i test.mp4 -vf “transpose=0” out.mp4
注释:0, 逆时针旋转90°再水平翻转; 1, 顺时针90°; 2, 逆时针90°; 3, 顺时针90°再水平翻转;- 水平翻转
ffmpeg -i test.mp4 -vf hflip out.mp4- 垂直翻转
ffmpeg -i test.mp4 -vf vflip out.mp4- 提取图片
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg- 截取指定时间的视频
(1) ffmpeg -ss 1:05 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4
注释:-r,频率;-ss,开始时间;-t,持续时间;
(2) ffmpeg -i ./plutopr.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 ./cutout1.mp4 -y- 视频倒放,音频不变
ffmpeg -i inputfile.mp4 -vf reverse reversed.mp4//视频倒放,音频不变- 视频加速
ffmpeg -i inputfile.mp4 -vf setpts=PTS/2 -af atempo=2 output.mp4
备注:帧速率变为2倍,调整倍速范围【0.25,4】- 视频减速
ffmpeg -i input.mkv -an -filter:v “setpts=0.5*PTS” output.mkv- 视频拼接 mpeg
(1) ffmpeg -i 1.mp4 -qscale 4 1.mpg
(2) ffmpeg -i 2.mp4 -qscale 4 2.mpg
(3) cat 1.mpg 2.mpg | ffmpeg -f mpeg -i - -qscale 6 -vcodec mpeg4 output.mp4
注释:mpeg是支持简单拼接的,所以 mp4 --> mpeg --> mp4.- 视频拼接 ts
(1) ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
(2) ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
(3) ffmpeg -i “concat:1.ts|2.ts” -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
注释: ts流可以 concate,所以 mp4 --> ts --> concate ts --> mp4.- 视频合并
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
(1)hstack/vstack 代表水平和垂直方向
(2)xstack 用户自己排版
备注:视频output.mp4只会保留input1的音频- 把mp3文件合并到mp4
ffmpeg -i output.mp4 -i audio3.mp3 -c:v copy -c:a aac -strict experimental success.mp4- 其它参数用法: ffmpeg 官网参数简介
ffplay
- 播放yuv视频
ffplay -pixel_format yuv420p -video_size 720x480 -framerate 25 yuv420p_test.yuv
注释:rgb24,nv21等格式- 播放rgb视频
ffplay -i nv21_118.rgb -pix_fmt rgb24 -s 640x480- 循环播放
ffplay pm.mp4 -loop 10
ffprobe
- 主要用于检测多媒体信息(时长、分辨率、帧率、音频采样率、声道数等)
- ffprobe -i input.mp4 -show_streams -show_format -print_format json
(1)print_format支持:json和xml
mplayer
- 播放yuv视频
mplayer -demuxer rawvideo -rawvideo w=1280:h=720 v4l2.yuv
V4L2
查看信息
- 查看设备信息
v4l2-ctl -d /dev/video2 --all
UVC
查看信息
- 打开视频并配置图像参数
guvcview -d /dev/video2
YUV 测试文件下载
- http://trace.eas.asu.edu/yuv/
- http://media.xiph.org/video/derf/
流媒体 - 02 常用命令(gst+ffmpeg+v4l2)相关推荐
- ffmpeg 常用基本命令和ffmpeg处理RTMP流媒体的常用命令
ffmpeg 常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i in ...
- Linux 02 常用命令,重点使用
目录管理 绝对路径和相对路径 Linux的目录结构为树状结构,最顶级的目录为根目录 / . 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 绝对路径: 路径的写法,由根目录 / 写起 ...
- FFmpeg 常用命令汇总
https://www.yuv420.com/2019/12/23/ffmpeg-chang-yong-ming-ling-hui-zong/ 引言 开源音视频处理工具FFMPEG以其强大的功能而在音 ...
- FFmpeg入门之常用命令
ffmpeg常用命令 常用命令分类 ffmpeg处理流程 基本信息查询 如命令行: ffmpeg -codecs 录制命令 UBUNTU上录制mp4的命令 ffmpeg -thread_queue_s ...
- FFmpeg:常用命令小笔记
https://code.videolan.org/videolan/x264/FFmpeg的详细介绍可以查看官网wiki提供的一些信息,这里只是列举具体几种常用的命令 一:格式转换 #普通封装格式的 ...
- 【网络通信 -- 直播】FFMPEG 简介与常用命令总结
[网络通信 -- 直播]FFMPEG 简介与常用命令总结 [1]FFMPEG 简介 FFmpeg,项目的名称来自 MPEG 视频编码标准,"FF"代表"Fast Forw ...
- FFMPEG转码常用命令研究
ffmpeg简介 官网链接是http://www.ffmpeg.org/上有说明,它是音视频的分离,转换,解码的完全解决方案. 其中最重要的就是libavcodec库.它被mplayer或者xine ...
- 【Linux】31. ffmpeg常用命令
原文网址 使用网络上的各种转码软件,比如爱剪辑,简直崩溃了!比如,它竟然强行把你要编辑的视频的前面,插入了他的广告!很不爽,决定用ffmpeg. ffmpeg做IT media的都知道,很强大,只不多 ...
- [FFmpeg] ffmpeg 常用命令
1. 视频转换 比如一个avi文件,想转为mp4,或者一个mp4想转为ts. ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.t ...
- FFmpeg常用命令参数
FFmpeg常用命令参数 陈拓 2021/08/31-2020/09/01 1. 视频文件转gif图像 命令格式: ffmpeg -ss 5 -t 10 -i input.mp4 -y -s 640x ...
最新文章
- 推荐Scum敏捷开发的几款工具
- NPOI 导入Excel和读取Excel
- Codeforces Round#310 div2
- 使用gui调试x86系统的汇编代码
- [蓝桥杯][算法提高VIP]聪明的美食家-dp
- 2017282110261-高级软件工程第二次作业
- java日期大小比较
- 工程师追查线上问题(或运维)常用的shell命令
- kali安装步骤失败 选择并安装软件_交通仿真建模软件Vissim7.0/6.0/5.3安装步骤
- Cocos Creator大厅+子游戏模式
- 猴子搬香蕉Java实现_猴子搬香蕉问题
- 查杀webshell木马
- CPU,GPU,TPU,NPU都是什么?
- MySQL数据库子查询#where、from、exists三大类型子查询总结
- Excel如何利用函数删除数据中空格
- Java struts mysql实现的薪资工资管理系统源码+运行教程
- HTML下拉菜单怎么做成横向,JQuery实现绚丽的横向下拉菜单
- Laravel自定义artisan命令在Sell中运行
- 传统行业如何搭建大数据团队?
- Python问题:FileNotFoundError: [WinError 2] 系统找不到指定的文件。(已解决)
热门文章
- 2021全国省市区街道社区五级SQL文件以及JAVA爬取代码
- java deprecated 注释_Java注释中的@deprecated与源代码中的@Deprecated
- 最简单的联想笔记本重装系统方法,一键重装系统图解
- 写好的python如何在其它电脑上运行_写人作文-写人作文300字-400字-500字
- The credentials mode of request initiated by the XMLHttpRequest is controlled by the withCredentials
- UE4遇到的各种奇葩问题
- Linux基础入门(详细教程)
- 用MATLAB计算常规矩阵函数 eAt sinA
- 如何锻炼腹肌更加有效?
- 《思考的技巧》- 学习总结