将子目录中的文件转换为 MP4

将子目录中的文件转换为 MP4

我把电影和连续剧集放在一个目录中,这个目录中显然有很多子目录和很多不同的格式。我们所有人都在不断添加新内容。我想做的是制作一个脚本,当我们中的一个人或所有人都添加了新内容时,我可以偶尔运行该脚本,该脚本将搜索该目录/子目录中的文件并将它们转换为 kodi/xbmc 可以流式传输到我可靠的旧 xbox 360 的格式。我正在运行 Gnome 16.04,我不确定这是否相关。

到目前为止,我已经找到了转换实际文件的代码;

for i in *mkv; do ffmpeg -i $i -vcodec copy -acodec copy "$i.mp4"; done

并且所有文件都位于;

/media/dave/Seagate Expansion Drive/Media

所以,这些就是我面临的问题。

  • mp4 是最好的选择吗?谷歌搜索并没有让我真正明白,有无数种不同的意见!到目前为止,它可以播放一些 MP4,但不是全部。

  • 如何调整这一小行代码来搜索不仅仅是 mkv - 还有 mpeg、avi、wmv、mov,您能想到的一切!我是否需要为每种不同的文件类型重复这一行代码?

  • 如何让它搜索子目录

  • 如何让它仅在转换成功时删除原始文件

  • 我如何设置 kodi/xbmc 以在启动时加载并最小化?

如能得到任何帮助、建议或指点来解决这个问题,我将不胜感激:)

答案1

如何让它搜索子目录

使用find

如何调整这一小行代码来搜索不仅仅是 mkv

使用-iregex带有 的选项find

如何让它仅在转换成功时删除原始文件

你需要一个if开关。

综合起来:

while IFS= read -r -d '' movie ; do
    echo "Found: $movie"

    convert_command="ffmpeg -i '$movie' -vcodec copy -acodec copy '$movie.mp4'"

    if bash -c "$convert_command" ; then
        echo "Converted to mp4"
        rm "$movie"
    else
        echo "Convertation failed"
    fi
done < <(find . -type f -iregex '.*\(mkv\|mpeg\|avi\|wmv\|mov\)' -print0)

我用了答案是根据find输出创建循环。

mp4 和 kodi/xbmc 在启动时最小化的优点和缺点是独立的问题,我建议您为每个问题创建单独的帖子。

相关内容