A method of encoding and communicating video data, comprising, at a source device: encoding a video data file to create an encoded video data file, wherein the video data is converted from one format to another encoded format, and wherein encoding comprises generating an original header comprising metadata that describes properties of the encoded video data dependent upon the format of the encoded video data file that are provided to the encoder before the video data is encoded, writing the original header to the encoded video data file, encoding the video data in a non-linear manner whereby a file header is written at the start of the encoding process and then replaced with a new header at the end of the encoding process, writing encoded video data to the encoded video data file after the original header, generating a new header comprising metadata that describes properties of the encoded video data that are known only after the whole of the video data file has been encoded, and replacing the original header of the encoded video data file with the new header; sending the encoded video data file to a destination device, wherein a portion of the encoded video data file is sent to the destination device at the same time as the video data file is being encoded, wherein the portion of the encoded video data file includes the original header; and sending the new header to the destination device when sending the encoded video data file to the destination device is complete, wherein sending the new header comprises remotely invoking code at the destination device that causes the destination device to modify a copy of the encoded video data file stored at the destination device by replacing the original header with the new header, wherein the encoded video data file comprises a plurality of portions, and wherein sending the encoded video data file comprises sending each portion of the encoded video data file to the destination device in a separate communication session, and sending a checksum for each corresponding portion for validation of each received portion. encoding a video data file to create an encoded video data file, wherein the video data is converted from one format to another encoded format, and wherein encoding comprises generating an original header comprising metadata that describes properties of the encoded video data dependent upon the format of the encoded video data file that are provided to the encoder before the video data is encoded, writing the original header to the encoded video data file, encoding the video data in a non-linear manner whereby a file header is written at the start of the encoding process and then replaced with a new header at the end of the encoding process, writing encoded video data to the encoded video data file after the original header, generating a new header comprising metadata that describes properties of the encoded video data that are known only after the whole of the video data file has been encoded, and replacing the original header of the encoded video data file with the new header; generating an original header comprising metadata that describes properties of the encoded video data dependent upon the format of the encoded video data file that are provided to the encoder before the video data is encoded, writing the original header to the encoded video data file, encoding the video data in a non-linear manner whereby a file header is written at the start of the encoding process and then replaced with a new header at the end of the encoding process, writing encoded video data to the encoded video data file after the original header, generating a new header comprising metadata that describes properties of the encoded video data that are known only after the whole of the video data file has been encoded, and replacing the original header of the encoded video data file with the new header; sending the encoded video data file to a destination device, wherein a portion of the encoded video data file is sent to the destination device at the same time as the video data file is being encoded, wherein the portion of the encoded video data file includes the original header; and sending the new header to the destination device when sending the encoded video data file to the destination device is complete, wherein sending the new header comprises remotely invoking code at the destination device that causes the destination device to modify a copy of the encoded video data file stored at the destination device by replacing the original header with the new header, wherein the encoded video data file comprises a plurality of portions, and wherein sending the encoded video data file comprises sending each portion of the encoded video data file to the destination device in a separate communication session, and sending a checksum for each corresponding portion for validation of each received portion.