本文作者:包子也沉默

FFmpeg音视频整合

包子也沉默 3年前 (2019-06-29) ( 06-29 ) 1156 0条评论
摘要: 但是如果你是在本地使用的话,可以将下面两行代码进行修改StringshellCommand="/usr/bin/ffmpeg-i"+allTs+"-ccopy-bsf:aaac_adtstoasc-movflags+faststart"+videoOutputPath;String[]cmd={"/bin/sh","-c&quo

进行java小程序开发有用到FFmpeg整合音视频,下面是封装的几个方法,使用时可直接调用.

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

1:去除原有视频的音频

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

2: 将录音整合到去除音频的视频中

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

其实FFmpeg是可以直接将录音直接覆盖掉原有视频的声音的,但是在开发过程中发现录音和有的视频不能整合,也可能是对FFmpeg不够理解,所以稳妥的方法就是把它拆分为两个命令.(如上)

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

3: MP4格式的视频转换为Ts格式

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

4: 多个ts视频整合为一个并转码MP4格式

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

这个方法在linux下可以正常使用的,但是如果你是在本地使用的话,可以将下面两行代码进行修改

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

String shellCommand = "/usr/bin/ffmpeg -i " + allTs +" -c copy -bsf:a aac_adtstoasc -movflags +faststart " + videoOutputPath;
String[] cmd = {"/bin/sh", "-c", shellCommand};

5: 合并多段音频

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

修改方式:1:将第一行代码中的 "/usr/bin" 去除,直接使用ffmpeg进行拼接.

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

                 (在linux下使用ffmpeg命令,因为它相当于一个shell脚本,需要让linux可以向在本地cmd一样执行) 

>处理->编码->封装->推流->分发采集:视频YUV音频:PCM处理:磨皮,美白,会涉及到人脸识别技术和皮肤识别技术;编码:压缩编码,根据前后帧的特点可以实现压缩;连续

               2:将第二行代码去除

点音质好,存储小,使用越来越广泛使用广泛缺点-会有一定的失真综上:采用H.254+acc的方案是比较合适的;封装:封装就是对编码后的内容进行打包;另外可以打上时间戳,避免音画不同步;推流:两种推流形式

因为开发时是多段视频进行整合,如果你是单个视频,则不需要 3 , 4 的两个方法.仅供参考,可根据自身需求自行调整.

点音质好,存储小,使用越来越广泛使用广泛缺点-会有一定的失真综上:采用H.254+acc的方案是比较合适的;封装:封装就是对编码后的内容进行打包;另外可以打上时间戳,避免音画不同步;推流:两种推流形式

第二种方案是 多段音频先进行合拼,也就是调用 5 这个方法 ,然后和整段视频合并 .

点音质好,存储小,使用越来越广泛使用广泛缺点-会有一定的失真综上:采用H.254+acc的方案是比较合适的;封装:封装就是对编码后的内容进行打包;另外可以打上时间戳,避免音画不同步;推流:两种推流形式

文章版权声明:除非注明,否则均为本站原创文章,转载或复制请以超链接形式并注明出处。
分享到:
赞 (0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

发表评论

快捷回复:

评论列表 (有 0条评论, 1156人围观) 参与讨论