问题标签 [lossless]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ffmpeg - 如何在 FFMPEG 中无损旋转 Sony A7Rii 的视频以避免编解码器错误?
我有一堆在 Sony A7Rii 上拍摄的视频,这些视频是倒置的,需要翻转 180。我想无损地做到这一点,并尝试使用以下命令:
我了解这会更新视频文件元数据中的方向信息,从而避免重新编码。但是,它正在生成与音频编解码器相关的错误:
[mp4 @ 000001db6a69cd80] 在流 #1 中找不到编解码器 pcm_s16be 的标记,容器中当前不支持编解码器 无法为输出文件 #0 写入标头(编解码器参数不正确?):无效参数流映射:流 #0:0 - > #0:0(复制)流 #0:1 -> #0:1(复制)
经过一番搜索,我明白这是预期的行为,因为 MP4 容器不应该使用该编解码器进行音频编码。对我来说不幸的是,这就是索尼 A7Rii 生成文件的方式。
什么 FFMPEG 命令将提供最好的解决方法?理想情况下,我不会重新编码音频,但如果没有其他方法,那将是可以容忍的。
谢谢!
compression - 如何使用 VP9 编解码器和无损压缩设置 WebRTC
我一直在试图弄清楚是否可以使用 VP9 编解码器和无损压缩来设置 WebRTC。
到目前为止,我已经能够弄清楚如何在 SDP 中设置 VP9 以及如何设置编码配置文件(0-3)。但是,我的理解是,将编码器配置文件设置为索引 3,不会对压缩产生影响。
我还查看了VP9 的 RTP 有效负载规范。但是,SDP 参数的规范仅显示如何设置编解码器和编码配置文件。
所以我的问题是,是否有可能使用 VP9 无损压缩设置 WebRTC?如果是这样,我可以在哪里设置它,是否必须在 SDP 中设置它?
ffmpeg - 使用FFmpeg重新编码时如何获得视频无损旋转?
我正在寻找如何在重新编码时旋转视频而不会丢失任何质量。
我目前使用ffmpeg -i "inputvideo" -crf 0 -vf transpose=2 -acodec copy "outputvideo"
.
虽然 -crf 0 应该是无损的,但是对比原始视频的第一帧和旋转后的视频后发现还是有区别的。是什么原因?
由于我没有足够的声誉,我将屏幕截图放在这里https://sm.ms/image/6bjAIkFJM4rDiaf。左边是原版。
我注意到有一个答案https://stackoverflow.com/a/49535017/11081223修改十六进制数据以实现视频旋转而无需重新编码,但它不会更改实际文件只是元数据只是让玩家知道。我假设该方法将旋转工作留给玩家处理,因此图像质量差异更加明显。
屏幕截图在这里https://sm.ms/image/StZxPgHOEDKFRcr。左边是原版。
lossless-compression - 如何在 LosslessCut 中更改播放速度?
可能听起来像一个奇怪的问题,但听我说完。我有几个小时的视频我想一起剪辑和编辑,但其中很多只是我不需要的垃圾。我不想失去任何质量,所以我使用LosslessCut。
对我来说,问题是它......很多镜头,我不需要看到每一秒。有没有办法改变 LosslessCut 中的播放速度?
audio - FFmpeg 输出视频文件比未压缩的输入音频文件小得多,使用选项保留原始音频质量
我尝试分两步从多个图像文件和音频文件创建视频幻灯片:
- 从一系列图像文件创建临时视频文件
- 将音频文件添加到临时视频文件中,延迟为 5 秒
音频文件是一个未压缩的立体声 wav 文件,以 44100 Hz 的采样率和 32 位的位深度进行编码,大小为 40.1 MB。为了保持输入音频文件的无损质量,我根据Slideshow Wiki使用选项-c:a aac -b:a 192k。但是,最终输出的视频文件大小仅为 4.49 MB。
输出的视频文件如何比输入的音频文件小 10 倍左右,并且仍然保持原始的无损质量?
我的代码:
audio - 无损音频流 Android/iOS - 浏览器
有没有办法将音频无损地从应用程序流式传输到浏览器?我正在研究 WebRTC,但它似乎只支持有损编解码器。窄带频率范围(例如https://en.wikipedia.org/wiki/G.711)对于我的目的来说太窄了,我需要在低频下降低到 ~50Hz。我用 8kHz 采样我的音频,16bit 的位深度会很好,但 8bit 也可以接受。
最多 2-3 秒的延迟将不是什么大问题。
谢谢!
jpeg - ITU T.87 JPEG LS 标准和示例 .jls SOS 编码流没有转义序列 0xFF 0x00
ITU T.81 声明如下:
B.1.1.2 标记 标记用于识别压缩数据格式的各种结构部分。大多数标记开始包含一组相关参数的标记段;一些标记是独立的。所有标记都分配有两个字节的代码:一个 X'FF' 字节后跟一个不等于 0 或 X'FF' 的字节(见表 B.1)。任何标记之前都可以有任意数量的填充字节,这些填充字节是分配代码 X'FF' 的字节。注 – 由于这种特殊的代码分配结构,标记使解码器能够解析压缩数据并定位其各个部分,而无需解码图像数据的其他段。"
B.1.1.5 熵编码数据段熵编码数据段包含熵编码过程的输出。它由整数个字节组成,无论使用的熵编码过程是霍夫曼还是算术。
笔记
(1)使熵编码的段成为整数字节的执行如下:对于霍夫曼编码,如果需要,使用 1 位来填充压缩数据的末尾以完成段的最后一个字节。对于算术编码,字节对齐在终止熵编码段的过程中执行(见 D.1.8)。
(2)为了确保标记不会出现在熵编码段中,由 Huffman 或算术编码器生成的任何 X'FF' 字节,或由填充 1 生成的 X'FF' 字节上面注 1 中描述的位,后面是“填充的”零字节(见 D.1.6 和 F.1.2.3)。
并且在许多其他地方,众所周知的Stuff_0 () 函数也被命名。
不确定标准 ITU T.87 相对于标准 ITU T.81 指定的编码转义序列 0xFF 0x00 的位置:
- 标准 ITU T.87 本身没有指定但期望它。在标准测试样本格式不正确的情况下,编码流中显然没有编码转义序列 0xFF 0x00。例如 0xFF 0x7F、0xFF 0x2F 和其他序列可以在 .jsl 测试样本的编码流中找到:即“T8C0E3.JLS”。这些年来没有人看到它;
- 或者,如果标准 ITU T.87 实际上覆盖了关于编码流的这条规则的 ITU T.81,并且不允许转义序列的编码;
在解码器中,当 0xFF 和 !0x00 实际使用该字节并且如果组件未完全解码时不跳过它时,我们可以制定逻辑来检测解码器错误。但是如果 jls 文件没有转义序列并且我们遇到 0xFF 0x00 序列,我们应该跳过 0x00 字节吗?
希望对标准 ITU T.87 JPEG-LS 编码的主题进行一些澄清,以及正确的程序是什么。我们应该或不应该在编码流中编码转义序列 0xFF 0x00 吗?
c - Delta编码中的压缩比计算
我是新来使用 Delta 编码来压缩 Hex 数据,我在wiki中使用了 C 实现,所以如果我的数据像 0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF,0xFFFFFFF 编码结果将如下:0xFFFFFFF,0x0000000,0x0000000,0x0000000 ,0x0000000 ,与其他无损算法的压缩率=原始大小/压缩大小不同,我发现数据的大小将像压缩前一样固定,那么我如何计算增量编码中的压缩率?以及如何压缩冗余增量?代码是:
python - decompress() 缺少 1 个必需的位置参数:'input_path'
所以我的问题是将霍夫曼的编码集成到 Tkinter 中。所以这个想法是使用我制作的文件资源管理器并允许用户选择他们想要压缩或解压缩的文件。Huffman 的编码将执行无损压缩并创建一个 .bin 文件(归功于 Bhrigu Srivastava https://youtu.be/JCOph23TQTY)。
代码的压缩部分工作正常,但当我尝试解压缩.bin
文件时却不行。我收到上面标题中提到的错误TypeError: decompress() missing 1 required positional argument: 'input_path'
任何提示将非常感谢!