gpt4 book ai didi

FFmpeg:将视频分割成非常小的片段(例如 5KB)

转载 作者:行者123 更新时间:2023-12-04 23:32:38 33 4
gpt4 key购买 nike

我正在尝试使用 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_time 00:00:0.04 BigBuckBunny_320x180_%03d.mp4

我尝试指定顺序 -segment_frames 例如1,2,3,4,5,6,7...等:
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

我也试图强制关键帧:
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

所有这些都会产生 0.5 秒长的片段,不同的文件大小平均约为 50KB。
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 和 0.5 秒。这是FFmpeg的限制吗?我找不到任何文件来验证这一点。

有没有办法将这些文件大小缩小到 5KB? FFmpeg可以吗?如果没有,我可以使用其他工具吗?我查看了 GStreamer,但无法真正了解它是否可行,而且看起来非常复杂。

任何帮助表示赞赏。谢谢。

最佳答案

好的,我终于得到了我想要的。我现在的视频片段都在 10KB 以下,平均约为 5KB。我使用了以下命令:

  • 使用ffmpeg的标准压缩压缩原始视频文件:
  • ffmpeg BigBuckBunny_320x180.mp4 BigBuckBunny_320x180_compressed.mp4
  • 将关键帧间隔设置为 1,这样每一帧都成为一个关键帧:
  • ffmpeg -i BigBuckBunny_320x180_compressed.mp4 -vcodec libx264 -x264-params keyint=1:scenecut=0 -acodec copy BigBuckBunny_320x180_compressed_frames.mp4
  • 将生成的文件分成长度为 0.04 的段,大约是一帧的长度:
  • 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 解决了之前只有第一段播放正常的问题: .

    关于FFmpeg:将视频分割成非常小的片段(例如 5KB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55362194/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com