通过 ffmpeg 对无法网页播放的mp4 视频进行h264视频MP4批量转码

0

从百度网盘下载了一些视频,在百度网盘上能正常播放,放到onedrive 也可以正常播放,但用oneindex 外链的时候播放器不能播放,开始以为是oneindex不太稳定。后来看了下,官方的接口,应该是正常的。视频下载速度还是很快,只是网页播放有问题,结合MP4视频排查遇到的问题,觉得可能是下载的这些视频录制时有问题,没有按照h264 的格式录制。最后给出的视频格式也是各种各样,除了不是h264 格式的mp4 还有很多wmv、avi、flv的视频格式。

在百度网盘和onedrive 的app 网页播放时,应该他们都给做了转码和流化,所以播放都正常,接口获取的是源视频,结果就不能在自己的播放播放器播放了。需要找个软件批量转码一下。

想到可以试试ffmpeg 通过命令行进行转码。学习了一下ffmpeg 的转码命令。本来打算把源文件转码以后直接替换掉源文件的,好像不能这样直接服务源文件转码。只能用新名字或者换个目录存放。测试了几个命令,找了一个简单的直接在文件名后面追加 -h264 的方式。
最后改造使用的命令是参照搜索到的结果改造的:

for /R %v IN (*.mp4) do ( ffmpeg -i "%v" -vcodec h264 "%~pv%~nv-h264.mp4")

windows 安装完 ffmpeg 软件以后,在cmd 命令里进入需要转码的目录执行这个命令就行。根据自己的文件名再改进一下就可以。

0

FFmpeg:A complete, cross-platform solution to record, convert and stream audio and video.
FFmpeg 官网:http://ffmpeg.org/
国内代码库:
https://gitee.com/mirrors/ffmpeg

以下是参考资料:

iOS 14 对 mp4 视频很挑剔,网站app mp4视频的播 放异常处理记录。 https://5656t.com/archives/1329

ffmpeg批量实现视频转码命令行:https://www.cnblogs.com/riddick/p/7744531.html

ffmpeg实现视频转码命令行,result需要提前建好作为保存转码后的视频路径:

ffmpeg -i 1.mp4 -vcodec h264 "result1.mp4"

当有大量视频需要转码时,可以使用如下命令行工具批量处理:

for /R %v IN (*.mp4) do ( ffmpeg -i %v -vcodec h264 "result%~nv.mp4")

也可以写一个脚本放到待转码视频的目录中,脚本代码如下,变量v前面比命令行多一个“%”:

for /R %%v IN (*.mp4) do ( ffmpeg -i %%v -vcodec h264 "result%%~nv.mp4")

参照改造自己需要的内容:

for /R %v IN (*.mp4) do ( ffmpeg -i "%v" -vcodec h264 "%~pv%~nv-h264.mp4")

有些视频设置的编码YUV 为422 ,转码后在IOS苹果系统的设备上不支持。需要加上转换YUV为420 的参数。 -pix_fmt yuv420p

for /R %v IN (*.mp4) do ( ffmpeg -i "%v" -pix_fmt yuv420p -vcodec h264 "%~pv%~nv-h264.mp4")

后期参照这个改造一下:
Windows下ffmpeg批量视频按指定码率添加水印及字幕转码为MP4格式源码 https://blog.csdn.net/wengek/article/details/79662703

dos+ffmpeg 视频批量转码 https://www.cnblogs.com/wyj944407830/p/13372604.html

最近还遇到需要抽帧图片的场景

参考龙哥ffmpeg 抽帧代码改造了一个批量抽帧:在目录下生成一个同名的–thumbnail.jpg 文件

for /R %v IN (*.mp4) do ( ffmpeg -y -i “%v” -ss 00:00:05.000 -vframes 1 “%~pv%~nv-thumbnail.jpg”)

小龙哥 记录的 FFmpeg抽帧 https://blog.csdn.net/lilongsy/article/details/126873733

“通过 ffmpeg 对无法网页播放的mp4 视频进行h264视频MP4批量转码”的一个回复

评论已关闭。