Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如果没有用户输入,m3u8的VLC批处理转换将不会移动到下一个文件_Batch File_Vlc - Fatal编程技术网

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

Batch file 如果没有用户输入,m3u8的VLC批处理转换将不会移动到下一个文件,batch-file,vlc,Batch File,Vlc,我有一个批处理文件,应该打开文件夹中的每个m3u8文件,将其流式传输到mp4文件,然后移动到下一个文件。视频的长度各不相同,m3u8文件中似乎没有关于长度的任何信息。批处理文件可以工作,但当到达流的末尾时,它会显示{0048ef84}主播放列表debug:dead input,然后它只是暂停并等待。如果我关闭命令提示符窗口,另一个窗口会询问我是否要结束批处理,如果我说不,它会弹出另一个窗口并移动到下一个文件。有没有人知道我可以不用用户输入就能做到这一点?代码如下: @ECHO OFF FOR

我有一个批处理文件,应该打开文件夹中的每个m3u8文件,将其流式传输到mp4文件,然后移动到下一个文件。视频的长度各不相同,m3u8文件中似乎没有关于长度的任何信息。批处理文件可以工作,但当到达流的末尾时,它会显示{0048ef84}主播放列表debug:dead input,然后它只是暂停并等待。如果我关闭命令提示符窗口,另一个窗口会询问我是否要结束批处理,如果我说不,它会弹出另一个窗口并移动到下一个文件。有没有人知道我可以不用用户输入就能做到这一点?代码如下:

 @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

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

 vlc://quit
GOTO :eof
调用VLC的行在这里工作,并以它应该的方式结束-因此要检查此行为的另一项在 VLC工具菜单>首选项,在Inferface小节中有一个复选框,可在可能影响您的视频的最后一帧暂停

启动VLC不需要CALL关键字,但它仍然可以使用

编辑

这将使用与代码相同的VLC命令。在命令行上启动带有一个file.m3u8的批处理文件,如下所示,它将对文件进行转码,VLC退出后,您将看到一个提示,点击任意键将重新启动同一文件:

changefile.bat my file.m3u8

如果您没有看到VLC在未关闭它的情况下退出,那么必须对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

谢谢你……我做到了,但没有产生任何影响。虚拟窗口仍然在结尾处暂停,我需要手动关闭它,然后回答“否”以结束批处理,使其移动到未选择该选项的下一个文件。也许我可以给你一个m3u8文件,你可以自己看看发生了什么?[016161a4]主音频输出调试:删除模块directsound这很奇怪,因为实际上视频文件在这一点上是完整的。它完全可播放,音频和视频工作正常。是的,我认为关闭时可能是VLC中的一个bug。