是否可以使用 ffprobe 或 ffmpeg 来计算视频文件的位深度?我特别想知道我的视频的每通道 (bpc) 有多少位。8 是典型的,但一些更高级的编解码器可以使用更高的位深度,并且我不确定如何使用 ffprobe 获取此信息,或者是否可能。具体来说,我有使用 AVC-Intra Class 100 1080p 59.94 fps 编解码器编码的视频,但我不确定 ffprobe 是否可以从此类文件中获取位深度。如果是这样,你会怎么做?
我熟悉 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) 我需要一种快速可靠的方法来获取视频的总帧数。
以下是我尝试过的方法及其缺陷:
ffprobe(快速方式)
ffprobe -select_streams v:0 -show_entries 流=nb_frames -of 默认=noprint_wrappers=1 input.mp4
问题:经常返回 N/A,不可靠。
ffprobe(慢速方式)
ffprobe -count_frames -select_streams v:0 -show_entries 流=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
问题:速度非常慢,较长的视频可能需要一分钟。
ffmpeg(快速方式)
ffmpeg -i input.mp4 -map 0:v:0 -c 复制 -f null -
问题:需要完全解码一次视频,速度相当慢
我知道我正在寻找的东西是可能的,因为某些软件(如 Topaz Video Enhance)可以做到这一点。但我不知道如何在我的 C# 项目或 ffmpeg 中实现这一点。
最近在 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 上都可以正常播放。
在Python库中,有base64模块可用于Base64.同时,如果你想编码一个字符串,有base64的编解码器,即str.encode('base64_encode').哪种方法更受欢迎?
我正在尝试在Python中打印出以下请求(使用请求模块):
r = requests.get("http://www.youtube.com",
params={
"search_query": "test"
}).text
Run Code Online (Sandbox Code Playgroud)
但是,在打印时,我收到以下错误:
UnicodeEncodeError:'charmap'编解码器不能编码位置32891-32894中的字符:字符映射到
<undefined>
我确定这不是模块本身,因为基于一些谷歌搜索似乎没有其他事件发生,并且它正在与我尝试的其他请求一起工作.似乎只有这个请求无法打印.
有谁知道如何打印它?
编辑:现在我真的很困惑:这个程序对我来说只运行了一次,并且自那次出现之后就没有工作过一次.
我正在实施ITU-T G.711标准,我决定从G.191中的参考代码开始.
对A-law压缩运行一些测试让我怀疑算法的正确性.
根据G.711,输入范围0-63应位于第一段,步长为2.G.191中的示例代码将此范围映射如下:
在将输出与表中的值进行比较时,不仅我们得到1段偏移,而且范围也减半,使得压缩的FF对应于均匀的2047.
我应该如何进行以获得符合G.711标准的编解码器?
有人知道RaptorQ(RFC6330)的任何成熟的开源实现吗?如果不是,是否有人有兴趣加入一个开源项目以在C99中构建功能齐全的RaptorQ编解码器?
signal-processing linear-algebra codec forwarderrorcorrection telecommunication
我正在尝试将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) 我试图在我的覆盆子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安装的编解码器.