我AlAssetsGroup enumerateAssetsAtIndexes
用来列出照片(相机)应用程序中的资产.对于给定的视频资源,我想确定它是以纵向还是横向模式拍摄的.
在下面的代码,资产是一个AlAsset
和我已经测试,看看它是否是一个视频资产[asset valueForProperty:ALAssetPropertyType]
的AlAssetTypeVideo
,则:
int orientation = [[asset valueForProperty:ALAssetPropertyOrientation] intValue];
Run Code Online (Sandbox Code Playgroud)
在这种情况下orientation
,总是0 ALAssetOrientationUp
.也许这是预期的,所有视频都是正确的,但是纵向视频在MPEG-4中表示为90度旋转的景观视频(即所有视频实际上都是风景,如果不是,请尝试使用Mac上的MediaInfo应用程序相信我).
文件中的位置和/或如何在纵向握住手机时访问告诉我实际记录的信息?
考虑到资产的网址,我也尝试了这个:
AVURLAsset *avAsset = [[AVURLAsset alloc] initWithURL:url options:nil];
CGSize size = [avAsset naturalSize];
NSLog(@"size.width = %f size.height = %f", size.width, size.height);
CGAffineTransform txf = [avAsset preferredTransform];
NSLog(@"txf.a = %f txf.b = %f txf.c = %f txf.d = %f txf.tx = %f txf.ty = %f",
txf.a, txf.b, txf.c, txf.d, txf.tx, txf.ty);
Run Code Online (Sandbox Code Playgroud)
这总是产生宽度>高度因此对于iPhone 4,宽度= 1280高度= 720并且变换a和d值是1.0
,其他是 …
我想将一组位图编码到h264中.这可以通过MediaEncoder吗?我已经编写了一些代码来执行此操作,但输出无法在我尝试过的任何媒体播放器中播放.这里是我主要从Stackoverflow上找到的其他来源借用的一些代码.
mMediaCodec = MediaCodec.createEncoderByType("video/avc");
mMediaFormat = MediaFormat.createVideoFormat("video/avc", 320, 240);
mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000);
mMediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
mMediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar);
mMediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
mMediaCodec.configure(mMediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mMediaCodec.start();
mInputBuffers = mMediaCodec.getInputBuffers();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); // image is the bitmap
byte[] input = byteArrayOutputStream.toByteArray();
int inputBufferIndex = mMediaCodec.dequeueInputBuffer(-1);
if (inputBufferIndex >= 0) {
ByteBuffer inputBuffer = mInputBuffers[inputBufferIndex];
inputBuffer.clear();
inputBuffer.put(input);
mMediaCodec.queueInputBuffer(inputBufferIndex, 0, input.length, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
我应该调整什么?
我正在尝试使用FFMpeg将包含视频,音频和字幕流的视频文件转换为另一种格式.但是,ffmpeg抱怨字幕格式 - 它无法解码流.由于我不需要这个字幕流,我想知道如何在转换过程中禁用字幕流解码?
I am trying to export video with some parameters like video bit rate, audio bit rate, frame rate, changing video resolution, etc. Note that I am letting the user set the video frame rate in fractions; like user can set the video frame rate say, 23.98.
I use AVAssetWriter and AVAssetReader for this operation. I use AVAssetWriterInputPixelBufferAdaptor for writing the sample buffers.
Everything else works just fine, except: the video frame rate.
我打算使用ffmpeg来确保上传到我网站的所有视频文件都编码为mp4 h264.
而不是自动处理每个文件,我想通过仅处理那些不是mp4 h264的文件来最小化处理开销.有没有一种简单的方法可以使用ffmpeg或其他命令行实用程序执行此操作?
我看到很多关于将moov
原子从MP4视频容器的末端重新定位到开头的问题,以使视频"网络优化"或更容易流式传输.似乎大多数工具在首次编码视频时都需要一个明确的选项才能执行此操作(如果它完全可用).
如果将原子置于开头使得流式传输工作更好,并且事后做到这一点成本很高,为什么我最初想要用原子对视频进行编码?有什么好处?
我一直在尝试从一系列图像中创建视频.
当我使用建议的ffmpeg方法时:
ffmpeg -f image2 -i image%d.jpg video.mpg
Run Code Online (Sandbox Code Playgroud)
该视频并不像我希望的那样好:/
例如,对于VDUB,如果我从相同的图像序列中导出avi,它的完美的qualeity,但是如果有很多jpeg,文件大小可能很大.
在过去我使用了x264 gui前端,如staxrip,从未压缩的AVI产生的视频非常特殊,压缩非常好,相当微小的输出文件(mp4).
那么压缩图像序列以获得高质量的最佳方法是什么?当然有比ffmpeg更好的东西?是否可以像使用ffmpeg一样使用图像序列中的x264,并获得更高的质量?仅供参考我将使用startprocess()从ac#.net项目中完成任务;
我可以从iPhone的相机中获得单独的帧.我需要的是一种用声音打包它们以便流式传输到服务器的方法.我拥有它们后发送文件并不是什么大问题.它生成的流媒体文件我遇到了问题.我一直试图让FFMpeg没有太多运气.
任何人都有任何关于如何解决这个问题的想法?我想要一个已知的工作API或有关让FFMpeg在iPhone应用程序中正确编译的说明.
我需要转换视频以用于flash播放器和iphone/ipod touch.我在ffmpeg中使用以下批处理脚本:
@echo off
ffmpeg.exe -i %1 -s qvga -acodec libfaac -ar 22050 -ab 128k -vcodec libx264 -threads 0 -f ipod %2
Run Code Online (Sandbox Code Playgroud)
这总是输出一个mp4文件,我总是可以在我的电脑上播放它.我的iphone 3GS上的视频似乎也很好用.但是对于一些输入文件,它不适用于较旧的iPhone版本(3G和iPod touch).
这是来自一个这样的文件的ffmpeg输出:
D:\ffmpeg>encode.bat d:\temp\recording.flv d:\temp\out.m4v
FFmpeg version SVN-r18709, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-memalign-hack --prefix=/mingw --cross-prefix=i686-ming
w32- --cc=ccache-i686-mingw32-gcc --target-os=mingw32 --arch=i686 --cpu=i686 --e
nable-avisynth --enable-gpl --enable-zlib --enable-bzlib --enable-libgsm --enabl
e-libfaac --enable-libfaad --enable-pthreads --enable-libvorbis --enable-libtheo
ra --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libxvid -
-enable-libschroedinger --enable-libx264
libavutil 50. 3. 0 / 50. 3. 0
libavcodec 52.27. 0 / …
Run Code Online (Sandbox Code Playgroud)