Skip to main content

4 posts tagged with "ffmpeg"

View All Tags

mp4转m3u8

· One min read

方案一(简单效率低)

ffmpeg -i test.mp4 -c:v libx264 -hls_time 15 -hls_list_size 0 -c:a aac -strict -2 -f hls test.m3u8

方案二(效率高)

ffmpeg -y -i test.mp4  -vcodec copy -acodec copy -vbsf h264_mp4toannexb test.ts
ffmpeg -i test.ts -c copy -map 0 -f segment -segment_list test.m3u8 -segment_time 15 15s_%3d.ts

ios safari无法播放部分mp4视频

· 2 min read

需求场景

最近编辑发现部分上传的mp4视频无法在ios下播放,在chrome上是正常的。通过搜索一般都是说chrome和safari中request header的"range"字段不同,给出的解决方案都是基于后端语言的,而我们的视频都是直接放在nginx上的,并没有经过后段语言处理。实际情况是部分mp4能正常播放,部分mp4不行,更大的可能性在于mp4本身的问题。

解决方案

通过ffmpeg查看能播放的mp4和不能播放的mp4的视频信息ffprobe test.mp4,两者相比较,可以发现两者有个参数不同,一个是yuv420p,一个是yuv444p,能播放的是yuv420p,不能播放的是yuv444p,通过格式工厂等工具将mp4重新转格式之后,确实可以播放了。

后续探索

可是为什么yuv420p是可以的yuv444p是不行的,safari是不兼容yuv444p么?后来通过搜索,终于发现国外的一位的老哥,也遇到同样的问题,并给出了ffmpeg下yuv444p转yuv420p的方案。ffmpeg -i a.mp4 -vcodec libx264 -acodec copy -vprofile main -pix_fmt yuv420p a-new.mp4详见video not playing on Android (chrome) and iOS (safari)

yuv444p转yuv420p

ffmpeg -i [input file] -c:v libx264 -pix_fmt yuv420p [output file]
详见FFMPEG Convert YUV444p to YUV420p

基于ffmpeg的批量转mp4命令行工具

browser-mp4

基于ffmpeg的GUI工具

ffmpegGUI, 作者没有提供打包的文件,需要自行编译打包,并且暂不支持批量转换

浏览器兼容最好的mp4要求

h264 yuv420p

ffmpeg下载m3u8视频

· One min read

需求场景

之前看在线视频的时候,希望能够把视频下载下来,当时一直用IDM,可以说是非常强大了,现在发现ffmpeg这个小工具居然也可以下载m3u8格式的在线视频,可以说很好用了

解决方案

ffmpeg -i http://www.xxx.com/xxx.m3u8 name.mp4