srt学习笔记七:使用265推rtmp 博客分类: ffmpeg ffmpeg
程序员文章站
2024-03-14 16:08:40
...
概念:
视频码率:视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件
帧率:hz
FEC:前向纠错也叫前向纠错码(Forward Error Correction,简称FEC)
udp的基本粒子:
###################### ffmpeg 264 265. 转视频文件 ########
https://www.jianshu.com/p/b6216d8e3df8 265的有问题参考https://superuser.com/questions/785528/how-to-generate-an-mp4-with-h-265-codec-using-ffmpeg
视频转换
虽然可以转视频,但是输出流就不行了
这个不行##### ffmpeg -i chrome.mp4 -c:v libx265 -c:a copy -x265-params crf=25 rtmp://127.0.0.1/live/livestream
查看 ffmepg是否支持265 :brew info ffmpeg
这样看也不行,还是要装金山的265才行 https://github.com/ksvc/FFmpeg
######################### srs的 srt推rtmp #########################
srs的 rtmp推rtmp
####################### 金山的ffmpeg 和pingo推流服务 #######################
这个重要,好好看
https://www.pengrl.com/p/20044/
想要这个命令好使,mac自带的是不行的
./ffmpeg -re -i ~/Desktop/chrome.mp4 -c:a copy -c:v libx265 -f flv rtmp://127.0.0.1/live/livestream
安装支持265的ffmepg:
修改:libavcodec/libx264.c
把libavcodec/libx264.c中的x264_bit_depth全部替换成了大写的X264_BIT_DEPTH。
测试
./ffmpeg -re -i ~/Desktop/chrome.mp4 -c:a copy -c:v libx265 -f flv rtmp://127.0.0.1/live/livestream
可以了,但是还是需要一个接首流的server,
nginx-rtmp-module或者pingos
##########
参考但是不用这个 https://github.com/im-pingo/nginx-rtmp-module
这么装不行
./configure --prefix=/usr/local/nginx_rtmp --add-module=/opt/hao/ffmpeg/nginx-rtmp-module/ --with-openssl=/opt/hao/ffmpeg/openssl-1.1.1g
看pingos的安装程序,需要4个nginx模块,还是装pingo吧
运行服务 /usr/local/pingos/sbin/nginx
需要一些目录之类的自建
测试:
综上:
用金山的ffmpeg,支持265的推流,mac自带的不行
编译pingos作为流发服务器
ffmpeg-----265-----> pingos -------->ffplay
视频码率:视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件
帧率:hz
FEC:前向纠错也叫前向纠错码(Forward Error Correction,简称FEC)
udp的基本粒子:
ffmpeg -re -i chrome.mp4 -f h264 udp://127.0.0.1:6666 ffplay udp://127.0.0.1:6666
###################### ffmpeg 264 265. 转视频文件 ########
https://www.jianshu.com/p/b6216d8e3df8 265的有问题参考https://superuser.com/questions/785528/how-to-generate-an-mp4-with-h-265-codec-using-ffmpeg
视频转换
ffmpeg -i chrome.mp4 -c:v libx264 -preset slow -crf 22 -x264-params keyint=123:min-keyint=20 -c:a copy chrome.mkv ffmpeg -i chrome.mp4 -c:v libx265 -c:a copy -x265-params crf=25 output.mp4
虽然可以转视频,但是输出流就不行了
这个不行##### ffmpeg -i chrome.mp4 -c:v libx265 -c:a copy -x265-params crf=25 rtmp://127.0.0.1/live/livestream
查看 ffmepg是否支持265 :brew info ffmpeg
这样看也不行,还是要装金山的265才行 https://github.com/ksvc/FFmpeg
######################### srs的 srt推rtmp #########################
ffmpeg -re -i chrome.mp4 -vcodec copy -acodec copy -f mpegts 'srt://127.0.0.1:10080?streamid=#!::h=live/livestream,m=publish' ffplay -loglevel verbose "rtmp://127.0.0.1/live/livestream live=1"
srs的 rtmp推rtmp
ffmpeg -re -i ./chrome.mp4 -c copy -f flv rtmp://127.0.0.1/live/livestream ffplay -loglevel verbose "rtmp://127.0.0.1/live/livestream live=1"
####################### 金山的ffmpeg 和pingo推流服务 #######################
这个重要,好好看
https://www.pengrl.com/p/20044/
想要这个命令好使,mac自带的是不行的
./ffmpeg -re -i ~/Desktop/chrome.mp4 -c:a copy -c:v libx265 -f flv rtmp://127.0.0.1/live/livestream
安装支持265的ffmepg:
git clone https://github.com/ksvc/FFmpeg.git git reset --hard origin/release/3.4 ./configure --enable-static --enable-pic --disable-encoders --enable-encoder=aac --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265 --enable-libx265 --disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc --disable-demuxers --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=flv --enable-demuxer=h264 --enable-demuxer=hevc --enable-demuxer=hls --disable-muxers --enable-muxer=h264 --enable-muxer=flv --enable-muxer=f4v --enable-muxer=mp4 --disable-doc --extra-cflags="-fno-stack-check"
修改:libavcodec/libx264.c
把libavcodec/libx264.c中的x264_bit_depth全部替换成了大写的X264_BIT_DEPTH。
make -j8
测试
./ffmpeg -re -i ~/Desktop/chrome.mp4 -c:a copy -c:v libx265 -f flv rtmp://127.0.0.1/live/livestream
可以了,但是还是需要一个接首流的server,
nginx-rtmp-module或者pingos
##########
参考但是不用这个 https://github.com/im-pingo/nginx-rtmp-module
这么装不行
./configure --prefix=/usr/local/nginx_rtmp --add-module=/opt/hao/ffmpeg/nginx-rtmp-module/ --with-openssl=/opt/hao/ffmpeg/openssl-1.1.1g
看pingos的安装程序,需要4个nginx模块,还是装pingo吧
git clone https://github.com/pingostack/pingos 看README ./release.sh -i
运行服务 /usr/local/pingos/sbin/nginx
需要一些目录之类的自建
测试:
/opt/hao/ffmpeg/FFmpeg/ffmpeg -re -i ~/Desktop/chrome.mp4 -c:a copy -c:v libx265 -f flv rtmp://127.0.0.1/live/livestream /opt/hao/ffmpeg/FFmpeg/ffplay -loglevel verbose "rtmp://127.0.0.1/live/livestream live=1"
综上:
用金山的ffmpeg,支持265的推流,mac自带的不行
编译pingos作为流发服务器
ffmpeg-----265-----> pingos -------->ffplay