标签: video-encoding

将FFmpeg中的视频编码为X264并使其在Quicktime中可播放

我想知道哪些命令行设置我需要明确设置(或避免)使用ffmpeg将视频编码成x264(mp4格式),默认情况下可以在Quicktime中播放.我发现许多预定义的预设文件对我有用,但其中一些不会,例如我无法使任何无损的文件工作,我也对这些文件感兴趣.例如,libx264-lossless_max.ffpreset将对我的视频进行编码,但它只能在VLC中播放,而不能在Quicktime中播放.在Quicktime中,视频保持黑色.我知道Perian是一个选项,但我希望我的文件可以在不安装Perian的情况下播放.谢谢你的帮助.

quicktime ffmpeg video-encoding h.264 x264

7
推荐指数
1
解决办法
3785
查看次数

网站和移动设备上的视频,是否有一个跨平台的代码/格式用于所有这些支持?

我必须管理一个主要显示视频的网站.该网站将有一个带有<video>标签的移动版本,因此该视频也可以在他们的浏览器中在ipod,iphone,ipad和其他移动设备上播放.

我现在的问题是:哪种格式/编解码器选择转换视频,以获得最佳工作流程?

完美的解决方案是找到可以在flash和<video>播放器中播放的格式,这样我的客户端就不会将视频导出到多个文件中.

对于Flash,我会使用带有h264编解码器的.flv文件.但是那个格式/编解码器不能用<video>播放,不是吗?

如果没有,是否有可以同时适用的格式/编解码器组合?

如果不是,我该怎么办?有一个用于Web版本的.flv/h264文件,以及一个用于移动版本的.ogg/webM文件吗?

提前感谢您的宝贵建议!

flash html5 video-encoding

7
推荐指数
1
解决办法
2363
查看次数

需要帮助了解HTML 5音频/视频元数据的使用和放置

我花了大量时间研究HTML 5音频和视频,但是我不了解元数据的编码.在我的研究中,似乎使用像Handbrake(ffmpeg)这样的程序,建议检查"web optimized"(从其他类型的软件导出时也有类似的设置,如imovie).我已经得出结论(并纠正我,如果我错了),这与将文件的元数据移动到文件的开头有关.然后,这为玩家/浏览器提供了立即播放所需的信息,而无需等待加载整个文件.

所以这里是我困惑的地方,我需要帮助的问题

这仅适用于mp4 MOOV原子吗?或者.ogv和.webm文件中有类似的东西吗?

video ffmpeg video-encoding html5-video html5-audio

7
推荐指数
1
解决办法
425
查看次数

视频编码来自java android的图像序列

我想在我当前的android项目中使用java编码来自图像序列的视频.我的意思是不使用NDK等外部工具.
还有任何可用的java库来编码来自图像序列的视频吗?

java android image video-encoding android-image

7
推荐指数
1
解决办法
1万
查看次数

用ffmpeg重复视频的第一帧

要重复视频的第一帧,例如填充它以补偿更长的音频,可以使用以下管道.

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执行中压缩?

video ffmpeg video-processing video-encoding

7
推荐指数
1
解决办法
2252
查看次数

具有提升的离散小波变换LeGal 5/3(负值,可视化,LH HL混淆)

我目前正在深入研究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)

但我很挣扎.

  1. 当应用dwt时,我得到了我的变换图像,但值超出了范围[0 - 255].因此我将它们存放在短裤中.有些是负面的,有些是非常大的.现在我如何显示它们以获得如下所示的那些漂亮的图像:(http://www.whydomath.org/node/wavlets/images/Largetoplevelwt.gif)?如果我使用imshow(image,[])在Matlab中显示我的图像,那么我的输出如下所示:http://i.imgur.com/dNaYwEE.jpg.那么,我是否必须对子频段进行一些转换?如果是,有人可以指出我的解决方案或告诉我该怎么做?

  2. 在文献中,我有时看到子带是这样排序的:[LL LH; HL HH],有时也像这样:[LL HL; LH HH].后者,我看到的主要是当论文是关于JPEG2000时,也是我的算法产生的.但是在Matlab中,当使用lwt2函数时,它返回前一个布局.当我将输出与Matlab的输出进行比较时,我也看到了这一点.似乎LH和HL混在一起.怎么可能?有关系吗?是否必须使用提升而不是卷积来做某事?

  3. 如果先行然后是列,反之亦然,这实际上是否重要?我在切换订单时看到输出没有区别.唯一不同的是LH变为HL而HL变为LH.但是,这并不能解决我的第二个问题,因为输出是相同的.我猜它只是符号.那重要吗?我看到他们在那里做文章和他们做排队的其他人.两者都与JPEG2000有关.

非常感谢.如果有人能对我的问题有所了解,那么我将非常感激.

亲切的问候,马库斯

c matlab video-encoding jpeg2000 wavelet

7
推荐指数
1
解决办法
1021
查看次数

如何从Raspberry Pi的动作中获取.mp4视频?

我在笔记本电脑上使用动作,它可以在任何格式下完美运行.但是当我使用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)

camera ffmpeg video-encoding motion raspberry-pi

7
推荐指数
2
解决办法
9996
查看次数

使用ffmpeg编码AAC(c ++)

我正在研究将在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)

c++ ffmpeg aac video-encoding

7
推荐指数
1
解决办法
2225
查看次数

无法播放某些视频

我正在尝试从我们的服务器在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.

video android video-processing video-encoding h.264

6
推荐指数
1
解决办法
4330
查看次数

块运动补偿编码器 - 如何处理参考帧中的块噪声?

我不熟悉视频压缩,但目前正在使用H.264压缩残留图像的项目

我的问题更多是关于视频编码器的一般性质.据我所知(正如维基百科所解释的那样),块运动补偿编码器将当前帧划分为一些非重叠块,对于每个块,它在当前块来自的参考帧中进行检查,然后计算出它的差异.期望的块和运动补偿块,然后以某种方式对该残差进行编码.

维基百科指出:"块运动补偿的主要缺点是它会在块边界处引入不连续性(块效应).这些伪像以锐利的水平和垂直边缘的形式出现,很容易被人眼发现并产生振铃效果(用于残差帧的变换编码的傅里叶相关变换中的高频子带中的大系数.

因此,由于参考帧已经包含块伪像(因为它被编码),然后这些块伪像被移位到当前块并且计算残差,然后由边界处的块伪像创建的高频.移位块也将显示为残差中的不连续性.并且不连续性通常对压缩不利.

在压缩残差之前,运动补偿块编码器是否以某种方式处理此块伪像?因为它确切地知道块是如何移位的,所以它知道块边界的位置,并且可以在编码残差之前或期间对它们做些什么,在这个地方移除/忽略不必要的高频.如果在像H.264这样的编解码器中执行这样的事情,有人可以解释编码器如何做到这一点的主要概念,给它一些术语等等吗?编码器如何处理参考帧中的块伪像?

compression video encoding video-encoding

6
推荐指数
1
解决办法
442
查看次数