如果没有用户输入,m3u8的VLC批量转换将不会移动到下一个文件

时间:2014-07-22 20:05:58

标签: batch-file vlc

我有一个批处理文件应该打开文件夹中的每个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

1 个答案:

答案 0 :(得分:0)

在这里删除顶行:如果我是正确的,则不需要

 vlc://quit
GOTO :eof

调用VLC的线路在这里工作,并按预期结束 - 因此检查此行为的另一项是在 VLC Tools menu > preferencesInferface子部分中有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