1.问题如下
使用FFmpeg对上传到centos上的视频文件进行压缩,如下图,有声音却无法显示图像:
把压缩后的视频文件下载到本地,能正常播放。但是使用html的vedio标签进行播放,却如下图,有声音无图片。
2.解决方式
1.安装lib264解码库
此处参考博客:https://pengrl.com/p/20029/
#!/usr/bin/env bash
# 源码编译ffmpeg静态库以及可执行文件
# 需要root权限
# 本脚本的最新版本请访问 https://pengrl.com/p/20029/
set -x
# 编译yasm,ffmpeg依赖的汇编优化的库
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
cd ..
# 编译nasm,x264依赖的汇编优化的库
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
tar xvf nasm-2.14.02.tar.gz
cd nasm-2.14.02/
./configure
make
make install
cd ..
# 编译x264
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar xvf x264-master.tar.bz2
cd x264-master/
./configure
make
make install-lib-static
cd ..
# 编译ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
tar xvf ffmpeg-4.2.2.tar.bz2
cd ffmpeg-4.2.2
./configure --disable-debug --enable-static --enable-libx264 --enable-gpl --extra-libs=-ldl --enable-openssl
make
make install
./ffmpeg
2.执行压缩视频命令
./ffmpeg :此处为linux的ffmpeg的bin目录下的ffmpeg命令
-y:指如果此处有重名文件,不用提示,自动覆盖
-i:指定输入文件
-r 10 -b:a 32k:指定成压缩的编码参数
-vcodec copy:设定视频编解码器,此处即设为原视频文件的视频编码
-max_muxing_queue_size 9999:防止执行命令时出现“Too many…”报错
./ffmpeg -y -i /home/ftpFile/images/gzsHnDjM.mp4 -r 10 -b:a 32k -vcodec copy -max_muxing_queue_size 9999 /home/ftpFile/images/gzsHnDjMCompress2.mp4
3.效果
执行成功后,压缩文件小于原文件大小
并且压缩文件能够正常播放:
原文 FFmpeg压缩视频后有声音无画面_瓜仙人的博客-CSDN博客
★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。
见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓