Go to file
Simon Hailes a13a81a0dc avformat/crypto: add seeking support on read
cyrpto allows reading of data which has been aes-128-cbc encrypted given a key and an iv. But it did not handle filetypes which require seeking... e.g. it failed on an encrypted .mp4 file.

example:
take 25.mp4 created with:
ffmpeg -f lavfi -i sine=frequency=1000:beep_factor=2:r=48000:duration=720.0 -f lavfi -i testsrc=duration=720.0:rate=25 -vcodec libx264 -cmp 22 -timecode 10:00:00:00 -r 25 -y out\25.mp4

encrypt with:
openssl enc -aes-128-cbc -K 12345678901234567890123456789012 -iv 12345678901234567890123456789012 -in 25.mp4 -out 25.enc
then to transcode in ffmpeg:
ffmpeg -key 12345678901234567890123456789012 -iv 12345678901234567890123456789012 -i crypto:25.enc -vcodec mpeg4 -r 25 -y 25dec.mp4

prior to this modification, the transcode would fail.

Note also:  crypto previously maked both reads and writes as streamed, which caused the whole file
to be read before the transcode started.  Now, for read only, if the underlying layer is not marked as streamed,
then crypto is not.  This should enable efficient reading of encrypted containers which require seeking.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-08-30 17:14:28 +02:00
compat avcodec/nvenc: include nvEncodeAPI v7 SDK header 2016-08-28 16:47:54 +02:00
doc doc/APIChanges: mention nb_threads addition to AVFilterContext 2016-08-29 21:56:20 -03:00
libavcodec avcodec/nvenc: update license header 2016-08-28 19:51:22 +02:00
libavdevice avdevice/dshow: satisfy alloc contract better 2016-08-20 12:06:50 +02:00
libavfilter avfilter/vf_minterpolate: do not right shift negative numbers 2016-08-29 17:32:47 +02:00
libavformat avformat/crypto: add seeking support on read 2016-08-30 17:14:28 +02:00
libavresample doxygen: Standardize root-level modules 2016-08-02 22:15:25 -07:00
libavutil avutil/version: Improve lib versioning scheme for release branches with the next major release 2016-08-29 22:32:08 +02:00
libpostproc doxygen: Standardize root-level modules 2016-08-02 22:15:25 -07:00
libswresample swresample: add int64 sample format 2016-08-18 15:30:05 +02:00
libswscale swscale/output: Fix rounding offset in yuv2gbrp_full_X_c() 2016-08-23 02:46:02 +02:00
presets
tests avcodec/nvenc: include nvEncodeAPI v7 SDK header 2016-08-28 16:47:54 +02:00
tools tools/crypto_bench: add support for des 2016-08-26 15:46:32 -03:00
.gitattributes
.gitignore Merge commit '6641819feedb086ebba3d2be89b8d33980f367e1' 2016-06-26 15:43:05 +02:00
.travis.yml
arch.mak
Changelog avfilter: make use of ff_filter_get_nb_threads 2016-08-29 16:27:09 +02:00
cmdutils_common_opts.h
cmdutils_opencl.c
cmdutils.c cmdutils: fix implicit declaration of SetDllDirectory function 2016-08-29 19:52:39 -03:00
cmdutils.h cmdutils: remove the current working directory from the DLL search path on win32 2016-08-08 18:36:55 +02:00
common.mak Merge commit 'c5fd4b50610f62cbb3baa4f4108139363128dea1' 2016-06-27 19:39:46 +02:00
configure avcodec/nvenc: include nvEncodeAPI v7 SDK header 2016-08-28 16:47:54 +02:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
ffmpeg_cuvid.c
ffmpeg_dxva2.c Merge commit '18c506e9e6e8df8b1d496d093077b8240ea68c28' 2016-06-26 15:34:01 +02:00
ffmpeg_filter.c Merge commit '73c6ec6d659bab11ac424a4ba6ce3a56246295ee' into merge 2016-08-03 20:53:03 -07:00
ffmpeg_opt.c Merge commit '90944ee3ab79081845ea1bd97eea475031ce0842' 2016-08-06 13:31:12 -03:00
ffmpeg_qsv.c ffmpeg/qsv: fix QSV-accelerated transcode performance drop issue. 2016-08-16 17:09:33 +02:00
ffmpeg_vaapi.c Merge commit '9f7590f4e497c12693247d7f935a20d7773a64dd' 2016-06-26 15:36:27 +02:00
ffmpeg_vdpau.c Merge commit 'f72db3f2f3a8c83a4f5dede8fa03434b2bf676c6' 2016-06-26 15:29:39 +02:00
ffmpeg_videotoolbox.c
ffmpeg.c ffmpeg: fix -stream_loop with -re 2016-08-28 18:22:24 +02:00
ffmpeg.h Merge commit '73c6ec6d659bab11ac424a4ba6ce3a56246295ee' into merge 2016-08-03 20:53:03 -07:00
ffplay.c cmdutils: remove the current working directory from the DLL search path on win32 2016-08-08 18:36:55 +02:00
ffprobe.c cmdutils: remove the current working directory from the DLL search path on win32 2016-08-08 18:36:55 +02:00
ffserver_config.c
ffserver_config.h
ffserver.c cmdutils: remove the current working directory from the DLL search path on win32 2016-08-08 18:36:55 +02:00
INSTALL.md
library.mak Merge commit 'c5fd4b50610f62cbb3baa4f4108139363128dea1' 2016-06-27 19:39:46 +02:00
LICENSE.md
MAINTAINERS MAINTAINER: add myself for Motion Estimation and Interpolation filters 2016-08-28 13:48:23 +02:00
Makefile Merge commit '6641819feedb086ebba3d2be89b8d33980f367e1' 2016-06-26 15:43:05 +02:00
README.md
RELEASE
version.sh

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • ffserver is a multimedia streaming server for live broadcasts.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process. Few developers follow pull requests so they will likely be ignored.