我想知道哪些命令行设置我需要明确设置(或避免)使用ffmpeg将视频编码成x264(mp4格式),默认情况下可以在Quicktime中播放.我发现许多预定义的预设文件对我有用,但其中一些不会,例如我无法使任何无损的文件工作,我也对这些文件感兴趣.例如,libx264-lossless_max.ffpreset将对我的视频进行编码,但它只能在VLC中播放,而不能在Quicktime中播放.在Quicktime中,视频保持黑色.我知道Perian是一个选项,但我希望我的文件可以在不安装Perian的情况下播放.谢谢你的帮助.
我必须管理一个主要显示视频的网站.该网站将有一个带有<video>标签的移动版本,因此该视频也可以在他们的浏览器中在ipod,iphone,ipad和其他移动设备上播放.
我现在的问题是:哪种格式/编解码器选择转换视频,以获得最佳工作流程?
完美的解决方案是找到可以在flash和<video>播放器中播放的格式,这样我的客户端就不会将视频导出到多个文件中.
对于Flash,我会使用带有h264编解码器的.flv文件.但是那个格式/编解码器不能用<video>播放,不是吗?
如果没有,是否有可以同时适用的格式/编解码器组合?
如果不是,我该怎么办?有一个用于Web版本的.flv/h264文件,以及一个用于移动版本的.ogg/webM文件吗?
提前感谢您的宝贵建议!
我花了大量时间研究HTML 5音频和视频,但是我不了解元数据的编码.在我的研究中,似乎使用像Handbrake(ffmpeg)这样的程序,建议检查"web optimized"(从其他类型的软件导出时也有类似的设置,如imovie).我已经得出结论(并纠正我,如果我错了),这与将文件的元数据移动到文件的开头有关.然后,这为玩家/浏览器提供了立即播放所需的信息,而无需等待加载整个文件.
所以这里是我困惑的地方,我需要帮助的问题
这仅适用于mp4 MOOV原子吗?或者.ogv和.webm文件中有类似的东西吗?
我想在我当前的android项目中使用java编码来自图像序列的视频.我的意思是不使用NDK等外部工具.
还有任何可用的java库来编码来自图像序列的视频吗?
要重复视频的第一帧,例如填充它以补偿更长的音频,可以使用以下管道.
ffmpeg -i video.mp4 -vframes 1 -f image2 image.jpg
ffmpeg -loop 1 -i image.jpg -t 5 pad.mkv
ffmpeg -i pad.mkv -i video.mp4 -i audio.mp3 -filter_complex '[0:v] [1:v] concat' -c:a copy -map 2:a out.mkv
Run Code Online (Sandbox Code Playgroud)
(Concat过滤器首选连接输入,因为视频和填充剪辑的编解码器可能不同.)
相比之下,在开始时具有静音的填充音频仅适合一行.
ffmpeg -i video.mp4 -i audio.mp3 -map 0:v -filter_complex 'aevalsrc=0:duration=5 [pad],[pad] [1:a] concat=v=0:a=1' -c:v copy out.mkv
Run Code Online (Sandbox Code Playgroud)
视频填充是否也可以在一个ffmpeg执行中压缩?
我目前正在深入研究Wavelets并对某些事情感到有些困惑.
首先,这不是功课.它仅用于娱乐编码.
为了更好地理解,我在C中实现了LeGal 5/3小波的提升方案.据我所知,它似乎有效.我可以反转它并正确再现原始图像.在伪代码中,我的前进dwt看起来像这样:
// deinterleave splits the low band from the high band
// (e.g. 1 0 3 0 6 0 8 1 11 becomes 1 3 6 8 11 | 0 0 0 1)
for each row in image:
dwt1d(row)
deinterleave(row)
for each col in image:
dwt1d(col)
deinterleave(col)
Run Code Online (Sandbox Code Playgroud)
但我很挣扎.
当应用dwt时,我得到了我的变换图像,但值超出了范围[0 - 255].因此我将它们存放在短裤中.有些是负面的,有些是非常大的.现在我如何显示它们以获得如下所示的那些漂亮的图像:(http://www.whydomath.org/node/wavlets/images/Largetoplevelwt.gif)?如果我使用imshow(image,[])在Matlab中显示我的图像,那么我的输出如下所示:http://i.imgur.com/dNaYwEE.jpg.那么,我是否必须对子频段进行一些转换?如果是,有人可以指出我的解决方案或告诉我该怎么做?
在文献中,我有时看到子带是这样排序的:[LL LH; HL HH],有时也像这样:[LL HL; LH HH].后者,我看到的主要是当论文是关于JPEG2000时,也是我的算法产生的.但是在Matlab中,当使用lwt2函数时,它返回前一个布局.当我将输出与Matlab的输出进行比较时,我也看到了这一点.似乎LH和HL混在一起.怎么可能?有关系吗?是否必须使用提升而不是卷积来做某事?
如果先行然后是列,反之亦然,这实际上是否重要?我在切换订单时看到输出没有区别.唯一不同的是LH变为HL而HL变为LH.但是,这并不能解决我的第二个问题,因为输出是相同的.我猜它只是符号.那重要吗?我看到他们在那里做文章和他们做排队的其他人.两者都与JPEG2000有关.
非常感谢.如果有人能对我的问题有所了解,那么我将非常感激.
亲切的问候,马库斯
我在笔记本电脑上使用动作,它可以在任何格式下完美运行.但是当我使用Raspberry Camera V2在我的Raspberry Pi 3(Raspbian Jessie)上使用它时,唯一有效的格式是:.avi和.swf.
当我选择任何其他格式时,输出视频是"0秒视频",即时播放和关闭.
我想拥有.mp4或.ogg输出所以我可以用HTML5轻松阅读.
这是运动编解码器文档.
这是我的配置文件:
############################################################
# Daemon
############################################################
# Start in daemon (background) mode and release terminal (default: off)
daemon on
# File to store the process ID, also called pid file. (default: not defined)
process_id_file /var/run/motion/motion.pid
############################################################
# Basic Setup Mode
############################################################
# Start in Setup-Mode, daemon disabled. (default: off)
setup_mode off
# Use a file to save logs messages, if …Run Code Online (Sandbox Code Playgroud) 我正在研究将在Unity插件中使用的视频编码.我已经使图像编码工作,但现在我在音频.所以只尝试将音频输入到具有AAC编码的mp4文件中.而且我被困住了.生成的文件不包含任何内容.另外,根据我的理解,ffmpeg中的AAC仅支持AV_SAMPLE_FMT_FLTP,这就是我使用它的原因.这是我的代码:
建立:
int initialize_encoding_audio(const char *filename)
{
int ret;
AVCodecID aud_codec_id = AV_CODEC_ID_AAC;
AVSampleFormat sample_fmt = AV_SAMPLE_FMT_FLTP;
avcodec_register_all();
av_register_all();
aud_codec = avcodec_find_encoder(aud_codec_id);
avcodec_register(aud_codec);
if (!aud_codec)
return COULD_NOT_FIND_AUD_CODEC;
aud_codec_context = avcodec_alloc_context3(aud_codec);
if (!aud_codec_context)
return CONTEXT_CREATION_ERROR;
aud_codec_context->bit_rate = 192000;
aud_codec_context->sample_rate = select_sample_rate(aud_codec);
aud_codec_context->sample_fmt = sample_fmt;
aud_codec_context->channel_layout = AV_CH_LAYOUT_STEREO;
aud_codec_context->channels = av_get_channel_layout_nb_channels(aud_codec_context->channel_layout);
aud_codec_context->codec = aud_codec;
aud_codec_context->codec_id = aud_codec_id;
ret = avcodec_open2(aud_codec_context, aud_codec, NULL);
if (ret < 0)
return COULD_NOT_OPEN_AUD_CODEC;
outctx = avformat_alloc_context();
ret = avformat_alloc_output_context2(&outctx, NULL, "mp4", filename);
outctx->audio_codec = aud_codec;
outctx->audio_codec_id = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从我们的服务器在Android设备上播放电影.它不是媒体服务器,只是常规的Apache服务器.我们使用相同的API访问iPhone上的视频,它工作正常.
在Android设备上,某些视频有效,有些则无效.它们都以相同的方式创建,除了大多数不工作的都由静止图像和音频组成.
我们尝试用Videora重新编码它们,并尝试用MP4Box暗示它们.存储在SD卡上时,所有视频播放都非常精细.我们还尝试首先将视频从服务器下载到SD卡,将其保存为文件,然后从文件中播放,但这也不起作用.
帮助会很棒.我非常困惑.谢谢.
编辑 - Logcat:
01-19 08:19:12.669: DEBUG/MediaPlayer(1878): Couldn't open file on client side, trying server side
01-19 08:19:14.119: INFO/ActivityManager(1172): Displayed activity com.myproject/.VideoClass: 1966 ms (total 1966 ms)
01-19 08:19:15.779: ERROR/PlayerDriver(1071): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus
01-19 08:19:15.789: ERROR/MediaPlayer(1878): error (200, -32)
01-19 08:19:15.789: ERROR/MediaPlayer(1878): Error (200,-32)
01-19 08:19:15.789: DEBUG/VideoView(1878): Error: 200,-32
01-19 08:19:15.849: WARN/PlayerDriver(1071): PVMFInfoErrorHandlingComplete
Run Code Online (Sandbox Code Playgroud)
更新:这里是三个不同视频的视频分析的pastebin.来自服务器的app上的第一个流.第二个视频不会流式传输,但可以下载然后从设备播放.第三个既不能流式播放也不能下载播放. http://pastebin.com/9qChSkFz
WTF.
我不熟悉视频压缩,但目前正在使用H.264压缩残留图像的项目
我的问题更多是关于视频编码器的一般性质.据我所知(正如维基百科所解释的那样),块运动补偿编码器将当前帧划分为一些非重叠块,对于每个块,它在当前块来自的参考帧中进行检查,然后计算出它的差异.期望的块和运动补偿块,然后以某种方式对该残差进行编码.
维基百科指出:"块运动补偿的主要缺点是它会在块边界处引入不连续性(块效应).这些伪像以锐利的水平和垂直边缘的形式出现,很容易被人眼发现并产生振铃效果(用于残差帧的变换编码的傅里叶相关变换中的高频子带中的大系数.
因此,由于参考帧已经包含块伪像(因为它被编码),然后这些块伪像被移位到当前块并且计算残差,然后由边界处的块伪像创建的高频.移位块也将显示为残差中的不连续性.并且不连续性通常对压缩不利.
在压缩残差之前,运动补偿块编码器是否以某种方式处理此块伪像?因为它确切地知道块是如何移位的,所以它知道块边界的位置,并且可以在编码残差之前或期间对它们做些什么,在这个地方移除/忽略不必要的高频.如果在像H.264这样的编解码器中执行这样的事情,有人可以解释编码器如何做到这一点的主要概念,给它一些术语等等吗?编码器如何处理参考帧中的块伪像?
video-encoding ×10
ffmpeg ×5
video ×4
android ×2
h.264 ×2
aac ×1
c ×1
c++ ×1
camera ×1
compression ×1
encoding ×1
flash ×1
html5 ×1
html5-audio ×1
html5-video ×1
image ×1
java ×1
jpeg2000 ×1
matlab ×1
motion ×1
quicktime ×1
raspberry-pi ×1
wavelet ×1
x264 ×1