是否有关于如何在Ubuntu中编译avconv的分步指南?
与ffmpeg相比,使用avconv搜索任何教程似乎都很难.
我正在寻找一个好的(通用)转换命令,它可以将任何输入文件转换为适合iPad的h.264大小.
目前我有这个有效的命令,改编自robert.swain
预设:
$ ffmpeg -i INPUT -acodec aac -ab 160000 -s 1024x768 -vcodec libx264 \
-vpre slow -vpre ipod640 -b 1200kb -threads 0 -f mp4 OUTPUT.mp4
Run Code Online (Sandbox Code Playgroud)
长形式,无预设:
$ ffmpeg -i INPUT -acodec aac -ab 160000 -s 1024x768 -vcodec libx264 \
-coder 1 -flags +loop -cmp +chroma \
-partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method umh \
-subq 8 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 \
-i_qfactor 0.71 -b_strategy 2 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 \
-bf 3 …Run Code Online (Sandbox Code Playgroud) 我安装了最新的ffmpeg,但似乎无法找到视频编解码器.我是否需要完成删除ffmpeg并重新运行./configure以使ffmpeg找到视频编解码器?
这是我目前的配置:
FFmpeg version git-f61cbc2, Copyright (c) 2000-2011 the FFmpeg developers
built on Jan 18 2011 10:59:49 with gcc 4.0.1 (Apple Inc. build 5465)
configuration: --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.94. 0 / 52.94. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
libswscale 0.12. 0 / 0.12. 0
或者,我可以重新运行make命令来包含库吗?
这是我的代码转换代码段:
ffmpeg -i ~/Desktop/watercarts.mov …
我正在尝试使用libavcodec将视频编码为H264
ffmpeg::avcodec_encode_video(codec,output,size,avframe);
返回错误,我没有正确设置avframe-> pts值.
我已经尝试将其设置为0,1,AV_NOPTS_VALUE和90khz*framenumber但仍然得到错误non-strictly-monotonic PTS
ffmpeg.c示例使用ffmpeg :: av_rescale_q()设置packet.pts,但只有在对帧进行编码后才会调用它!
当与MP4V编解码器一起使用时,avcodec_encode_video()会自行正确设置pts值.
伙计们,
我试图了解视频比特率,图像大小,编解码器和文件大小之间的关系.例如,如果我的电影的图像为1920*1080像素,则比特率为24 MBPS,长度为2小时,使用的编解码器为H.264,如何估算文件大小?
我们暂时可以忽略音频.
任何指针都会受到赞赏.
问候,
彼得
我试图将一些相同分辨率的图像编码成一个视频文件使用,为此我尝试过:
jCodec
FFMPEG
我听说过Xuggler,它的API可以在java程序中用来创建视频文件,但是因为它的网站似乎已经坏了.我无法尝试.
有谁知道如何将java格式的图像编码成视频文件请帮忙!
提前致谢 !
我有一个应用程序使用FFMPEG和x264编码器逐帧转码视频.我希望发布这个应用程序,但x264的许可使我转而使用openh264.
我设法顺利编译所有内容(openh264然后FFMPEG与enable-openh264).我现在正在尝试纠正我的C代码中的编码器设置,因为对libx264起作用的东西不再起作用了.不幸的是我发现FFMPEG/openh264的C/C++示例非常有限,我将不胜感激任何链接/提示.
我使用以下代码(dec_ctx是我正在解码的视频的AVCodecContext)
enc_ctx->height = dec_ctx->height;
enc_ctx->width = dec_ctx->width;
enc_ctx->sample_aspect_ratio = dec_ctx->sample_aspect_ratio;
/* take first format from list of supported formats */
enc_ctx->pix_fmt = encoder->pix_fmts[0];
/* video time_base can be set to whatever is handy and supported by encoder */
enc_ctx->time_base = dec_ctx->time_base;
enc_ctx->gop_size = 120; /* emit one intra frame every twelve frames at most */
enc_ctx->max_b_frames = 16;
enc_ctx->scenechange_threshold = 0;
enc_ctx->rc_buffer_size = 0;
enc_ctx->me_method = ME_ZERO;
enc_ctx->ticks_per_frame = dec_ctx->ticks_per_frame * ifmt_ctx->streams[i]->time_base.den * ifmt_ctx->streams[i]->r_frame_rate.num/ifmt_ctx->streams[i]->r_frame_rate.den;
// Set Ultrafast profile. …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,它从输入文件(任何编解码器,任何容器)解码单个视频流,进行一堆图像处理,并将结果编码为输出文件(单个视频流,Quicktime RLE,MOV).我正在使用ffmpeg的libav 3.1.5(目前是Windows版本,但应用程序将是跨平台的).
输入帧和输出帧之间存在1:1的对应关系,我希望输出中的帧时序与输入相同.我真的很难完成这件事.所以我的一般问题是:我如何可靠地(在所有输入情况下)将输出帧时序设置为与输入相同?
我花了很长时间来讨论API并且达到了我现在的目的.我整理了一个最小的测试程序来处理:
#include <cstdio>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/avutil.h>
#include <libavutil/imgutils.h>
#include <libswscale/swscale.h>
}
using namespace std;
struct DecoderStuff {
AVFormatContext *formatx;
int nstream;
AVCodec *codec;
AVStream *stream;
AVCodecContext *codecx;
AVFrame *rawframe;
AVFrame *rgbframe;
SwsContext *swsx;
};
struct EncoderStuff {
AVFormatContext *formatx;
AVCodec *codec;
AVStream *stream;
AVCodecContext *codecx;
};
template <typename T>
static void dump_timebase (const char *what, const T *o) {
if (o)
printf("%s timebase: %d/%d\n", what, o->time_base.num, o->time_base.den); …Run Code Online (Sandbox Code Playgroud) 使用ffmpeg进行CENC加密的正确语法是什么?
ffmpeg 3.0发行说明包括"通用加密(CENC)MP4编码和解码支持",文件libavformat/movenccenc.h和libavformat/movenccenc.c似乎包括根据通用加密标准加密MP4文件所需的一切.
但是,我在ffmpeg手册页中找不到关于此主题的任何文档.
问候
编辑:
似乎问题是这个设备不需要16个维度的多个...但是32的倍数.事实是,我仍然不知道如何确定什么量化为有问题的设备.这似乎使用qcom(我已经看到在Android 4.X上有问题,但这是Android 5.1.1).
我正在Android应用中编码视频.我正在使用Android MediaCodec这样做,将每帧的RGB转换为YUV并传入像素.
我使用的代码已经存在了一段时间,并且适用于我遇到过的任何设备.
一位用户带着一个错误报告来找我说他们的MP4很奇怪.该设备是三星T337A(Galaxy Tab 4).
这是MP4出口的样子:
注 - 出于任何奇怪的原因,它不会在所有分辨率下发生.它确认发生在768x432和1280x720,但不会发生在640x352(例如我的应用程序确保所有分辨率都可以被16整除).
在Nexus 5X(使用相同的半平面YUV格式)上,输出适用于所有分辨率.
所以这是该设备的东西,也许是我不知道的其他设备?
我查看了所有输出,它看起来正常并且与我上面提到的Nexus 5X相同(100%的时间都可以工作).
正在使用的MediaCodecInfo是OMX.qcom.video.encoder.avc,使用的颜色格式是2135033992(这是COLOR_FormatYUV420Flexible).所以基本上没什么奇怪的.
代码有点广泛,我会在必要时发布,但只是寻找为什么会发生这种情况的一般想法.我知道它是否更常见,但相同的代码适用于大量其他设备,所以一些时髦的东西正在发生......
android video-encoding android-hardware galaxy-tab mediacodec
video-encoding ×10
ffmpeg ×6
h.264 ×3
c++ ×2
video ×2
android ×1
avcodec ×1
c ×1
encryption ×1
galaxy-tab ×1
image ×1
ipad ×1
iphone ×1
java ×1
libav ×1
libavcodec ×1
mediacodec ×1
openh264 ×1
ubuntu-12.04 ×1
xuggler ×1