我在为iOS编译x264时遇到错误.
我有Xcode版本5.0(5A1413)和Apple LLVM版本5.0(clang-500.2.75)(基于LLVM 3.3svn).我正在编译x264-snapshot-20130925-2245.
配置:
CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang ./configure \
--host=arm-apple-darwin \
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk \
--prefix=armv7 \
--extra-cflags='-arch armv7' \
--extra-ldflags="-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/system -arch armv7" \
--enable-pic \
--enable-static
Run Code Online (Sandbox Code Playgroud)
得到错误:
common/arm/cpu-a.S:29:7: error: unknown token in expression
.align
^
common/arm/cpu-a.S:139:5: error: instruction 'suble' can not set flags, but 's' suffix specified
subles ip, ip, #1
^
Run Code Online (Sandbox Code Playgroud) 根据x264编码指南,crf
比例取决于x264是8位还是10位.据说x264 --help
显示了Output bit depth
.但在Windows ffmpeg -h full
上没有说什么,Output bit depth
并且crf
缩放选项被描述为from -1 to FLT_MAX
.如何检查我的ffmpeg是使用8位还是10位版本的libx264库?
我下载了X264源代码并安装了mingw.
步骤1:
在MINGW bash中执行此操作:
./configure --disable-cli --enable-shared --enable-win32thread - -extra-ldflags = -Wl, - output-def = libx264.def
然后'制作'
第2步:
将libx264-142.dll重命名为libx264.dll并打开VS2012命令提示符并执行以下操作:
LIB /DEF:libx264.def
它给了我libx264.lib和对象libx264.exp
第3步:
将lib文件包含在使用X264 API的VS2012项目中.
问题:
当我启动项目时,我收到以下错误消息:
"程序无法启动,因为您的计算机缺少libx264.dll"
题:
当我链接静态库时,为什么要查找dll?
我该如何解决这个问题?我想构建一个静态X264库,我可以将其链接到我的项目中.
编辑:
我只需将dll放在与项目可执行文件相同的目录中.
但是 - 我的问题仍然存在:如何构建静态 x264库?所以我不需要dll?
我无法弄清楚如何使用x264
directshow.我安装了许多认为假装有x264
编码器没有用我下载videoLAN x264
二进制文件,当我运行它时,它显示如此快的控制台窗口,之后没有任何事情发生
这些是我拥有的编码器
我正在使用Windows 8.1 x64
请帮忙解决这个问题,这只会让我发疯,嗯,我想使用,x264
因为我安装的其他编码器,要么没有工作,要么编码如此大的尺寸.
我正在尝试将最新版本的libx264编译为iOS 5 arm.
在2010年中期,加布里埃尔的建筑脚本工作.
它不再了.
它说"找不到工作的C编译器".
任何人都可以给我直接答案吗?它是2012年,谷歌似乎没有人编译它.
对于使用 x264 压缩的视频中的某些 I 帧,我需要在所有块中使用 I_PCM 模式。我知道这些帧将占用大量空间,但要求它们尽可能忠实于源,并使它们能够非常快速地编码/解码(I_PCM 应该超快且无损)。有没有办法强制 x264 以编程方式执行此操作。我正在使用 libx264 来执行此操作,但我还没有找到在给定帧内指定自定义宏块类型的方法。如果不支持,修改库来实现这一点会有多困难,我应该首先看哪里?
我一直在尝试让 emgu 将相同的网络摄像头视频保存到文件中
问题是opencv只支持avi,avi好像不太适合X264这样的格式。
我可以使用 Gstreamer 在 C 中为我做这件事吗?
如果我也可以选择文件格式和容器类型就好了。如果我能使用像薛定谔狄拉克这样的格式就好了。
我是 GStreamer 的新手,所以我不太确定我在这里是否走在正确的轨道上。
编辑
我已经设法使用捕获网络摄像头视频
gst-launch-0.10 ksvideosrc !自动视频接收器
现在如何将其转码为 H264 或 dirac 等格式?
编辑
gst-launch-0.10 ksvideosrc num-buffers=10 !解码器2!ffmpeg 色彩空间!x264enc!matroskamux !文件接收器位置=video.mkv
这似乎创建了一个文件,但 VLC 播放器无法读取它。
我编写了一个应用程序,通过TCP(没有数据包丢失)从硬件摄像头接收RTP数据包并将其H264数据包转储到文件中,这样我就可以使用MPlayer或VLC播放视频.这已经有效了,我几乎完成了这里描述的步骤.播放视频的命令是mplayer -fps 24 -demuxer h264es foobar.h264
和vlc foobar.h264
.
问题出现在我播放视频的时候.摄像机频繁更改FPS,因为在写入H264文件时丢弃RTP信息,每帧的时间戳丢失.我的问题是:我需要做些什么来修复帧频?我应该创建空/空白P帧(如果可能的话)?如果是这样,我该怎么做?
任何使用Linux兼容工具或库(如ffmpeg,libx264,libavcodec)使用shell,C/C++或Python的解决方案都非常受欢迎.
PS:我几乎没有视频编码和RTP的经验.
我正在尝试将录制的 AVI(1 个视频流,2 个音频流 [第一个是立体声,第二个是单声道])视频文件转换为 H264/AAC。
我希望第二个音频流的音量为 60%,第一个为 100%。
我还想合并第一个和第二个音频流。
输出应为带有 AAC 音频的 H264。
我尝试使用的命令是:
"ffmpeg.exe"
-i "input.avi"
-filter_complex "
[0:a:0]aformat=channel_layouts=stereo,volume=1.0[a1];
[0:a:1]aformat=channel_layouts=mono,volume=0.6[a2];
[a1][a2]amerge,pan=stereo|c0<c0+c2|c1<c1+c2[out]
"
-map 0:v
-map "[out]"
-c:v libx264 -preset slow -crf 26
-c:a aac -strict experimental -ab 128000 -ac 2 -ar 48000
"output.mp4"
Run Code Online (Sandbox Code Playgroud)
但我收到错误:[AVFilterGraph @ 0000000ceb630c00] 以下过滤器无法选择它们的格式: Parsed_amerge_4 考虑在它们的输入或输出附近插入 (a) 格式过滤器。配置复杂过滤器时出错。发生错误号 -5
我做错了什么,如何解决?
完整的控制台日志:
ffmpeg version N-76456-g6df2c94 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv …
Run Code Online (Sandbox Code Playgroud) 我正在接收多个x264 RTSP流,我正在使用libVLC解码它们,我想使用硬件加速来完成任务.
如果我在Windows上使用VLC播放器本身,我可以在简单首选项 - >输入/编解码器 - >硬件加速解码中选择"DirectX视频加速(DXVA)2.0",与禁用相比,我可以看到CPU利用率显着下降那个选择.
在C++代码中,我尝试将选项"--avcodec-hw = dxva2"添加到libvlc_new()的参数中,但没有运气,硬件加速似乎没有被使用(我想说解码比50%慢)在dxva2上的播放器上)
我扫描旧的 8 毫米胶片,所以我有包含一组 jpeg 的文件夹
我使用 ffmpeg 将它们转换为电影(我选择 x264 2 pass 编码)
//On all folder that start by 1 I launch the pass1 for x264
for f in 1*/ ; do cd "$f"; ffmpeg -y -r 18 -i img%05d.jpg -c:v libx264 -s 1200x898 -b:v 3000k -pass 1 -an -f mp4 /dev/null; cd ..; done
//On all folder that start by 1 I launch the pass2 x264
for f in 1*/ ; do cd "$f"; ffmpeg -y -r 18 -i img%05d.jpg …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gstreamer将DVD转换为mkv文件.我使用的管道是:
gst-launch -evv multifilesrc location="VTS_01_%d.VOB" index=1 ! dvddemux name=demuxer \ matroskamux name=mux ! filesink location=test.mkv \ demuxer.current_video ! queue ! mpeg2dec ! x264enc ! mux. \ demuxer.current_audio ! queue ! ffdec_ac3 ! lamemp3enc ! mux.
不幸的是,管道不会超出预卷.当我用例如ffenc_mpeg4替换x264enc时,一切正常..
我使用 x264 脚本进行一些视频编码。大多数选项都遵循模式
\n\nx264 --option0 $value0 --option1 $value1 -o output.file input.file\n
Run Code Online (Sandbox Code Playgroud)\n\n该脚本从文本文件中读取值。该文本文件包含键值,例如crf=18.3
. 不幸的是,这不适用于 mb-tree,因为该选项没有 $value,它是默认设置的,可以通过以下命令关闭--no-mbtree
。
如果mbtree=no-mbtree
在文本文件中设置,则一切正常。但是,如果我选择在打开 mbtree 的情况下进行编码,则--$variable-for-mb-tree-or-no-mb-tree
仍然存在,但未设置或为空,并且 x264 会引发错误。
我如何告诉 bash/ x264 忽略未设置或空变量?我想避免 if\xe2\x80\xa6then\xe2\x80\xa6else 而是内联执行。
\n