我有一组视频帧保存为目录中的图像,我正在尝试将这些视频帧编码为高质量的视频,但是我尝试的每个设置和每种格式都会产生非常明显的伪像.
基本命令是这样的:
ffmpeg -r 25 -i %4d.png myvideo.mpg
Run Code Online (Sandbox Code Playgroud)
我已经尝试了minrate和maxrate标志.任何{mpg,avi,mov,flv}格式都可以.
有关设置的建议吗?最终文件大小不是问题.
我正在寻找一种方法来旋转我的Debian Wheezy系统上使用Nexus 4拍摄的视频.视频以纵向模式拍摄,我想将它们旋转到横向模式.优选地,旋转是命令行驱动的.
我发现以前的几个问题暗示了一个很好的解决方案,但我似乎无法让它运作起来.
首先是这个问题: 使用FFmpeg旋转视频
但它表明ffmpeg已经过时,我应该使用avconv.我发现这个问题详细说明了前进的方向. https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
这让我使用以下命令:
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
Run Code Online (Sandbox Code Playgroud)
然而,这是非常缓慢的(上次测试花了我超过6小时不到3分钟的镜头)并且不会导致可播放的电影.我也在记录输出时出现错误,该错误表明Mb Rate> level limit.
这里有重新编码的问题吗?在应用轮换之前,我是否应首先将视频从手机重新编码为另一种,更"可行"的编码?或者我错过了另一个重点?
我一直在努力解决这个问题一个多星期,而且很可能是高通GPU /硬件视频编码器中的一个错误.由于我们被迫发布应用程序,他们的开发者论坛没有提供任何反馈,我也在这里发布,希望有人能够提供一些线索,甚至更好的解决方法,以便编码器中的错误是没有触发.
应用程序从Surface编码.当某些图像渲染到表面时,编码器在同一位置失败(100%)(当前编码的帧是关键帧时).崩溃时编码器的Logcat输出是(最后一行以非常高的速率重复):
11-26 11:41:33.312: E/OMX-VENC-720p(25949): ERROR: async_msg_process() - Error statuscode = 1
11-26 11:41:33.312: E/ACodec(29317): [OMX.qcom.video.encoder.avc] ERROR(0x80001009)
11-26 11:41:33.312: E/MediaCodec(29317): Codec reported an error. (omx error 0x80001009, internalError -2147483648)
11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: venc_use_buf:set input buffer failed
11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: in dev_use_buf
11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: empty_buffer_done() failed!
11-26 11:41:33.372: E/OMX-VENC-720p(25949): m_fbd_count at o/p flush = 306
11-26 11:41:33.372: E/OMX-VENC-720p(25949): m_etb_count at i/p flush = 313
11-26 11:41:33.372: E/OMX-VENC-720p(25949): ERROR: ioctl VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER failed
11-26 11:41:33.372: E/OMX-VENC-720p(25949): …
Run Code Online (Sandbox Code Playgroud) 这两个都一样吗?是MPEG-4的H.264编解码器吗?如果我需要将flv转换为高清H.264视频格式怎么办?我想制作在线电视流媒体,并希望使用PHP或Python.
如何从Android上的一系列图像/照片创建视频文件?可以使用当前的SDK完成吗?还是我需要一个编解码库?
我正在开发一个需要以下列形式存储视频的系统:
/path/to/video/<md5 of the file>
Run Code Online (Sandbox Code Playgroud)
所以我没有输出扩展名.我正在使用ffmpeg转换这些视频,但它似乎使用输出文件扩展名来确定输出格式,所以这是我的问题.
由于我在文件名中没有输出扩展名,有没有办法直接在命令行中指定输出格式而不创建临时文件或像这样的脏解决方案?
谢谢
注意事项:我意识到这是一个非常复杂的问题,大约有一百万个细微差别,我正在努力减少到一个数字......
我即将使用H.264编码进行大型视频编码项目.我们正在尝试创建多个比特率配置文件,以适应互联网连接,处理器,设备等的流媒体.
一般来说,我应该期望看到什么样的压缩比(在保持合理的质量水平的同时)?
例如,640 x360(16:9)像素视频文件@ 24帧/秒和16位颜色应该产生大约33 MB/s 的未压缩文件.
我被告知,对于该文件,500 Kbits /秒(或62 KB/s)不是不合理的视频比特率.这看起来很疯狂 - 压力超过530:1?压缩率为99.8%.我的数学错了吗?
我只是在寻找一个粗略的外部质量指南,例如"超过500x压缩是疯狂的"或"低于400x是浪费带宽".我到处寻找,没有什么能给我带来任何预期的压缩......
我知道FFMPEG是可能的,但是如果我有一个部分文件(比如没有开头和结尾)该怎么办.有可能从中提取一些帧吗?
我试图让它在Android 4.1上运行(使用升级的Asus Transformer平板电脑).感谢Alex对我之前的问题的回答,我已经能够将一些原始的H.264数据写入文件,但是这个文件只能播放ffplay -f h264
,而且似乎丢失了有关帧速率的所有信息(极快的播放).此外,色彩空间看起来不正确(atm使用摄像机默认的编码器侧).
public class AvcEncoder {
private MediaCodec mediaCodec;
private BufferedOutputStream outputStream;
public AvcEncoder() {
File f = new File(Environment.getExternalStorageDirectory(), "Download/video_encoded.264");
touch (f);
try {
outputStream = new BufferedOutputStream(new FileOutputStream(f));
Log.i("AvcEncoder", "outputStream initialized");
} catch (Exception e){
e.printStackTrace();
}
mediaCodec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 320, 240);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar);
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodec.start();
}
public void close() {
try {
mediaCodec.stop();
mediaCodec.release();
outputStream.flush();
outputStream.close();
} …
Run Code Online (Sandbox Code Playgroud) 我正在通过录制屏幕和我的声音来做一系列教程.正如PNG最适合截图一样,而JPEG更适合照片(虽然有损),哪种视频编码和容器格式更适合屏幕录制?
请提供以下建议:
需要考虑的要点:
video-encoding ×10
video ×5
ffmpeg ×4
android ×3
compression ×2
h.264 ×2
avconv ×1
codec ×1
debian ×1
flv ×1
mediacodec ×1
mp4 ×1
mpeg-4 ×1
rotation ×1