标签: codec

使用 ffmpeg 或 ffprobe 获取视频的像素位深度

是否可以使用 ffprobe 或 ffmpeg 来计算视频文件的位深度?我特别想知道我的视频的每通道 (bpc) 有多少位。8 是典型的,但一些更高级的编解码器可以使用更高的位深度,并且我不确定如何使用 ffprobe 获取此信息,或者是否可能。具体来说,我有使用 AVC-Intra Class 100 1080p 59.94 fps 编解码器编码的视频,但我不确定 ffprobe 是否可以从此类文件中获取位深度。如果是这样,你会怎么做?

video ffmpeg codec bit-depth ffprobe

5
推荐指数
1
解决办法
8233
查看次数

如何通过gstreamer获取h264帧

我熟悉 ffmpeg,但不熟悉 GStreamer。我知道如何通过ffmpeg获取H264帧,例如我可以通过AVPacket获取H264帧。但我不知道如何使用GStreamer来获取h264的帧。我不打算将H264数据直接保存为本地文件,因为我需要做其他处理。谁能给我一些示例代码?我将非常感激。这是我从其他人的代码中学到的。

#include <stdio.h>
#include <string.h>
#include <fstream>
#include <unistd.h>
#include <gst/gst.h>
#include <gst/app/gstappsrc.h>

typedef struct {
    GstPipeline *pipeline;
    GstAppSrc  *src;
    GstElement *filter1;
    GstElement *encoder;
    GstElement *filter2;
    GstElement *parser;
    GstElement *qtmux;
    GstElement *sink;

    GstClockTime timestamp;
    guint sourceid;
} gst_app_t;

static gst_app_t gst_app;

int main()
{
    gst_app_t *app = &gst_app;
    GstStateChangeReturn state_ret;
    gst_init(NULL, NULL); //Initialize Gstreamer
    app->timestamp = 0; //Set timestamp to 0

    //Create pipeline, and pipeline elements
    app->pipeline = (GstPipeline*)gst_pipeline_new("mypipeline");
    app->src    =   (GstAppSrc*)gst_element_factory_make("appsrc", "mysrc");
    app->filter1 =  gst_element_factory_make ("capsfilter", "myfilter1"); …
Run Code Online (Sandbox Code Playgroud)

c codec gstreamer h.264

5
推荐指数
1
解决办法
6736
查看次数

如何在几秒钟内可靠地找到视频的帧数?

我需要一种快速可靠的方法来获取视频的总帧数。

以下是我尝试过的方法及其缺陷:

  1. ffprobe(快速方式)

    ffprobe -select_streams v:0 -show_entries 流=nb_frames -of 默认=noprint_wrappers=1 input.mp4

问题:经常返回 N/A,不可靠。

  1. ffprobe(慢速方式)

    ffprobe -count_frames -select_streams v:0 -show_entries 流=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4

问题:速度非常慢,较长的视频可能需要一分钟。

  1. ffmpeg(快速方式)

    ffmpeg -i input.mp4 -map 0:v:0 -c 复制 -f null -

问题:需要完全解码一次视频,速度相当慢

我知道我正在寻找的东西是可能的,因为某些软件(如 Topaz Video Enhance)可以做到这一点。但我不知道如何在我的 C# 项目或 ffmpeg 中实现这一点。

video metadata ffmpeg codec

5
推荐指数
1
解决办法
3363
查看次数

Ubuntu 22.04视频播放器无法播放mp4文件

最近在 DELL x86 64 位笔记本电脑上安装了 Ubuntu 22.04,当我出于某种原因导入 mp4 文件时,内置视频播放器无法播放 mp4 文件。要么告诉我找不到编解码器,要么无法访问文件??这是令人费解的。现在我可以在其他应用程序(例如 Chrome)中播放 mp4 文件,但是即使使用 VLC 播放器,mp4 文件也无法正确渲染(要么是冻结的图片,要么是扭曲渲染的黑白 - 就像它被压扁一样)。

我偶然发现的一个解决方案是安装 ubuntu-restricted-extras,这似乎没有帮助?

有什么建议可以更新编解码器或修复已安装的视频播放器 - 或者继续使用 Chrome 查看 MP4 文件吗?

我尝试在安装 Ubuntu 22.04 后检查是否有任何更新 - 它确实安装了一些更新 我尝试安装 ubuntu-restricted-extras - 似乎使情况变得更糟 - 然后我“删除”了restricted-extras - 似乎没有什么区别 我尝试过使用各种其他应用程序打开 mp4 文件,结果参差不齐,有些在 VLC 播放器上可以正常播放,有些则不能,有些在 Firefox 上可以正常播放,有些则不能,大多数似乎在 Chrome 上都可以正常播放。

ubuntu mp4 codec video-player ubuntu-22.04

5
推荐指数
1
解决办法
7379
查看次数

对于Base64编码,更喜欢str.encode('base64_codec')或base64.b64encode(str)?

在Python库中,有base64模块可用于Base64.同时,如果你想编码一个字符串,有base64的编解码器,即str.encode('base64_encode').哪种方法更受欢迎?

python codec

4
推荐指数
1
解决办法
2131
查看次数

无法打印出请求的文字?

我正在尝试在Python中打印出以下请求(使用请求模块):

r = requests.get("http://www.youtube.com", 
                params={
                    "search_query": "test"
                }).text 
Run Code Online (Sandbox Code Playgroud)

但是,在打印时,我收到以下错误:

UnicodeEncodeError:'charmap'编解码器不能编码位置32891-32894中的字符:字符映射到 <undefined>

我确定这不是模块本身,因为基于一些谷歌搜索似乎没有其他事件发生,并且它正在与我尝试的其他请求一起工作.似乎只有这个请求无法打印.

有谁知道如何打印它?

编辑:现在我真的很困惑:这个程序对我来说只运行了一次,并且自那次出现之后就没有工作过一次.

python get request character-encoding codec

4
推荐指数
1
解决办法
2944
查看次数

G.711实施A-law

我正在实施ITU-T G.711标准,我决定从G.191中的参考代码开始.

对A-law压缩运行一些测试让我怀疑算法的正确性.

根据G.711,输入范围0-63应位于第一段,步长为2.G.191中的示例代码将此范围映射如下:

  • 在段0上从0到15,步长为1
  • 在段1上从16到31,步长为1
  • 在段2上从32到63,步长为2

在将输出与表中的值进行比较时,不仅我们得到1段偏移,而且范围也减半,使得压缩的FF对应于均匀的2047.

我应该如何进行以获得符合G.711标准的编解码器?

c standards standards-compliance codec

4
推荐指数
1
解决办法
728
查看次数

RaptorQ开源实现

有人知道RaptorQ(RFC6330)的任何成熟的开源实现吗?如果不是,是否有人有兴趣加入一个开源项目以在C99中构建功能齐全的RaptorQ编解码器?

signal-processing linear-algebra codec forwarderrorcorrection telecommunication

4
推荐指数
1
解决办法
379
查看次数

如何使用作品对音频进行编码和解码

我正在尝试将Opus集成到我的应用程序中,编码和解码功能返回正值,这意味着成功,但是无法播放输出音频。原始音频数据也可以播放。这是我编码数据的方式。我使用4个字节的前缀与每个数据包分开。

self.encoder = opus_encoder_create(24000, 1, OPUS_APPLICATION_VOIP, &opusError);
opus_encoder_ctl(self.encoder, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_SUPERWIDEBAND));



- (void) encodeBufferList:(AudioBufferList *)bufferList {
    BOOL success = TPCircularBufferProduceBytes(_circularBuffer, bufferList->mBuffers[0].mData, bufferList->mBuffers[0].mDataByteSize);
    if (!success) {
        NSLog(@"insufficient space in circular buffer!");
    }

    if (!_encoding) {
            _encoding = YES;

            dispatch_async(self.processingQueue, ^{
                [self startEncodingLoop];
            });
    }
}


-(void)startEncodingLoop
{
    int32_t availableBytes = 0;
    opus_int16 *data = (opus_int16*)TPCircularBufferTail(_circularBuffer, &availableBytes);
    int availableSamples = availableBytes / _inputASBD.mBytesPerFrame;

    /*!
     *  Use dynamic duration
     */
//    int validSamples[6] = {2.5, 5, 10, 20, 40, 60}; // in milisecond …
Run Code Online (Sandbox Code Playgroud)

audio codec ios opus

4
推荐指数
2
解决办法
6013
查看次数

Vcodec身份不明:XXXX

我试图在我的覆盆子pi上观看一些X.mkv文件.我曾经有过Openelec 3,这个特别的X.mkv运行正常.现在我在Raspbian上运行Kodi,当我启动它时我得到了一个黑屏,所以我查看了日志.他们在谈论OMX播放器.所以我决定尝试一下.因此:

$ omxplayer -o hdmi /mnt/xx.mkv

Vcodec id unknown : 48323635
have a nice day ...
Run Code Online (Sandbox Code Playgroud)

谁能告诉我要安装哪个软件包?我做了大量的研究,无法找到为此ID安装的编解码器.

codec mkv raspbian kodi omxplayer

4
推荐指数
1
解决办法
4912
查看次数