Board logo

标题: [代码合集] 有人能帮忙写一个能给文件夹内的MP4视频批量加片头和片尾的批处理吗 [打印本页]

作者: syftc    时间: 2017-7-28 20:12     标题: 有人能帮忙写一个能给文件夹内的MP4视频批量加片头和片尾的批处理吗

网上找了好久都找不到这类的
作者: 老刘1号    时间: 2017-7-28 21:03

看到没,这就是被百度惯坏了的标准伸手党
作者: 3518228042    时间: 2017-7-28 23:48

以前在XP能直接合并的工具现在win7不知道怎么都用不了。

安装MKVToolNix,将命令复制保存为BAT放入需要转换的视频的文件夹。
在视频所在文件夹新建个“合并”文件夹,将片头.MP4和片尾.MP4放进“合并”文件夹,
选择的片头片尾必须从关键帧处切割下来的,不然不然播放到连接处稍微有点小卡顿。
  1. @CD /D "%~dp0"
  2. @for %%i in (*.flv *.mp4 *.mkv *.mov) do "C:/Program Files/MKVToolNix\mkvmerge.exe" "--language" "0:chi" "--default-track" "0:yes" "--forced-track" "0:no" "--language" "1:chi" "--default-track" "1:yes" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "合并\\片头%%~xi" ")" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "+" "(" "%%i" ")" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "+" "(" "合并\\片尾%%~xi" ")" "--track-order" "0:0,0:1" "--append-to" "1:0:0:0,2:0:1:0,1:1:0:1,2:1:1:1" -o "合并\\%%~ni.mkv"
  3. pause
复制代码
不知道是不是最新的或多轨AAC的,那样容易合并后没后面声音,还有就是声音不同步,可以在里面间隔位置加个 "--aac-is-sbr" "1:1",比如放在"--forced-track" "0:no"后面,间隔是有空格的
作者: syftc    时间: 2017-7-29 10:40

回复 3# 3518228042


    太感谢了……!等等试一下
作者: syftc    时间: 2017-7-29 11:50

回复 3# 3518228042


    Error: The track number 0 from the file '1.mp4' cannot be appended to the tr
number 0 from the file '合并\\片头.mp4'. The track parameters do not match.  你好 提示这个错误 应该怎么做
作者: 3518228042    时间: 2017-7-29 15:50

本帖最后由 3518228042 于 2017-7-29 18:47 编辑

https://www.videohelp.com/software/MP4Box
用这个,不要下载低于0.7版本的MP4Box,不然拼接处后面的声音有可能就没了(HE-AAC、HE-AACv2、AAC+这些新出来的AAC)
  1. @CD /D "%~dp0"
  2. @for %%i in (*.mp4) do "C:\Program Files\GPAC\mp4box.exe" -cat "合并\片头.mp4"  -cat "%%i" -cat "合并\片尾.mp4" -new "合并\片头-%%~ni-片尾.mp4"
  3. pause
复制代码
MediaInfo检查下编码,参数一致不,比如不能1080P的片头和720P的视频拼接,
MPEG-2不能和AVC拼接,AC3不能AAC拼接等等,保持编码一致没问题。
这个把音频的ACC选项加进去了
  1. @CD /D "%~dp0"
  2. @for %%i in (*.flv *.mp4 *.mkv *.mov) do "C:/Program Files/MKVToolNix\mkvmerge.exe" "--language" "0:chi" "--default-track" "0:yes" "--forced-track" "0:no" "--aac-is-sbr" "1:1" "--language" "1:chi" "--default-track" "1:yes" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "合并\\片头%%~xi" ")" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "+" "(" "%%i" ")" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "+" "(" "合并\\片尾%%~xi" ")" "--track-order" "0:0,0:1" "--append-to" "1:0:0:0,2:0:1:0,1:1:0:1,2:1:1:1" -o "合并\\片头-%%~ni-片尾.mkv"
  3. pause
复制代码
MKVToolNix更新地址,比如早期的不能合并AVC等编码的视频
https://www.fosshub.com/MKVToolNix.html

MediaInfo更新地址
https://mediaarea.net/en/MediaInfo
作者: 523066680    时间: 2017-7-29 15:55

只想到 ffmpeg ,不知道格式支持怎么样
http://www.cnblogs.com/jameszh/p/5547525.html
作者: syftc    时间: 2017-7-29 16:43

回复 3# 3518228042


    感谢! 试了下 果然是分辨率不一样     能否再加一条命令使文件名能直接以要加片头片尾的视频名称命名呢? 谢谢了
作者: syftc    时间: 2017-7-29 16:47

回复 7# 523066680


    能用FFMPEG的话最好了 目前我搜索了好久只会 合并一个目录下的 视频
(for %i in (*.mp4) do @echo file '%i') > mylist.txt  
ffmpeg -f concat -i mylist.txt -c copy output.mp4
    因为我不会批处理编程  平时因为工作原因 加片头片尾 每次都要用剪辑软件输出非常浪费时间  最近才发现有批处理这样方便的东西 !
作者: syftc    时间: 2017-7-29 16:51

回复 6# 3518228042


    不好意思刚才看了下好像 是直接以视频名称命名的 因为我文件名改来改去 弄乱了抱歉
作者: 3518228042    时间: 2017-7-29 18:29

最后的%%~ni.mkv就是输出文件名,直接改,片头-%%~ni-片尾.mkv
查了下ffmpeg不能直接拼接MP4,转码其他格式后拼接再转换MP4才可以,
我拿一个清晰度不错的x264编码的MP4转码拼接再弄会MP4,
发现视频有16x16像素的方格,视频就像是俄罗斯方块拼成的画面,清晰度严重下降。
作者: syftc    时间: 2017-7-29 18:45

回复 11# 3518228042


    我刚才又试了下 我上面找的那个ffmpeg命令是可以直接拼接mp4文件的 不过文件名似乎不能有中文




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2