O7: I had a similar issue, but I found a tip on one of the multitude of YouTube videos that eliminates the need for a level shifter. Use a sacrificial LED from your strip or string:

I haven't tried a longer data cable yet, but I am driving 251 LEDs (four 50-led strings, plus one sacrificial led).
On the current draw. Measure it. I am using a 12V, 15A PSU, and I put an Ammeter in-line with the + wire to the LEDs. On my five WS2811 strings of 50 LEDs (251 total), all white and full brightness is only drawing a bit under 2 Amps. (Likely because it is a 12 Vole string. double the voltage, half the current.)
The "rule of thumb" of 60mA per LED segment would say 12 Amps for white at a brightness of 255, but to my surprise, the measured current draw was much less. More to my surprise, White was not higher, as expected.
Here are my results:
Here is my test sketch. I am still learning how to use the fastLED.h library, so if anyone sees a problem with my code, I would appreciate feedback.
/*
FirstLight.ino
(modified)
*/
#include <FastLED.h>
#define NUM_LEDS 201
#define DATA_PIN D1
#define BRIGHTNESS 48
#define LED_TYPE WS2811
#define COLOR_ORDER RGB
#define FRAMES_PER_SECOND 120
// Set up the block of memory that will be used for storing and manipulating the led data:
// This is an array of leds. One item for each led in your strip.
CRGB leds[NUM_LEDS];
#define sceneDelay 2000 // Delay between scenes
#define pixelDelay 10 // Delay between pixels
// =========================== setup() ===========================
// Set up the leds and tell the controller about them
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println(F("Ready"));
// sanity check delay - allows reprogramming if accidently blowing power w/leds
delay(2000);
// This tells the library that there's a strand of WS2811's on pin DATA_PIN,
// and those leds will use the led array leds, and there are NUM_LEDS of them.
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
// Start with all LEDs off.
fill_solid(leds, NUM_LEDS, CRGB::Black); // All OFF
}
// =================== loop() ===================
void loop() {
fill_solid( leds, NUM_LEDS, CRGB::Red);
FastLED.show();
delay(sceneDelay);
fill_solid( leds, NUM_LEDS, CRGB::Green);
FastLED.show();
delay(sceneDelay);
fill_solid( leds, NUM_LEDS, CRGB::Blue);
FastLED.show();
delay(sceneDelay);
fill_solid( leds, NUM_LEDS, CRGB::White);
FastLED.show();
delay(sceneDelay);
fill_solid( leds, NUM_LEDS, CRGB::Black);
FastLED.show();
delay(sceneDelay);
}