RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

全部问题

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
1843
Asked: 2025-03-21 10:09:27 +0000 UTC

创建 AddAfter 和 Addbefore 方法

  • 4

DoublyLinkedList给出了用于处理双向链表的类。有必要落实其中的方法AddAfter和措施AddBefore。从我所理解的一切来看,它应该基于方法Add,但我不明白要用什么来补充它,除了LinkedListNode<T> node- 在什么之前或之后,以及T value- 添加。

以防万一:

public class DoublyNode<T>
{
    public DoublyNode(T data)
    {
        Data = data;
    }
    public T Data { get; set; }
    public DoublyNode<T> Previous { get; set; }
    public DoublyNode<T> Next { get; set; }
}

public class DoublyLinkedList<T> : IEnumerable<T>  // двусвязный список
{
    DoublyNode<T> head; // головной/первый элемент
    DoublyNode<T> tail; // последний/хвостовой элемент
    int count;  // количество элементов в списке

    // добавление элемента
    public void Add(T data)
    {
        DoublyNode<T> node = new DoublyNode<T>(data);

        if (head == null)
            head = node;
        else
        {
            tail.Next = node;
            node.Previous = tail;
        }
        tail = node;
        count++;
    }
    public void AddFirst(T data)
    {
        DoublyNode<T> node = new DoublyNode<T>(data);
        DoublyNode<T> temp = head;
        node.Next = temp;
        head = node;
        if (count == 0)
            tail = head;
        else
            temp.Previous = node;
        count++;
    }
    public void AddLast(T data)
    {
        DoublyNode<T> node = new DoublyNode<T>(data);
        DoublyNode<T> temp = tail;
        node.Previous = temp;
        tail = node;
        if (count == 0)
            head = tail;
        else
            temp.Next = node;
        count++;
    }

    public void AddAfter(LinkedListNode<T> node, T value) 
    { 
    
    }
    public void AddBefore(LinkedListNode<T> node, T value) 
    {
    
    }  
}
c#
  • 2 个回答
  • 64 Views
Martin Hope
AlmondAlcohol
Asked: 2025-03-20 22:52:14 +0000 UTC

是否可以将 C++ 视为具有 C# 面向对象编程功能的 C?

  • 3

我对 C# 非常了解,最近学习了 C,现在正在学习 C++,是否可以将 C++ 视为具有 C# 面向对象编程能力的 C?我正在尝试阅读 Bjarne Stroustrup,感觉 C++ 是 Sharp 和 C# 的混合体,并带有修改后的语法。我错了吗?或者除了语法之外,C++ 和 C# 在 OOP 方面还有其他区别吗?是否值得详细了解 C++ 或仅研究语法的简要描述?显然,各种语言结构在最低层次的实现有所不同,但它们的本质会改变吗?如果是,那么程度如何?之所以会产生这个想法,是因为在阅读一本书的时候,会有一种读100遍的感觉,很困难,很慢。

c#
  • 1 个回答
  • 86 Views
Martin Hope
Freewa1ker
Asked: 2025-03-20 19:02:03 +0000 UTC

如何在输出方阵时删除 None 值?

  • 5
n, m = int(input()), int(input())

matrix = [[int(i) for i in input().split()] for j in range(n)]  # заполняем таблицу n * m

change_1, change_2 = int(input()), int(input())

for i in range(n):
    matrix[i][change_1], matrix[i][change_2] = matrix[i][change_2], matrix[i][change_1]

print(*[print(*[matrix[i][j] for j in range(m)]) for i in range(n)], sep='\n')
python
  • 1 个回答
  • 37 Views
Martin Hope
Maxim
Asked: 2025-03-20 16:31:04 +0000 UTC

记忆徘徊一词的含义

  • 5

memory loitering在数据结构的背景下它是什么?

以下是完整短语:

我在本书中提供了数据结构的最简单的工作版本。我省略了性能优化、内存优化或线程安全等细节。

python
  • 1 个回答
  • 27 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