我正在尝试使用FFmpeg将视频文件拆分为小于10KB(最好为5KB)的段。
我正在使用的视频是这个视频:https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4。它已经具有低分辨率。
我尝试指定非常小的-segment_time 00:00:0.04:
ffmpeg -i BigBuckBunny_320x180.mp4 -c copy -map 0 -f segment -segment_frames 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 -segment_list out.csv BigBuckBunny_320x180_%03d.mp4
我尝试指定顺序的-segment_frames例如1,2,3,4,5,6,7 ...等:
ffmpeg -i BigBuckBunny_320x180.mp4 -force_key_frames "expr:gte(t,n_forced*0.04)" -c copy -map 0 -f segment -segment_frames 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 BigBuckBunny_320x180_%03d.mp4
我还尝试过强制关键帧:
username@My-Air:~/dev/video$ less out.csv
BigBuckBunny_320x180_000.mp4,0.000000,0.500000
BigBuckBunny_320x180_001.mp4,0.500000,1.000000
BigBuckBunny_320x180_002.mp4,1.000000,1.500000
BigBuckBunny_320x180_003.mp4,1.500000,2.000000
BigBuckBunny_320x180_004.mp4,2.000000,2.500000
BigBuckBunny_320x180_005.mp4,2.500000,3.000000
...
username@My-Air:~/dev/video/bunny_0.5s_splits$ ls -l
total 134552
-rw-r--r-- 1 username staff 16K 25 Mar 23:40 BigBuckBunny_320x180_000.mp4
-rw-r--r-- 1 username staff 26K 25 Mar 23:40 BigBuckBunny_320x180_001.mp4
-rw-r--r-- 1 username staff 36K 25 Mar 23:40 BigBuckBunny_320x180_002.mp4
-rw-r--r-- 1 username staff 44K 25 Mar 23:40 BigBuckBunny_320x180_003.mp4
-rw-r--r-- 1 username staff 40K 25 Mar 23:40 BigBuckBunny_320x180_004.mp4
-rw-r--r-- 1 username staff 38K 25 Mar 23:40 BigBuckBunny_320x180_005.mp4
-rw-r--r-- 1 username staff 43K 25 Mar 23:40 BigBuckBunny_320x180_006.mp4
-rw-r--r-- 1 username staff 44K 25 Mar 23:40 BigBuckBunny_320x180_007.mp4
-rw-r--r-- 1 username staff 50K 25 Mar 23:40 BigBuckBunny_320x180_008.mp4
-rw-r--r-- 1 username staff 49K 25 Mar 23:40 BigBuckBunny_320x180_009.mp4
-rw-r--r-- 1 username staff 50K 25 Mar 23:40 BigBuckBunny_320x180_010.mp4
-rw-r--r-- 1 username staff 51K 25 Mar 23:40 BigBuckBunny_320x180_011.mp4
-rw-r--r-- 1 username staff 51K 25 Mar 23:40 BigBuckBunny_320x180_012.mp4
-rw-r--r-- 1 username staff 57K 25 Mar 23:40 BigBuckBunny_320x180_013.mp4
-rw-r--r-- 1 username staff 53K 25 Mar 23:40 BigBuckBunny_320x180_014.mp4
-rw-r--r-- 1 username staff 57K 25 Mar 23:40 BigBuckBunny_320x180_015.mp4
-rw-r--r-- 1 username staff 57K 25 Mar 23:40 BigBuckBunny_320x180_016.mp4
-rw-r--r-- 1 username staff 61K 25 Mar 23:40 BigBuckBunny_320x180_017.mp4
...
所有这些都会导致长度为0.5s的段,文件大小平均约为50KB。
{{1}}
奇怪的是,时间戳记恰好是0s和0.5s。这是FFmpeg的限制吗?我找不到任何文档来验证这一点。
是否可以将这些文件的大小减小到5KB? FFmpeg有可能吗?如果没有,还有其他我可以使用的工具吗?我看着GStreamer,但无法真正看到是否可行,而且看起来非常复杂。
任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
好的,我终于得到了想要的东西。现在,我的视频片段全部在10KB以下,平均大约5KB。我使用了以下命令:
ffmpeg BigBuckBunny_320x180.mp4 BigBuckBunny_320x180_compressed.mp4
ffmpeg -i BigBuckBunny_320x180_compressed.mp4 -vcodec libx264 -x264-params keyint=1:scenecut=0 -acodec copy BigBuckBunny_320x180_compressed_frames.mp4
ffmpeg -i BigBuckBunny_320x180_compressed_frames.mp4 -c copy -map 0 -segment_time 00:00:0.04 -f segment -reset_timestamps 1 BigBuckBunny_320x180_compre
ssed_frames%03d.mp4
我使用-reset_timestamps 1
解决了只有第一段才能正常播放的上一个问题。