如何使传输流编码文件正确显示文件图标图像?

如何使传输流编码文件正确显示文件图标图像?

我不知道我问得是否正确,但还是要说一下。我生日那天收到了一套 DVD 盒装,并将文件转码存储在我的电脑上以供观看。将原始文件转储到我的电脑后,我使用以下批处理命令对其进行了压缩;

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
mv "$i.ts" "$i.mp4"
sleep 3
done

这带来了很好的压缩和质量,但当我查看文件夹时,文件所在的图标只是灰色框,而同一文件夹中的原始文件则显示了视频图像。(哈哈,我知道这只是表面现象,但它让我很烦 :)

如果我使用命令;

ffmpeg -i input.mp4 -vcodec h264 -acodec libfaac output.mp4

它可以正常显示图像图标,但编码为(AVC1)而不是(h264),这不是我想要的。

有没有办法在批处理文件命令中解决这个问题,让它按需要显示文件图标?谢谢!

答案1

感谢 Gyan 提供的信息,我能够找到一个有效的解决方案来解决我修改批处理文件命令时提出的问题,如下所示。

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.ts"
ffmpeg -i "$i.ts" -bsf:a aac_adtstoasc -c copy "$i.mp4"
rm *.ts
sleep 3
done

但是,根据 Gyan 提供的信息,我们可以跳过编码为传输流文件然后重新混合为 mp4 的步骤,并在下面批处理命令中简单地压缩 mp4 文件。

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec libfaac "$i.mp4"
sleep 3
done

请记住,这是使用旧版本的 ffmpeg 完成的。对于较新版本的 ffmpeg,请使用以下命令压缩视频,并保留要压缩的视频的正确图像图标;

INPUT="$1"
for i in *.mp4 ; do
ffmpeg -i "$i" -vcodec h264 -acodec aac "$i.mp4"
sleep 3
done

使用批处理文件命令的唯一问题是它会在文件名中添加一个额外的文件扩展名(filename.mp4.mp4),我使用 pyrenamer 解决了这个问题,只需单击一下即可删除多个目录下所有文件中的额外文件扩展名。

如果有人知道如何在批处理命令中解决这个问题,请发表评论,我会修改这个答案。我尝试过“mv”命令的变体,但没有成功。

相关内容