我有一个批处理文件应该打开文件夹中的每个m3u8文件,将其流式传输到mp4文件并移动到下一个文件。视频的长度各不相同,m3u8文件似乎没有关于长度的任何信息。批处理文件的工作方式除外,当到达流的末尾时,它表示" {0048ef84}主播放列表调试:死输入"然后它只是暂停和等待。如果我然后关闭命令提示符窗口,另一个询问我是否要结束批处理,如果我说不,则弹出另一个窗口并移动到下一个文件。有人知道我可以在没有用户输入的情况下做到这一点吗?这是代码:
@ECHO OFF
FOR /R %%G IN (*.m3u8) DO (CALL :SUB_VLC "%%G")
FOR /R %%G IN (*.m3u8.mp*) DO (CALL :SUB_RENAME "%%G")
GOTO :eof
:SUB_VLC
SET _firstbit=%1
SET _qt="
CALL SET _newnm=%%_firstbit:%_qt%=%%
SET _commanm=%_newnm:,=_COMMA_%
REM echo %_commanm%
CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I dummy -vvv %1 --file-caching=300 --sout=#transcode{vcodec="h264",acodec="mpga",ab="128","channels=2",samplerate="44100"}:standard{access="file",mux="mp4",dst="%_commanm%.mp4"} vlc://quit
GOTO :eof
:SUB_RENAME
SET _origfnm=%1
SET _endbit=%_origfnm:*.m3u8=%
CALL SET _newfilenm=%%_origfnm:.m3u8%_endbit%=.mp4%%
SET _newfilenm=%_newfilenm:_COMMA_=,%
COPY %1 %_newfilenm%
DEL %1
GOTO :eof
:eof
答案 0 :(得分:0)
在这里删除顶行:如果我是正确的,则不需要
vlc://quit
GOTO :eof
调用VLC的线路在这里工作,并按预期结束 - 因此检查此行为的另一项是在
VLC Tools menu > preferences
和Inferface
子部分中有pause on last frame of video
的复选框,可能会影响您。
您不需要CALL
关键字来启动VLC,但它仍可以使用它。
修改强>
这使用与您的代码相同的VLC命令。在命令行上启动一个file.m3u8
批处理文件,如下所示,它将对文件进行转码,在VLC退出后,您将看到一个提示,点击任何键将重新启动同一个文件:
changefile.bat "my file.m3u8"
如果你没有看到VLC has quit
而没有关闭它,那么VLC就会出现问题需要排序。
让我知道结果。
@echo off
:loop
set "_commanm=file"
CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I dummy -vvv %1 --file-caching=300 --sout=#transcode{vcodec="h264",acodec="mpga",ab="128","channels=2",samplerate="44100"}:standard{access="file",mux="mp4",dst="%_commanm%.mp4"} vlc://quit
echo VLC has quit
pause
goto :loop
pause