0

I have previously made an .mp4 video file in Adobe Premiere Pro. I don't have any of the original files (or the project file) still. I've now noticed a very small mistake that really bothers me, but if I were to import the .mp4 file into Premiere, cut out the split-second mistake (it's an unwanted sound that I for some reason didn't catch when I made it) and then re-export/encode it, it would "lose a generation" of picture (and sound?) quality.

This is unacceptable to me.

I want to export the exact same video minus the split-second mistake. Zero changes in video/audio quality. Note that I cannot export it losslessly, because then it's no longer an .mp4 and will take a HUGE amount of storage space.

Is there really no way to accomplish this? It's so annoying that I will have to suffer serious loss of quality unless I keep all the lossless source files around forever for everything. It's just not practical, and I frankly see no reason why it couldn't allow us to do this.

  • Nope, no way for that to happen. This isn't just a feature feature that wasn't included in Premiere, it is an inherent property of the math of lossy codecs. FWIW, most professionals don't usually keep losslessly encoded source files. However, they do usually keep lossy encoded source files, either using the original acquisition codec or an intermediate company standard format called a mezzanine format. – Michael Liebman Jun 7 '18 at 14:48
  • But... Since "the math" for the algorithms has already been performed once, couldn't it "reconstruct" all the parts except the small part that I want to remove, and then "splice" them together again, without actually re-encoding? – coolmap Jun 7 '18 at 14:59
  • No. H.264 is a lossy codec, which, as the name implies, losses information in the encode process. You can "reconstruct" a close approximation of the original, but you will always lose quality because you are starting from less information than you originally had. That will always introduce artifacts because of the additional generation. A lossless codec, on the other hand, does exactly what you are describing. Math that saves all the information to make the file smaller on encode and the opposite math to get back the exact original on the decode. – Michael Liebman Jun 7 '18 at 16:00
  • Do you just want to remove a sound or the corresponding part of the video as well? – Gyan Jun 7 '18 at 17:03
  • In this case, the audio would do, but in other cases, also the video. – coolmap Jun 7 '18 at 17:35
2

@user2248 is on the money. The only software I know of that can do this sort of thing is ffmpeg. I'll expand on his answer:

  • Import mymovie.mp4 into Premiere Pro, or audition or whatever.
  • Do your sound edit, and export just the audio to myfixedaudio.wav (or .aiff).
  • Now comes the scary command line stuff:
ffmpeg -i mymovie.mp4 -i myfixedaudio.wav -c:v copy -map 0:v -map 1:a myfixedmp4.mp4

Wow, a whole line of typing, that's going to take forever. Seriously, it might seem that it's mysterious and difficult, but it's actually less work than doing it with the GUI. let's break down that command so you can see what it's doing:

  • -i mymovie.mp4 -i myfixedaudio.wav import the movie, and the audio. FFMPEG numbers from 0, so mymovie.mp4 is source 0 and myfixedaudio.wav is source 1
  • -c:v copy set the codec for video to copy, aka completely lossless copy of the original encoded video, copied bit for bit. We don't need to set the codec for audio because it sets the appropriate audio codec for mp4 by default (aac).
  • -map 0:v -map 1:a map the video from the first source and the audio from the second source to the first and second streams of the output. I.e. the output now has an identical video stream to the original movie, and a re-encoded audio stream from the fixed version in the wav file.
  • myfixedmp4.mp4 ffmpeg uses the first thing it sees as a filename without a -option in front of it as the output.
  • if you wanted to preserve more audio quality, you could muck around with the audio settings, you'd do that before the output name.

Compare that to what you'd do in Premiere:

  • import the movie and the audio
  • create a new timeline
  • add the just video to the timeline by deactivating the audio and then dragging the video into the timeline, or by selecting the original audio track from the movie and deleting it
  • add the new audio
  • export the movie, after adjusting the export settings

Same same, only you do it with a lot more clicking and dragging and keystrokes. Not to mention that it can't actually do what ffmpeg can.

This will not preserve your audio losslessly, but nothing will. It will however avoid a generation loss with your video, and it is the only way I know of that will.

  • Thanks. I used your method for this, and then verified that the video is identical to the last pixel afterwards. So it worked. However, it really bothers me that the audio couldn't be identical as well for all the non-cut parts. Also, when I was done, I compared all three versions' audio track and noticed heavy differences in both volume and when they start. Very unexpected. And frustrating. No idea why it changes where it starts. Also, I tried to upvote your solution, but this site wouldn't let me because it's a POS. – coolmap Jun 9 '18 at 13:41
0

ffmpeg can use a -codec copy parameter for either sound or image. So you can easily demultiplex your file into video and sound, edit the sound, and then reassemble. That way only the sound quality would be affected by reencoding. Using a higher bitrate here would alleviate most of the problems (depending on codec) and the video bandwidth will very likely make the difference look like a drop in the bucket.

  • Hmm... "ffmpeg" isn't what I consider "easy" by any means. I would be lying if I claimed to understand this solution, but even so, it seems to require a bunch of manual fiddling and it doesn't seem to preserve the audio losslessly? – coolmap Jun 8 '18 at 4:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.