移动端流媒体

1. Android原生库

MediaCodec是Android提供的用于对音视频进行编解码的类,它通过访问底层的codec来实现编解码的功能。

不能跨平台,功能尚可,不需要集成第三方库。

 

2. FFmpeg库

跨平台,功能强大,安卓端动态库文件比较大(50MB)

开源库:https://github.com/tanersener/mobile-ffmpeg

镜像库:https://gitee.com/iplusplus/mobile-ffmpeg/

文档:https://www.ffmpeg.org/ffmpeg-all.html

 

命令说明:

-acodec copy -vn -an
指定音频编码器 copy:代表只拷贝源数据不编码解码 vn:代表无视频 an:代表无音频

注意:在手机平台,不要再一帧内多次调用命令行,否则会有崩溃的可能性。 

视频信息查看

查看信息

// 查看视频文件的元信息,比如编码格式和比特率,可以只使用-i参数。
$ ffmpeg -i input.mp4

// 上面命令会输出很多冗余信息,加上-hide_banner参数,可以只显示元信息。
$ ffmpeg -i input.mp4 -hide_banner

视频剪辑

// 视频剪辑
// 剪辑一段视频从0分0秒开始到7分0秒
ffmpeg -ss 0:0:0 -t 0:7:00 -i source.mp4 -vcodec copy -acodec copy output.mp4

视频加速

// 视频加速
// 备注:调整速度倍率范围[0.25, 4]
ffmpeg -i input.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4

视频音频合并

// 视频音频合并
// 注意:如果音频长度大于视频长度需要截断
ffmpeg -i input.mp4 -i input.m4a -c:v copy -c:a aac -shortest output.mp4

视频拼接

// 视频拼接
// 备注:支持MP4
ffmpeg -f concat -safe 0 -i fileList.txt -c copy output.mp4

// fileList.txt
file 'a.mp4'
file 'b.mp4'
file 'c.mp4'

提取音频

// 提取音频
ffmpeg -i input.mp4 -vn -codec copy output.m4a

视频转换分辨率

// 视频转换分辨率
// 备注:1280:-1 会保持宽高等比缩放
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

视频添加水印

// 左上角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay output.mp4
// 右上角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4
// 左下角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4
// 右下角
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4

检测视频错误

// 检测视频内容是否有错误
// -v debug 会显示所有信息
ffmpeg -v error -i input.mp4 -f null abc.mp4

 

参考:https://www.jianshu.com/p/3c8c4a892f3c

参考:https://www.jianshu.com/p/98293e17c824

posted @ 2021-08-19 10:10  何文西  阅读(134)  评论(0编辑  收藏  举报