FFmpeg 4.3
ffmpeg.org
ffmpeg.org
This is useful if for some reason you want to archive them or play them in an app that doesn't constantly change its UI and bombard you with ads.
[0]: https://www.kylepiira.com/2019/05/12/how-to-break-audible-dr...
> Audiobook and podcast files, which also contain metadata including chapter markers, images, and hyperlinks, can use the extension .m4a, but more commonly use the .m4b extension. An .m4a audio file cannot "bookmark" (remember the last listening spot), whereas .m4b extension files can.
The cool thing is that once you rip your activation bytes, it works for all your audiobooks. Would definitely recommend it.
There's no functional difference between a .m4b file and a .m4a file. Both use the MP4 container so adhere to the same specification, so support all the same features (including bookmarks). FFmpeg even uses the same muxer and demuxer for both "formats".
The only difference is a non-standard convention used by certain software (like iTunes) to write autiobook-related metadata only to MP4 files that use the .m4b file extension.
You'll get exactly the same result if you just change the file extension after remuxing/transcoding.
Even iTunes, I think, would treat files differently between m4r (Ringtone) and m4a (audio) files, so despite there being no difference at all, using the 'correct' extension might be quite a bit more convenient in the long run.
A ".m4b file" is just an MP4 with a funny file extension.
Yes, because it's Apple (of course) who started using non-standard .m4a, .m4b and .m4r extensions, instead of the standard .mp4.
This claim seems to originate from the fact that the old iPods only remembered the last played position on M4B files. But that's entirely a player convention, not a file format convention.
I was planning on writing something to spot when they say "chapter" as it is always the same but I never got around to that. Also, doing all that work was almost meditative :)
A way to share the corrections would be to export the markers from audacity but sadly I don't have that data anymore, though I could calculate the markers from the files I exported if you are interested.
I got some pretty good matches with m4b-tool here, while it does not work for all audio books (you need the latest pre-release for this very experimental undocumented feature!):
# try to match my-book.epub on my-audiobook.m4b
# ignore first, second and last two epub-chapters for the match (dedication etc.)
# split chapters into sub chapters to ensure they are between 5 and 15 minutes
# create a backup of the original chapters (done automatically)
m4b-tool chapters -v --epub=my-book.epub --epub-ignore-chapters=0,1,-1,-2 --max-chapter-length=300,900 "my-audiobook.m4b"
# omg it did not work and messed up all chapters, please restore the original chapters
m4b-tool chapters -v --epub-restore "my-audiobook.m4b"
# ok, lets only dump the findings in chapter.txt format to do it manually
m4b-tool chapters -v --epub-dump --epub=my-book.epub my-audiobook.m4bI once planned a chapter database (https://www.chapter-db.org) to collect work like yours, provide an online chapter editor and bind an api to m4b-tool, but i did not have the time to finish the project.
AFAIK FFmpeg does not yet support this decoding. There is a patch available: https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/202004...
I just tried and it looks like you can still download aax through the browser.
However, the final command is a little crazy:
ffmpeg -i 1.jpg -i 2.jpg -i 3.jpg
-filter_complex "color=c=black:r=60:size=1280x800:d=10[black];[0:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='ih-ih/zoom':fps=60:d=60*4:s=1280x800,crop=w=1280:h=800:x='(iw-ow)/2':y='(ih-oh)/2',fade=t=in:st=0:d=1:alpha=0,fade=t=out:st=3:d=1:alpha=1,setpts=PTS-STARTPTS[v0];[1:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),pad=w=9600:h=6000:x='(ow-iw)/2':y='(oh-ih)/2',zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='0':fps=60:d=60*4:s=1280x800,fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=1,setpts=PTS-STARTPTS+1*3/TB[v1];[2:v]format=pix_fmts=yuva420p,crop=w=2*floor(iw/2):h=2*floor(ih/2),zoompan=z='if(eq(on,1),1,zoom+0.000417)':x='0':y='0':fps=60:d=60*4:s=1600x800,crop=w=1280:h=800:x='(iw-ow)/2':y='(ih-oh)/2',fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=0,setpts=PTS-STARTPTS+2*3/TB[v2];[black][v0]overlay[ov0];[ov0][v1]overlay[ov1];[ov1][v2]overlay=format=yuv420"
-c:v libx264 out.mp4
[0] https://el-tramo.be/blog/ken-burns-ffmpeg/This demonstrates, in a rather extreme example, the colossal composability of the interface, even if it lacks nice formatting here.
On many systems I work with and have to debug, gnuplot won't be already installed (and won't be installable on a system not connected to the Internet) so 'rich' would be 'flush in packages with a full system available'.
Sometimes, even imagemagick isn't there, but rsvg-convert is, you can still do amazing things with just bash+curl+svg...
When I use it, I just look for "pre-baked recipes" otherwise it's a really unpleasant rabbit hole to get into.
Doesn't kdenlive use melt [0] instead of ffmpeg directly?
No one is going to type out this one-liner from scratch, or have an easy time understanding what it means by reading it, but as it's made up of a series of smaller, more easily understood commands, in a shell or Python script it could be vastly more legible and, dare I say it, usable.
This is also the reason why there are so many frontends to ffmpeg, to simplify various specific tasks. I can't count how many one-off apps I've seen that do one thing and do it well, and just ship a full copy of ffmpeg to do that one thing. Making an actual GUI for all of this would be just... insane, really, but it's so versatile and flexible that you can basically do anything with it.
If you can manage to cobble together a single command (as illegible as that may be), you might be able to do what you're looking to do in far less time
Challenge accepted! (No seriously, that's what I'm working on)
Every couple of years worth of not using an option I need to look it up again. But it's usually not too hard.
Compare:
frontend -s 05:28:38.667 -e 05:28:58.767 input.ts
ffmpeg -ss 05:28:28.667 -i input.ts -ss 10 -t 20.100 -pass 1
ffmpeg -y -ss 05:28:28.667 -i input.ts -ss 10 -t 20.100 -pass 2[0] https://github.com/zvakanaka/ffeasy [1] https://www.npmjs.com/package/mklapse
It almost seems like the best way to understand an ffmpeg complex filter graph is to actually draw a graph...
The gist of it is that if your static image is in bgr24 (most of BMP images) format, when converting to typical video pixel format (like yuv420p), the color will be distorted.
This can be worked around by converting to rgb24 first (which is exactly why this bug is bizarre, since the two should be practically identical.)
(There is also the BT601/BT709 conversion thing, but that's not a bug, just something need to be taken care of.)
[1] https://trac.ffmpeg.org/ticket/979
Edit: small correction: I said PNG before, but it's actually BMPs that are usually in bgr24.
Someone could make a million dollars by making a blog that just writes about ffmpeg incantations for use-cases like this.
You can try Xfade filter, hope oneday I can write opengl glsl effect in ffmpeg.
It also appears to be the only game in town. Many commercial offerings are really just veneers over custom ffmpeg implementations.
Tuning it is also pretty crazy. Some folks can make entire careers out of just tuning ffmpeg.
I think the biggest issue with video software (besides it being difficult and performance-intensive), is the prevalence of a lot of old, highly-enforceable patents.
Video has been around a while, and companies like Ampex patented a heck of a lot of stuff that can easily be applied to current video.
ffmpeg actually has a couple of build configs that are designed to remove coercive-licensed components.
I'm not so happy about that, but it's the world we live in.
I do have a project that I was playing around with (and will get back to, sooner or later), where I made a simple MacOS wrapper for ffmpeg:
https://github.com/RiftValleySoftware/RVS_MediaServer
I wrote about that, here:
FFMPEG is amazing. I don't think that it's the only game in town, but there it's the best by far.
I was looking at getting the sound wave graph for a piece of audio a while ago, and not only was FFmpeg the only option I found to be able to do it, it was amazingly fast and also free.
- You want to code it all again using an API that doesn't expect to get its input from a blocking read() function.
- ...
I think the main reason there isn't any alternative is that it supports soooo many formats that the task seems impossible to anybody thinking about it.
In which real world situation/scenario is this a problem? It is hard to think of one, but I am probably missing something?
In any case, if that was a real show-stopper, it would probably be much wiser to go with a fork that would modify that one thing, instead of re-writing the whole project.
a) you're probably going to want to control the number of simultaneous streams to a low enough number that you could just fork
b) the responsible thing to do when decoding streams with ffmpeg is to disable all formats except your whitelisted format, but still sandbox the heck out of it, because there's been a lot of CVEs where a crafted input allows remote code execution
Sandboxing is going to be much more complete if the ffmpeg process is only dealing with one input fd, one output fd (maybe an error reportint fd), and no network or filesystem access --- you don't want a decoder error to influence media you're encoding/decoding for another user.
https://github.com/facebookarchive/Flicks
via
https://gizmodo.com/facebook-invented-a-new-unit-of-time-182...
You can install an FFMPEG plugin for Audacity if you need broader support of audio formats (either import or export).
But that kind of visualization isn't what I'd call "basic" functionality, since it's functionally useless for the vast majority of audio applications.
If you're looking for audio production work, there's Ardour, although I haven't used it myself. http://ardour.org/
https://gstreamer.freedesktop.org/documentation/tools/index....
Example, if you have gstreamer libs installed:
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
I've found this helpful to prototype with gst-launch-1.0 and then pull into a separate program down the road. I found it to be pretty hairy trying to create and link all the individual elements manually in complex pipelines.
https://gstreamer.freedesktop.org/documentation/gstreamer/gs...
It’s not perfect but it’s way easier to use for audio stuff than FFmpeg is. I have a bunch of scripts I reuse that do basic stuff like high-pass, normalize, automatically trim audio files, add fade-in or fade-out, downmix to mono, and then resample / dither to the right depth and size.
It also will spit out spectrograms.
Generally when I need to record a ton of sound clips, I chop the audio up and rename it in a GUI editor similar to Audacity, and then do all the processing in SoX. I might also do a bunch of work in a DAW beforehand.
From what I recall, it only worked on wav files back in the day, but now it supports OGG. But a lot has changed in even 5 years - does it even support MP3, as patents expired since then?
Sure, there hasn’t been a new release since 2015… but would that be necessary? It’s not missing any features I want.
It depends on your build, but on my system it supports: 8svx aif aifc aiff aiffc al amb amr-nb amr-wb anb au avr awb caf cdda cdr cvs cvsd cvu dat dvms f32 f4 f64 f8 fap flac fssd gsm gsrt hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud mp2 mp3 nist ogg paf prc pvf raw s1 s16 s2 s24 s3 s32 s4 s8 sb sd2 sds sf sl sln smp snd sndfile sndr sndt sou sox sph sw txw u1 u16 u2 u24 u3 u32 u4 u8 ub ul uw vms voc vorbis vox w64 wav wavpcm wv wve xa xi. You can check your own with `sox --help`.
On Debian mp3 support requires `libsox-fmt-mp3`.
100% agree.
The man pages are chock full of examples too, which is great because the tool does a lot. Some of the examples are really interesting too, such as the delay effect showing how to synthesise a guitar chord.
I use an audio player built largely around sox¹, and it allows you to take advantage of the power of sox.
If you personally hear the difference is a completely different subject of course.
ffmpeg is used for the key step (1) ...
Not affiliated with the project, just use it quite a lot.
0: https://kokkinizita.linuxaudio.org/linuxaudio/jaaa-pict.html
1: https://kokkinizita.linuxaudio.org/linuxaudio/japa-pict.html
For things like trimming and concatenating videos, one thing that surprised me was that it was slower than using a tool like ScreenFlow. Note, we're talking about hundreds of gigabytes worth of 4K videos.
slower = When I say slower, I mean, if I manually performed the same operation in a professional video editing tool like ScreenFlow, the time it took ScreenFlow to export a video was quicker than the time it took FFmpeg to finish executing the command.
Interestingly, there seems to be a fast and a slow way to do things in FFmpeg [2]. The slow way is free of quirks, whereas the fast way introduces something unexpected to the video, like a half a second of a black screen with audio continue playing like normal.
I'm still curious as to how a tool like ScreenFlow can achieve faster trimming/concatenation/subtitle overlaying, than FFmpeg. I suspect if I read their documentation and do some more research, I'll discover a more optimal way of ordering the various flags on the command line which can speed up the execution, while preserving accuracy.
[1] https://github.com/umaar/video-everyday
[2] https://superuser.com/questions/499380/accurate-cutting-of-v...
Tangent: you reminded me of one of the coolest auditory experiences I've ever had. Roughly one-and-a-half decades ago I attended a public lecture by Olivier Nijs, a sound design guy from my region[0], about how he built an automated set-up from an old desktop to record one second of 7:00 in the morning every day. Then he manually cut together one whole year. The amazing thing about it was that after a few seconds the long-term trends really started to become noticeable. The changing sounds of birds, people and other living things. How rains in spring were somehow just a little different than the rains in summer or autumn. It was really, really amazing.
(the artist himself wasn't that impressed with his own work - perhaps he saw someone else do it before and didn't feel like showing off with something unoriginal or something?)
EDIT: This is six in the morning, maybe I heard that version https://soundcloud.com/oliviernijs/perdag600
The reason here is the the "fast way" and the "slow way" work very differently behind the scenes.
The "fast way" looks only needs to look at the container, the bits of metadata that tell a player which bits of data need to be given to the decoder at which time. It can just take a blob of data and stick it in another blob of data without looking at the contents.
The "slow way" actually decodes the frames, that is, it takes the blobs of compressed data and turns them into actual pixels, which especially in the case of 4K video, is very slow.
The reason the "fast way" might be less accurate is that the frame you're asking for might not be possible to obtain without decoding the video. Modern video codecs have different kinds of frames and some frames depend on the frames before or after them. If you took such a frame and just jammed it into another video, things would break, because the other frames it refers to are missing.
> I'm still curious as to how a tool like ScreenFlow can achieve faster trimming/concatenation/subtitle overlaying, than FFmpeg.
It's likely that they have optimisations that FFmpeg doesn't or cannot have. FFmpeg has a bit of an emphasis of being able to play and handle pretty much anything you throw at it, no matter how broken. It could be that accurate input seeking is difficult while preserving that reliability.
One option that's probably not an option for you but you might consider is encoding your video in an all-intra format. This is fairly standard in the video editing world. All-intra means that all your frames are independent of each other and can be moved around by editing software without decoding anything. Doing this will result in larger files, however.
Will indeed read into the all-intra format.
> The "slow way" actually decodes the frames, that is, it takes the blobs of compressed data and turns them into actual pixels, which especially in the case of 4K video, is very slow.
The "slow way" decodes and re-encodes the frames. Decoding is a little slow. Encoding is very very slow if done at high quality. (And even high quality is still lossy.)
> The reason the "fast way" might be less accurate is that the frame you're asking for might not be possible to obtain without decoding the video.
This is often possible to solve with an .mp4 "edit list". You include more data than is expected to be displayed along with instructions for the player to skip part of it. One obvious caveat is that the person you send the video from can remove the edit list, so the hidden frames shouldn't be anything you want to redact for privacy.
The reason it often fails is that ffmpeg can do so many things that any time you are using some curious combination of flag A, B and C is likely that no one else has ever done that and there are some side effects ;)
Anyway, some of it can be avoided by learning how containers en codecs work, what I-frames are and all the other nitty gritty details of the world of video where there is so much to learn!
Here’s a great intro to get started for anyone who got curious: https://github.com/leandromoreira/digital_video_introduction
It oftentimes requires so much understanding of how things actually work, and has too little to offer in the way of abstracting those things away.
ffmpeg -ss 00:01:00 -i in.mp4 -t 00:00:15 -c copy out.mp4
I'm really no expert so I just keep a few of those commands around... You don't need a deep understanding of video streams, etc. just to use ffmpeg.I don’t know if it’s their goal, but I’d love a more user friendly set of command line arguments.
Compare the CLI and python invocation in this example: https://github.com/kkroening/ffmpeg-python#complex-filter-gr...
For some subsets of ffmpeg functionality (e.g. creating webm videos from other sources) there also are dedicated GUIs.
Reading the command line I could barely tell what ffmpeg was doing. This also could mean the command line is badly designed.
I liked using WinFF a time ago for simple conversion jobs though where I didn't care too much about tweaking all the knobs.
EDIT: From Big Matt's blog:
> Unfortunately I lost the WinFf.org domain. I was broke but I don't think it's that important after all these many years. You can still go to github, video help, and others.
convert image.png image.jpg
Does what it's suppose to and it's as simple as possible. Sure, you can get really fancy with resizing proportions but easy stuff should be easy. ffmpeg -i something.avi something.mp4
works as well, but there's just _so_ many more options inherently involved in converting a video: most inputs and outputs will be at least 2 tracks, so that's 2 codecs, and the majority of containers used now (MP4, MKV, etc.) support all sorts of codecs, so while ffmpeg will "guess" what you want just like ImageMagick does in your short example, the chances that it guesses right are a lot lower just on the basic level of what format you wanted your output to be. But it's not exactly ffmpeg's fault.https://github.com/swl-x/MystiQ is what comes to mind
Perhaps this is slightly off-topic, but my dream is an interface that combines the best of both worlds.
Kind of an automated GUI-builder for command-line tools, that analyzes the combinations of options used most, breaks them down into workflows with options (that can be manually named), and you can thus execute one-off commands easily and quickly without having to hunt through man pages, but still export the command as a command-line incantation for reuse, to use in a script, etc.
Seems like you'd need a universal CLI tool usage traverser and parser to figure out what's possible. Likely this would produce a decision tree of sorts with different modes and options excluding or including new options. We'd need a way to show all this, maybe nested tabs for modes and check boxes and other inputs at each appropriate level.
Layer on this a way to optimize for the most common cases like you said. Further, if this becomes popular, CLI tools could emit some sort of standard description language that would optionally customize the GUI. The GUI's output should be both the text command it constructed and the ability to run that command directly.
More future steps would be a way to reason about multiple commands, pipes, and other combinators.
Adding this to my side projects backlog. Thanks for the idea!
I (selfishly) hope you build it, since I don't have the time!
A tool to automatically parse `man` pages or help prompts from tools would be a dream come true, basically.
Apart from the possible commands, it may be useful for the GUI to also show some kind of state, for example filesize (akin to invoking `ls` before `ffmpeg`, as you would normally do on the CLI).
Done with the right abstractions, command combinations should come almost for free.
[0] https://magit.vc/ [1] https://en.wikipedia.org/wiki/Dired
Here's the demo: https://jonbo.github.io/project/simply/
There's also a small ffmpeg example. (If you click the fetch button, on the demo.) The schema "recipes" for it are just a basic JSON format and can be seen here https://gist.github.com/jonbo/c4067cd18e5fa687e896b2358aaf9e... and https://github.com/jonbo/simply.recipes/blob/master/docs/REA...
I never did publish the (non-bundled) source code for the demo, since it was done in a hurry (spaghetti), but I might if there's interest.
Maybe this will inspire somebody else to build something better!
ffmpeg mymovie.mov -w 720 mymovie.mp4
Should do what you expectHowever, I'll never forget things like "tar -zxvf", "ffmpeg -i vid.mp4 image-%04d.png" and "convert image-*.png +dither anim.gif".
If all you can say is how much time there's been, why isn't this just 4.2.4?
I suspect there are major features and improvements buried in the 30 pages of commits.
https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/refs/heads/rel...
https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/Changelo...
- LEGO Racers ALP (.tun & .pcm) demuxer
I think I will dig through to figure out what that actually means later.Seems like the big feature is Vulkan support?
ffmpeg -i example.mov -r 15 example.gif
Voilà, an animated gif. Quality is atrocious but it gets the message across, plus the filesize is not too big.Basic syntax is
ffmpeg -i video -filter_complex "[0]split[vid][pal];[pal]palettegen[pal];[vid][pal]paletteuse" out.gif
ffmpeg 4.0 and later will automatically insert fifo buffers for the main video while one copy is analyzed to generate the palette.I highly recommend anyone struggling to utilize it to write wrapper scripts around it so you only need to figure out things once. Here are some things I've done with it by that approach:
* Extracting any embedded subtitle files from MKVs. Nice if I want to search them or make changes.
* Back when GIFs were more popular, I converted any that were over 3MB to video to save space. If the output wasn't small enough, it would do a second pass with different settings to get it more compact. Not needed that much these days.
* "Barcodes" for videos, that is, it takes every second converted to a vertical sliver and combined you get an overview of how the average color of the film changes through its duration.
* A tool for creating video excerpts that lets me specify a start time and end time in more flexible timestamp formatting, and other things like a simple parameter for the output width.[1] It also allowed specifying a target filesize and did the math so the right bitrate would be chosen. I even include metadata so I know which original file it was made from and the parameters specified.
* Thumbnail previews. A lot of file sharing sites will include a file that includes some timestamped screenshots in a grid with encoding information at the top. This is good for movies so you see a high-level overview. The best part about doing this myself is that I could make it highly configurable, like choosing exactly how many images I want, the interval, whether I want timestamps, etc.
Note, for some of these, I also needed ImageMagick.
Also, when compiled with the right flags and libraries, FFmpeg has some really neat features: things like embedding subtitles, stabilizing video, hiding logos, etc. I recommend looking into the filters.
Thank you for all the manpower that goes into the project!
[0]: Two other ones that are also powerful are ImageMagick and Pandoc.
[1]: I initially wrote this in Bash, but later converted the code to Python to better handle command line arguments and allow things like using config files.
For anyone that hates compiling ffmpeg from source, John Van Sickle does an amazing job of doing the work for you by making binaries publicly available for each version: https://johnvansickle.com/ffmpeg/
https://gist.github.com/bsenftner/ba3d493fa36b0b201ffd995e8c...
This effectively adds the ability to monitor the IP stream for unexpected termination.
The current implementation of av_read_frame() will hang if, for example, a human trips over a camera's cables and the stream abruptly terminates. Without modification to the API, this change to av_read_frame() calls the avformat interrupt callback each loop through av_read_frame()'s reading of packets. All the callback needs to do is look at the time, and signal error if the time between callbacks exceeds something reasonable.
I am not sure why, but this change was not accepted by the ffmpeg developers. I find it essential for working with IP video and IP video cameras.
I remember using it to encode MPEG-2 DV footage to FLV (yes, flash video) to live-stream footage captured over firewire from early prosumer HD cameras :) It's always been a solid video swiss-army knife!
Though still, I can't even imagine attempting this test without FFmpeg in the first place. It is available directly in Termux on Android.
I've been working on a web-based video editor for app features: https://glitter.now.sh/ and i've had tons of fun tweaking FFmpeg.
My only wish would be that the documentation would include video samples for the example commands (I'd love to help with this).
Feel free to take a look at the (research quality at best) code: https://github.com/eqy/autotosis
If I understand the pricing, it's free for up to 50 files in each folder/hub; for more it's $3.50, which you donate 100% to an anti-malaria charity!
You can build your own (without 50 videos limitation) with just `npm install` and `npm run electron:windows` (or `mac`, or `linux`).
If you choose to buy, it's $3.50 minimum - you can pay more. $3.50 of every purchase goes to Against Malaria Foundation
Cheers!
https://web.archive.org/web/20010218084709/http://ffmpeg.sou...
Fascinating to see such an important and sophisticated product come from these modest beginnings.
> support for the ZeroMQ Message Transport Protocol (ZMTP)
This is fascinating. I've never heard of zmq being exposed in a public API. Cool idea.
Also I hope to see pure GPU transcoding sometime. H264 to h265 transcodes in pure GPU space are Uber fast, but so far only done by other software.
FFmpeg has had pure GPU transcoding for quite some time. See https://trac.ffmpeg.org/wiki/HWAccelIntro
It even has a GPU-based scaler for NVIDIA.
Apple and Google don’t even fully document their products anymore.
In the process I was reminded of how important Intellectual Property is in our field.
I dowloaded a video from youtube [0] and learned that the video is in a WEBM container for certain types of video compression formats (VP8/9 + another one) as well as vorbis/opus audio. It turns out that to get the best quality on the Apple TV, I should encode to HEVC (H265) video and I guess aac audio.
There’s some sort of history behind this divide. A pain in the neck for people who want to toy around with video, but huge decisions for these companies in choosing the formats they use to move these bits around.
So I can use ffmpeg to re-encode into the new format, and I can play it on my apple devices if the file is local, but I can’t shoot it via UDP to the TV. When VLC (app on apple tv) is listening on a port for UDP I only get choppy audio:
Doing this on the sending side doesn’t seem to work:
ffmpeg \
-re -i video_stream_ready.mp4 \
-c:v copy -c:a copy \
-f mpegts udp:$APPLETVIP:2300
has anyone toyed around with shooting pre-generated (or even real time generated) video at their TV this way?Being stuck at home makes me want to make something artsy that could be fun to look at through the day.
If anyone has experience with FFmpeg, I'd greatly appreciate if you could take a look! https://github.com/telefuel/video_player_testbed/issues/1
It's the only way I can get mkv converted for playback in browsers. I believe that browsers don't support mkv/aac natively because of licensing but I would be interested if anyone has a different solution for browser playback.
ffmpeg -rtbufsize 2147M -f x11grab -video_size 1920x1080 -i :0.0 -r 30 -preset ultrafast -vcodec h264 output.mp4https://bugs.archlinux.org/task/67020?project=1&string=chrom...
NDI is super useful for low-latency local network streaming
Avidemux is nice, but currently I only see vinci as an alternative to premiere.
tldr: if you're on Windows, use Chocolatey or Scoop. For macOS, use homebrew.
Copy the video page URL to your clipboard and just type
yd - download the video. Works on most popular sites with video.
yda - download just audio, best available
ypl - makes a subfolder with the whole playlist in it (Copy the playlist URL)
yc - downloads every video on the channel (Copy the channel URL)
yd () { youtube-dl "$(pbpaste)" ; }
yda () { youtube-dl -f bestaudio "$(pbpaste)" ; }
ypl () { youtube-dl -i -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' "$(pbpaste)" ; }
yc () { youtube-dl -i -o '%(channel)s/%(title)s.%(ext)s' "$(pbpaste)" ; }
I use especially yd and ypl constantly. Sites where youtube-dl doesn't work, this usually does: Get the master m3u8 or an mp4 link from the page using Developer tools->Network[1], copy link to clipboard, andvd myfile - downloads the video as myfile.mp4
vd () { youtube-dl -o "$1.mp4" "$(pbpaste)" ; }
[0] Save them in your .bash_profile or equivalent on your machine.[1] i.e. with Network tab open, refresh page and start video playing.