移动端流媒体
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