专业的编程技术博客社区

网站首页 > 博客文章 正文

玩转音视频开发(一)(音视频开发进阶)

baijin 2025-03-19 10:26:19 博客文章 14 ℃ 0 评论

玩转音视频开发(一)


提起现在比较火的直播、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。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表