RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[ffmpeg]

Martin Hope
Дмитрий Варзанов
Asked: 2025-03-21 17:12:34 +0000 UTC

视频编码,顺序,输入文件=前一个流数据

  • 6
ffmpeg -i /file.mp4 -deadline good -movflags +frag_keyframe -map_metadata -1                                        
-c:a libopus -c:v libvpx-vp9 -row-mt 1 -frame-parallel 1 -pix_fmt yuv420p                             
-map 0:a:0 -b:a:0 128k  
-map 0:v:0 -filter:v:0 scale=-1:144 -r 30 -b:v:0 60k 
-map 0:v:0 -filter:v:1 scale=-1:240 -r 40 -b:v:1 150k
-map 0:v:0 -filter:v:2 scale=-1:360 -r 50 -b:v:2 276k                                          
-init_seg_name "init-$RepresentationID$.$ext$"                    
-media_seg_name "sg-$RepresentationID$-$Number%05d$.$ext$"                                         
-dash_segment_type webm                                         
-use_template 1 -use_timeline 1 -seg_duration 9                               
-adaptation_sets "id=0, streams=v id=1, streams=a"                                       
-f dash /video/manifest.mpd

我们以帧大小为 360px 的输入视频为输入,创建 3 个质量为 144、240、360 的流。

好的,成功了。

据我理解,该代码的工作原理如下。

每个流都有一个输入文件

/file.mp4 -> 144
/file.mp4 -> 240
/file.mp4 -> 360

我正在尝试加快视频编码速度,因为我的电脑性能较差,并且想尝试让每个后续流的数据都来自前一个流。这样拍摄的就不是原始视频,而是之前的流。

在这种情况下,就需要改变顺序,不是从小到大,而是从分辨率较大到较小。但是,我们如何确保从前未来中获取数据来对下一次进行编码呢?

还有一个问题,让我们假设这是可能的并且有效。我们按以下顺序编码

/file.mp4 -> 360
360 -> 240
240 -> 144

如果输入视频的高度为 240,则将视频转换为 360 将是多余的,起始分辨率将为 240。

这样的情况怎么办,排除360流量?每次编写这样的代码,排除一个线程,检查高度,是非常昂贵和可怕的......

我尝试过这样的:

f"""ffmpeg -i /uploads/test.mp4 -deadline good -movflags +frag_keyframe -map_metadata -1 \
-map 0:a:0 -c:a libopus -b:a 128k \
-c:v libvpx-vp9 -speed 2 -tile-columns 2 -frame-parallel 1 -pix_fmt yuv420p \
-filter_complex \
"[0:v:0]scale='if(gte(ih,2160),-1,iw)':'if(gte(ih,2160),2160,ih)'[v2160]; \
 [v2160]scale='if(gte(ih,1440),-1,iw)':'if(gte(ih,1440),1440,ih)'[v1440]; \
 [v1440]scale='if(gte(ih,1080),-1,iw)':'if(gte(ih,1080),1080,ih)'[v1080]; \
 [v1080]scale='if(gte(ih,720),-1,iw)':'if(gte(ih,720),720,ih)'[v720]; \
 [v720]scale='if(gte(ih,480),-1,iw)':'if(gte(ih,480),480,ih)'[v480]; \
 [v480]scale='if(gte(ih,360),-1,iw)':'if(gte(ih,360),360,ih)'[v360]; \
 [v360]scale='if(gte(ih,240),-1,iw)':'if(gte(ih,240),240,ih)'[v240]; \
 [v240]scale='if(gte(ih,144),-1,iw)':'if(gte(ih,144),144,ih)'[v144]" \
-map "[v2160]" -b:v:0 8000k -minrate:v:0 6000k -maxrate:v:0 10000k -bufsize:v:0 16000k -r:v:0 30 \
-map "[v1440]" -b:v:1 6000k -minrate:v:1 4500k -maxrate:v:1 7500k -bufsize:v:1 12000k -r:v:1 30 \
-map "[v1080]" -b:v:2 4000k -minrate:v:2 3000k -maxrate:v:2 5000k -bufsize:v:2 8000k -r:v:2 30 \
-map "[v720]" -b:v:3 2500k -minrate:v:3 2000k -maxrate:v:3 3000k -bufsize:v:3 5000k -r:v:3 30 \
-map "[v480]" -b:v:4 1500k -minrate:v:4 1200k -maxrate:v:4 2000k -bufsize:v:4 4000k -r:v:4 25 \
-map "[v360]" -b:v:5 1000k -minrate:v:5 800k -maxrate:v:5 1500k -bufsize:v:5 3000k -r:v:5 25 \
-map "[v240]" -b:v:6 600k -minrate:v:6 500k -maxrate:v:6 800k -bufsize:v:6 1600k -r:v:6 25 \
-map "[v144]" -b:v:7 400k -minrate:v:7 300k -maxrate:v:7 600k -bufsize:v:7 1200k -r:v:7 25 \
-init_seg_name "init-\$RepresentationID\$\.\$ext\$" \
-media_seg_name "sg-\$RepresentationID\$\-\$Number%05d\$\.\$ext\$" \
-dash_segment_type webm \
-use_template 1 -use_timeline 1 -seg_duration 9 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /manifest.mpd"""

答案有误

[out#0/dash @ 0x8456ed0] Output with label 'v2160' does not exist in any defined filter graph, or was already used elsewhere.
Error opening output file /manifest.mpd.
Error opening output files: Invalid argument

他们说流不存在,我尝试了许多不同的命令,但都出现相同的错误。

ffmpeg
  • 1 个回答
  • 29 Views
Martin Hope
Лена
Asked: 2024-12-31 06:41:13 +0000 UTC

FFmpeg 中的总帧数

  • 6

如何使用 FFmpeg 获取视频中的总帧数?

ffmpeg
  • 1 个回答
  • 19 Views
Martin Hope
Dmitrii
Asked: 2024-07-13 23:43:45 +0000 UTC

ffmpeg中有哪些参数

  • 5

我不擅长处理视频文件,我想听听以其他方式指定的参数,而不是在坞站中。

-b:v:2 800k  -maxrate:2 856k  -bufsize:2 1200k

-b:v:2 800k // 指定视频比特率,即使输入文件较低,它也会固定。也就是说,如果输入文件为 10MB,比特率为 450k,则输出文件为 20M,比特率为 800k。正确的?

-maxrate:2 856k // 这些速率是什么,它们的用途是什么?它与第一个相同,还是仍然限制并且不严格导致850k?

-bufsize:2 1200k //根本不清楚这个视频的用途和原因?

ffmpeg
  • 1 个回答
  • 23 Views
Martin Hope
Dmitrii
Asked: 2024-07-13 13:25:07 +0000 UTC

这些参数对视频文件有何影响?

  • 5
Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 3 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)

我想知道该行中的以下参数表示什么:

  1. 3kb/秒
  2. 30 吨
  3. 15360 吨
  4. 60 待定(默认)
ffmpeg
  • 1 个回答
  • 25 Views
Martin Hope
Kruglianin
Asked: 2022-08-17 01:07:21 +0000 UTC

在 ffmpeg 中剪切和组装音频剪辑

  • 0

告诉我,是否可以为我的任务制作脚本?

或者告诉我正确的步骤顺序。

example.mp3有一个 60 秒的音频文件。

我想实现以下一系列操作:

  • 将第一个音频片段从example.mp35 秒剪到 15 秒,将第二个音频片段从 50 秒剪到 60 秒。

  • 然后需要将这两个音频片段合并为一个音频文件,并保存在一个名为example.mp3.

也就是说,生成的新example.mp3音频应该是 20 秒长,并且由第一个和第二个音频片段组成。

bash ffmpeg
  • 1 个回答
  • 36 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5