吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1296|回复: 9
收起左侧

[经验求助] ffmpeg 推流脚本从sh脚本转换成bat脚本或者cmd脚本

[复制链接]
snoopytl 发表于 2023-4-1 21:56
25吾爱币
自己有推流需求,看到网上有个ffmpeg的推流脚本,很好用,部署在云服务器上没问题,可就是云服务器在国外,国内访问始终有些卡,现在自己有闲置的windows ,所以想通过windows做推流
需求:
1.将此sh脚本转换成windows能识别的bat或者cmd脚本,核心内容保持一致。
2.实现使用ffmpeg推流某一文件夹下的所有MP4的命令。
以上满足其一即可。
源代码如下:

[Bash shell] 纯文本查看 复制代码
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#=================================================================#
#   System Required: CentOS7 X86_64                               #
#   Description: FFmpeg Stream Media Server                       #
#   Author: LALA                                    #
#   Website: https://www.lala.im                                  #
#=================================================================#

# 颜色选择
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
font="\033[0m"

ffmpeg_install(){
# 安装FFMPEG
read -p "你的机器内是否已经安装过FFmpeg4.x?安装FFmpeg才能正常推流,是否现在安装FFmpeg?(yes/no):" Choose
if [ $Choose = "yes" ];then
    yum -y install wget
    wget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz
    tar -xJf ffmpeg-4.0.3-64bit-static.tar.xz
    cd ffmpeg-4.0.3-64bit-static
    mv ffmpeg /usr/bin && mv ffprobe /usr/bin && mv qt-faststart /usr/bin && mv ffmpeg-10bit /usr/bin
fi
if [ $Choose = "no" ]
then
    echo -e "${yellow} 你选择不安装FFmpeg,请确定你的机器内已经自行安装过FFmpeg,否则程序无法正常工作! ${font}"
    sleep 2
fi
    }

stream_start(){
# 定义推流地址和推流码
read -p "输入你的推流地址和推流码(rtmp协议):" rtmp

# 判断用户输入的地址是否合法
if [[ $rtmp =~ "rtmp://" ]];then
    echo -e "${green} 推流地址输入正确,程序将进行下一步操作. ${font}"
      sleep 2
    else  
      echo -e "${red} 你输入的地址不合法,请重新运行程序并输入! ${font}"
      exit 1
fi 

# 定义视频存放目录
read -p "输入你的视频存放目录 (格式仅支持mp4,并且要绝对路径,例如/opt/video):" folder

# 判断是否需要添加水印
read -p "是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持(yes/no):" watermark
if [ $watermark = "yes" ];then
    read -p "输入你的水印图片存放绝对路径,例如/opt/image/watermark.jpg (格式支持jpg/png/bmp):" image
    echo -e "${yellow} 添加水印完成,程序将开始推流. ${font}"
    # 循环
    while true
    do
        cd $folder
        for video in $(ls *.mp4)
        do
        ffmpeg -re -i "$video" -i "$image" -filter_complex overlay=W-w-5:5 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv ${rtmp}
        done
    done
fi
if [ $watermark = "no" ]
then
    echo -e "${yellow} 你选择不添加水印,程序将开始推流. ${font}"
    # 循环
    while true
    do
        cd $folder
        for video in $(ls *.mp4)
        do
        ffmpeg -re -i "$video" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv ${rtmp}
        done
    done
fi
    }

# 停止推流
stream_stop(){
    screen -S stream -X quit
    killall ffmpeg
    }

# 开始菜单设置
echo -e "${yellow} CentOS7 X86_64 FFmpeg无人值守循环推流 For LALA.IM ${font}"
echo -e "${red} 请确定此脚本目前是在screen窗口内运行的! ${font}"
echo -e "${green} 1.安装FFmpeg (机器要安装FFmpeg才能正常推流) ${font}"
echo -e "${green} 2.开始无人值守循环推流 ${font}"
echo -e "${green} 3.停止推流 ${font}"
start_menu(){
    read -p "请输入数字(1-3),选择你要进行的操作:" num
    case "$num" in
        1)
        ffmpeg_install
        ;;
        2)
        stream_start
        ;;
        3)
        stream_stop
        ;;
        *)
        echo -e "${red} 请输入正确的数字 (1-3) ${font}"
        ;;
    esac
    }

# 运行开始菜单
start_menu

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fortytwo 发表于 2023-4-3 15:41
[Shell] 纯文本查看 复制代码
@echo off
set PATH=C:\Windows\System32;C:\Windows\System32\wbem;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;%PATH%
setlocal EnableDelayedExpansion

REM ================================================= #
REM    System Required: CentOS7 X86_64                #
REM    Description: FFmpeg Stream Media Server        #
REM    Author: LALA                                   #
REM    Website: [url]https://www.lala.im[/url]                   #
REM ================================================= #

REM Color selection
set red=^[[0;31m
set green=^[[0;32m
set yellow=^[[0;33m
set font=^[[0m

call :ffmpeg_install
call :stream_start
goto :eof

:ffmpeg_install
REM Install FFMPEG
set /p Choose=你的机器内是否已经安装过FFmpeg4.x?安装FFmpeg才能正常推流,是否现在安装FFmpeg?(yes/no):
if "%Choose%"=="yes" (
    powershell -command "Invoke-WebRequest -Uri [url]https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz[/url] -OutFile ffmpeg.tar.xz"
    tar -xf ffmpeg.tar.xz
    cd ffmpeg-4.0.3-64bit-static
    mv ffmpeg.exe C:\Windows\System32\ffmpeg.exe
    mv ffprobe.exe C:\Windows\System32\ffprobe.exe
    mv qt-faststart.exe C:\Windows\System32\qt-faststart.exe
    mv ffmpeg-10bit.exe C:\Windows\System32\ffmpeg-10bit.exe
)
if "%Choose%"=="no" (
    echo.%yellow% 你选择不安装FFmpeg,请确定你的机器内已经自行安装过FFmpeg,否则程序无法正常工作! %font%
    timeout /t 2
)
goto :eof

:stream_start
REM Define streaming address and streaming code
set /p rtmp=输入你的推流地址和推流码(rtmp协议):
REM Verify that the user's input address is legal
if NOT [%rtmp:rtmp://=%]==[%rtmp%] (
    echo.%green% 推流地址输入正确,程序将进行下一步操作. %font%
    timeout /t 2
) else (
    echo.%red% 你输入的地址不合法,请重新运行程序并输入! %font%
    exit /b 1
)

REM Define video storage directory
set /p folder=输入你的视频存放目录 (格式仅支持mp4,并且要绝对路径,例如C:\opt\video):
REM Determine if a watermark needs to be added
set /p watermark=是否需要为视频添加水印?水印位置默认在右上方,需要较好CPU支持(yes/no):
if "%watermark%"=="yes" (
    set /p image=输入你的水印图片存放绝对路径,例如C:\opt\image\watermark.jpg (格式支持jpg/png/bmp):
    echo.%yellow% 添加水印完成,程序将开始推流. %font%
    REM Loop
    :loop1
    pushd %folder%
    for %%I in (*.mp4) do (
        ffmpeg.exe -re -i "%%~fI" -i "%image%" -filter_complex overlay=W-w-5:5 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv %rtmp%
    )
    popd
    goto :loop1
)
if "%watermark%"=="no" (
    echo.%yellow% 你选择不添加水印,程序将开始推流. %font%
    REM Loop
    :loop2
    pushd %folder%
    for %%I in (*.mp4) do (
        ffmpeg.exe -re -i "%%~fI" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv %rtmp%
    )
    popd
    goto :loop2
)
goto :eof
jingjim 发表于 2023-4-11 15:08
@echo off
setlocal EnableDelayedExpansion
set PATH=C:\ffmpeg;%PATH%
if not exist C:\ffmpeg mkdir C:\ffmpeg
If not exist C:\ffmpeg\ffmpeg.exe (
    wget --no-check-certificate https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z -P C:\ffmpeg\
    7z x -y C:\ffmpeg\ffmpeg-git-full.7z -oC:\ffmpeg\
    for /D %%i in (C:\ffmpeg\ffmpeg-git-*) do move "%%i\bin\*.exe" C:\ffmpeg\
)
set ffmpeg_input=
echo Input the address and push code (rtmp protocol):
set /p rtmp=
if [%rtmp%] == [] (exit /b)
if not "%rtmp%" == !rtmp:%%a/%%b! (
    echo Input the address and push code \(rtmp protocol\):
    exit /b
)
echo Your input is correct, the program will proceed to the next step.
echo Enter the absolute path of the directory where the video is stored \(the format only supports mp4, and it must be an absolute path, such as C:\video\):
set /p folder=
if [%folder%] == [] (exit /b)
echo Do you need to add a watermark to the video? The watermark position is by default in the upper right corner, and good CPU support is required \(yes\/no\):
set /p watermark=
if /I !watermark! == yes (
    echo Enter the absolute path of your watermark image storage, such as C:\image\watermark.png \(the format supports jpg/png/bmp\):
    set /p image=
    if [%image%] == [] (exit /b)
    set ffmpeg_input=-re -i "%%~fi" -i "%image%" -filter_complex overlay=W-w-5:5 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv %rtmp%
) else (
    set ffmpeg_input=-re -i "%%~fi" -c:v copy -c:a aac -b:a 192k -strict -2 -f flv %rtmp%
)
echo Pushing videos now, press Ctrl + C to stop ...
:push
for /F "tokens=*" %%i in ('dir %folder%\*.mp4 /B /A-D') do (
    setlocal EnableDelayedExpansion
    ffmpeg.exe -y !ffmpeg_input!
    endlocal
)
goto push
sdpc120 发表于 2023-7-2 19:03
lanyijin 发表于 2023-8-5 22:10
看不懂,太难了。有没有ffmpeg UI界面版?
ylz2739 发表于 2023-10-29 09:42
有原成品吗?能不能分享一下
KeDre 发表于 2023-11-21 07:45
这几天刚好跑通这个无人直播推流小项目,里面下载ffmpeg的地址太老了跑不通,换了个新地址下载就可以了,这是我总结流程的飞书文档,https://jio17xnjr1f.feishu.cn/docx/FxavdJsqeohlOhxHfQocpdtonwh
希望可以帮到需要的伙伴,现在我在寻找小红书的直播推流地址和推流码,不知道咋弄到,找了一些国产软件还没用就要钱,所以就都删除了,现在还没找到,有哪位大佬知道如何获取的?
 楼主| snoopytl 发表于 2023-11-22 16:46
没想到还有人有和我一样的需求,最终还是我的自己的比较符合我,这是我B站直播的脚本,保存成bat,需要的时候双击就好,我先附上代码,需要的朋友照猫画虎吧
[Bash shell] 纯文本查看 复制代码
@echo off

set "path=E:\8T-all\11.发布视频\剪辑版\"
set "rtmp=rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_34640491_7814518&key=ff9a209d94e58328e6ff630e86877cc5&schedule=rtmp&pflag=1"
:loop
for %%i in ("%path%\*.mp4") do (
    echo 正在处理 %%i
    C:\ffmpeg-master-latest-win64-gpl\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe -re -i "%%i" -vcodec copy -acodec copy -f flv "%rtmp%"
)
goto loop
pause


1.定义一个路径,set path ,这个路径是存放你需要直播时播放的视频内容
2.定义一个直播地址,这个地址就是B站给的直播地址
然后就是循环执行,播放路径里的所有后缀是mp4 的文件,这里视频和音频都不做任何压缩,源码输出,

大家觉得有用的话,记得点个赞啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-29 04:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表