网站首页 > 博客文章 正文
玩转音视频开发(一)
提起现在比较火的直播、IPTV、视频会议、短视频等,都要依赖于音视频的一个音视频开发库--ffmppeg,它是音视频领域必须要了解而且要掌握的一个知识点。
那么具体它可以干什么呢?!简单的来说,当你打卡一个美好的景点、打开抖音录制一个美美的视频,然后打开剪影开始制作视频、加入字幕和音乐以及加入动效,最后分享出去。ffmpeg就是对视频进行转码、剪辑、加入动效等。
小试牛刀
将一个mp4格式的视频转成mov格式
ffmpeg -i 1.mp4 1-3.mov # 将一个mp4格式的影片转成avi格式
# 其他属性
# -ss 开始截取时间
# -t # 结束截取时间
# -vcodec 编码方式
# -vf scale=720X120 分辨率
# -b:v 4M 视频码率
看到这个结果,说明转码成功了。
时间太久、可以进行截取
ffmpeg -i 1.mp4 -vf -ss 00:00:00 -t 00:00:10 scale=1080X720 1-3.mov # 转码
# 转码成功后
ffplay 1-3.mov
如果感觉文字不好看,我们可以执行
ffplay -window_title "雨夜的博客" 1-3.mov
如何给视频加图片水印
ffmpeg -i input.mp4 -vf "movie=logo.png[wm];[in][wm]overlay=30:10[out]" output.mp4 #给视频加图片水印
如果看到上图的画面说明添加成功。 滤镜特效很多后期会专门做一期ffmpeg滤镜特效的课程,这里就不一一介绍了。
流媒体
rtmp
RTMP(Real Time Message Protocol) 有 Adobe 公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放。
rtsp
RTSP (Real-Time Stream Protocol)由Real Networks 和 Netscape共同提出的,基于文本的多媒体播放控制协议。RTSP定义流格式,流数据经由RTP传输;RTSP实时效果非常好,适合视频聊天,视频监控等方向。
hls
HLS ( HTTP Live Streaming)苹果公司提出的流媒体协议,直接把流媒体切片成一段段,信息保存到m3u列表文件中,可以将不同速率的版本切成相应的片;播放器可以直接使用http协议请求流数据,可以在不同速率的版本间自由切换,实现无缝播放;省去使用其他协议的烦恼。缺点是延迟大小受切片大小影响,不适合直播,适合视频点播。
总结:HLS 延迟大,适合视频点播;RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控;RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。
主要还是要掌握rtmp的推流方式、因为快手、B站,等短视频平台的推流方式就是rtmp。
先获取推流的地址和串流密匙。
ffmpeg -re -i ChineseMusic.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv "rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxxx_xxxxx&key=xxxxxxxxxxxxx&schedule=rtmp&pflag=1"
如果看到
证明推流成功了。
多个平台推流方式、也是可以的,但是要获取它的推流地址和密匙就可以了。
# 只需要加个map 0就可以实现多路推流
ffmpeg -re -i ChineseMusic.mp4 -vcodec libx264 -acodec aac -strict -2 map 0 -f flv "rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxxx_xxxxx&key=xxxxxxxxxxxxx&schedule=rtmp&pflag=1|rtmp://sendtc3.douyu.com/live/11539413rO8dWUmC?wsSecret=xxxxxxxxxxxxxxxxxxxx&wsTime=6438ed63&wsSeek=off&wm=0&tw=0&roirecognition=0&record=flv&origin=tct&txHost=sendtc3.douyu.com“
本次讲解以ffmpeg基础命令来讲解了基本使用和常用的流媒体方式和短视频常用的推流方式和方法。下节将通过Python语言的方式如何在应用中使用ffmpeg。
猜你喜欢
- 2025-03-19 Qt网络编程深度实践:如何构建支持断点续传的工业级文件传输系统
- 2025-03-19 c++音视频开发FFmpeg介绍与基础知识理解
- 2025-03-19 音视频开发之音频基础知识!(音视频开发入门)
- 2025-03-19 Qt/C++音视频开发逐帧播放/上一帧下一帧/切换播放进度/实时解码
- 2025-03-19 嵌入式开发、C++后台开发、C++音视频开发怎么选择?
- 2025-03-19 音视频开发真的在C++中最难吗?看看专家怎么说
- 2025-03-19 离谱!用C++ Qt 写的播放器竟能硬解4K
- 2025-03-19 24h教你做一个Qt版俄罗斯方块!信号槽优化/皮肤系统/多线程音效
- 2025-03-19 音视频SDK直播连麦功能:从0到1的开发实践
- 2025-03-19 音视频互动APP的开发(音视频开发一般在什么平台)
你 发表评论:
欢迎- 374℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 369℃用AI Agent治理微服务的复杂性问题|QCon
- 360℃初次使用IntelliJ IDEA新建Maven项目
- 353℃Maven技术方案最全手册(mavena)
- 351℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 349℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 348℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 344℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)